Устройства ввода/вывода делятся на два типа: блок-ориентированные и байт-ориентированные устройства. Блок-ориентированные устройства хранят информацию в блоках фиксированного размера, каждый из которых имеет свой собственный адрес. Самое распространенное блок-ориентированное устройство – диск.
Байт-ориентированные(символьные) устройства не адресуемы и не позволяют производить операцию поиска, они генерируют или потребляют последовательность
байтов. Примерами являются терминалы, строчные принтеры, сетевые адаптеры. Внешнее устройство обычно состоит из механического и электронного компонента. Электронный компонент называется контроллером устройства или адаптером. Механический компонент представляет собственно устройство. Операционная система обычно имеет дело не с устройством, а с контроллером. Контроллер, как правило, выполняет простые функции, например, преобразует поток бит в блоки, состоящие из байт, и осуществляет контроль и исправление ошибок. Устройства обычно принято разделять по преобладающему типу интерфейса на следующие виды:
• символьные (клавиатура, модем, терминал и т. п.);
• блочные (магнитные и оптические диски и ленты, и т. д.);
• сетевые (сетевые карты);
• все остальные (таймеры, графические дисплеи, телевизионные устройства,
видеокамеры и т. п.);
Мы выделили 3 метода управления вводом/выводом:
- Метод программного управления
- Метод прерываний
- Метод прямого доступа к памяти.
Для обеспечения масштабируемости системы необходима унификация интерфейсов
периферийных устройств. Удобно так же унифицировать их систему именования.
В UNIX подобных системах доступ к устройствам осуществляется драйверами логического уровня через узлы каталога /dev. В этом каталоге находятся файлы устройств с символьным и блочным доступом. Через них обеспечивается доступ к пространству имен устройств ядра ОС.