Архитектура современных операционных систем
63 2.5. Управление вводом/выводом Управление вводом/выводом осуществляется в Unix с помощью набора драйверов. Основная функция драйвера – это изоляция остального кода систе- мы от особенностей аппаратуры. Устройства подразделяются на байт - и блок-ориентированные. Для каж- дого из этих типов ядро поддерживает свою таблицу точек входа в процедуры драйвера: cdevsw – для байт-ориентированных; bdevsw – для блок-ориентированных. Для каждого устройства в соответствующей таблице используется одна строчка, которая задает адреса точек входа в процедуры соответствующего драйвера. Индексом строки в этих таблицах является старший номер устрой- ства. Пример фрагмента таблицы cdevsw, приведен в табл. 2.7. Табл. 2.7. Устройство Функции драйвера Open Close Read Write IOctl null Память Клавиатура ТТY Принтер null null k_open tty_open lp_open null null k_close tty_close lp_close null m_read k_read tty_read null null m_write null tty_write lp_write null null k_ioctl tty_ioctl lp_ioctl Здесь: Ioctl – функция управления; TTY – терминал; Для блок-ориентированных устройств определен другой набор функций: оpen, close, strategy - выполнение операции над данным устройством, print – вы- вод сообщения об ошибках.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy