[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Интерфейс ввода/вывода

Диаграмма показывает отношения между вашей прикладной программой,
ядром системы и портом ввода/вывода.
Терминалы присоединяются к компьютеру через аппаратный интерфейс
ввода/вывода, называемый портом. Порты, сделанные различными
изготовителями, устроены по разному, но они достигают одного и того же
результата. Эти порты обычно конфигурируются или программируются, так
что они могут работать с различными терминалами и на различных
скоростях.
Прикладные программы не имеют прямого доступа к портам ввода/вывода.
Программный интерфейс с портами предоставляется модулем STREAMS,
который работает через драйверы устройств. Драйвер устройства - это
набор аппаратно-зависимых функций в ядре ОС UNIX, которые управляют
портами и осуществляют доступ к ним. Доступ к модулю STREAMS
происходит через специальный байт-ориентированный файл терминала.
Имена этих файлов находятся в директории, обычно /dev или /dev/term, и
доступ к ним может осуществляться так же, как к обычным файлам. Это
обеспечивает последовательную и однородную организацию программного
интерфейса со всеми физическими устройствами. Ввод и вывод на терминал
осуществляется чтением и записью в соответствующий специальный файл.
Модуль STREAMS предоставляет различные сервисы. В первую очередь, он
обеспечивает однородный доступ к различным устройствам. С каждым
устройством ассоциированы флаги, которые могут изменяться с помощью
функций termios(2) или ioctl(2). Эти флаги используются для управления
аппаратным и программным интерфейсом. Кроме того, модуль STREAMS
содержит входные и выходные очереди символов, которые буферизуют
данные и используются для требуемой пред- и постобработки данных. Эти
очереди более подробно изображены на следующей иллюстрации.