Системные процедуры. В общем случае часть программного обеспечения ввода-вывода входит в состав ОС, часть содержится в стандартных библиотеках, связываемых с пользовательскими программами.
Подсистема спулинга (spooling). Спулинг - это способ работы с выделенными (не разделяемыми между процессами) устройствами в мультипрограммной системе. Типичное устройство, требующее спулинга - принтер.
Если просто позволить каждому пользовательскому процессу открыть специальный файл, связанный с принтером, то принтер может быть монополизирован процессом на произвольное время, что недопустимо. Поэтому создается специальный процесс – монитор, получающий исключительные права на использование устройства, и специальный каталог – каталог спулинга. Чтобы напечатать файл, пользовательский процесс помещает его в каталог спулинга. Процесс-монитор по очереди распечатывает все файлы, содержащиеся в каталоге спулинга.
Драйверы устройств
Программа, которая общается с контроллером устройства ввода-вывода, отдает ему команды и получает ответы, называется драйвером устройства.
Каждый производитель контроллеров должен поставлять драйверы для поддерживаемых им операционных систем. Для того, чтобы получить возможность использовать драйвер, его нужно установить в операционную систему так, чтобы он мог работать в режиме ядра.
Теоретически драйверы могут работать вне ядра, но такую возможность поддерживают всего несколько существующих систем, так как для этого требуется, чтобы драйвер в пространстве пользователя имел доступ к устройству неким контролируемым способом - очень редко поддерживаемое свойство.
Три способа установки драйвера в ядро.
● Первый способзаключается в том, чтобы заново скомпоновать ядро вместе с новым драйвером и затем перезагрузить систему. Так работает множество систем UNIX.
● Второй способ: создать запись во входящем в операционную систему файле, говорящую о том, что требуется драйвер, и затем перезагрузить систему. Во время начальной загрузки операционная система сама находит нужные драйверы и загружает их. Так работает система Windows.
● Третий способ: операционная система может принимать новые драйверы, не прерывая работы, и оперативно устанавливать их, не нуждаясь при этом в перезагрузке. Этот способ редко используется, но сейчас он становится все более и более распространенным. Такие съемные устройства, как шины USB и IEEE 1394, всегда нуждаются в динамически загружаемых драйверах.