Небуферизированный ввод-вывод, представляющий собой простой DMA-обмен между устройством и областью памяти процесса, всегда оказывается самым быстрым методом выполнения ввода-вывода. Процесс, выполняющий Небуферизированный ввод-вывод, блокируется в основной памяти и не может быть выгруженным. Тем самым снижается возможность выполнения выгрузки процесса на диск и, как следствие, уменьшается общая производительность системы. Кроме того, устройство ввода-вывода оказывается связанным с процессом на все время выполнения данных, при этом оно недоступно для других процессов.
Устройства UNIX
UNIX распознает 5 типов устройств.
• Дисководы.
• Лентопротяжные устройства.
• Терминалы.
• Линии связи.
• Принтеры.
В табл. 11.5 показаны типы ввода-вывода, соответствующие каждому виду устройств. Широко используемые UNIX дисководы являются блочно-ориентированными устройствами и обладают высокой пропускной способностью. Соответственно, ввод-вывод для этих устройств обычно либо Небуферизированный, либо осуществляется через буфер кэша. Лентопротяжные устройства функционально подобны дисководам и используют похожие схемы ввода-вывода.
Таблица 11.5. Устройства ввоття-вывопя UNIX
Небуферизированный ввод-вывод Буфер кэша Очередь символов Дисковод х х
Лентопротяжное х х
устройство
Терминалы х
Линии связи х
Принтеры . х х
Поскольку обмен информацией у терминалов относительно медленный, они обычно используют очередь символов. Линии связи также требуют последовательной передачи байтов данных и лучше всего обрабатываются с использованием очередей символов. И, наконец, тип ввода-вывода для принтера, вообще говоря, будет зависеть от его скорости. Медленнодействующие принтеры обычно используют очередь символов, в то время как быстродействующий принтер может воспользоваться небуферизированным вводом-выводом. Для скоростных принтеров в принципе возможно использование кэша. Однако в силу того что данные, поступающие на принтер, никогда не используются повторно, в использовании кэша нет никакого смысла.