Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[Проектирование операционных систем] - Курс лек....doc
Скачиваний:
22
Добавлен:
14.11.2018
Размер:
347.14 Кб
Скачать

Пример реализации ввода/вывода в системе unix

Устройства ввода/вывода появляются в файловой системе UNIX в виде специальных файлов. Тем самым пользователю обеспечивается унифицированный доступ как к файлам, так и к любым устройствам ввода/вывода. Эти файлы не содержат данных, но в их имени зашифрован способ подключения устройства ввода/вывода к системе. При обращении программы к специальному файлу UNIX перехватывает запрос и направляет его на адресуемое устройство ввода/вывода. Таким образом, работа с файлами и устройствами ввода/вывода осуществляется одним и тем же набором системных вызовов. Другой особенностью системы ввода/вывода в UNIX является синхронность. Каждый программный процесс требующий ввода приостанавливается до завершения выполнения операции в специальном файле. При выводе, процесс приостанавливается до помещения выводимых данных в буфер. Специальные файлы могут встречаться в любом месте файловой системе UNIX, но обычно располагаются в каталоге /dev.

Существует два вида спец.файлов: символьные и блочные.

Символьные устройства ввода/вывода работают без буферизации.

Блочные устройства выполняют ввод/вывод блока размером 512 байт с обязательной буферизацией.

В состав подсистемы ввода/вывода UNIX входит некоторое количество драйверов, а так же набор специальных таблиц для логического подключения ядра к драйверам.

Драйвер может обслуживать несколько однотипных устройств ввода/вывода. Идентификация конкретного устройства ввода/вывода осуществляется при помощи младшего значения (minor number) а группа устройств обслуживаемых драйвером задается старшим значением (major number) оба эти значения хранятся на месте поля, содержащего размер файла у обычных файлов.

Каждый драйвер состоит из двух частей. Первая часть – набор программ для выполнению действий открытия, закрытия, чтения и записи фалов. Вторая часть – модуль обработки прерывания. В системе существует две таблицы для логической коммутации устройств ввода/вывода (bdevsw и cdevsw). Каждый элемент этих таблиц содержит ссылки на программы описываемые драйвером. Номер элемента в таблице – major number устройства.

Когда UNIX обнаруживает обращение программы к специальному файлу – выполняются следующие действия:

  • Определяется драйвер исходя из номера устройства.

  • Для вызова драйвера готовится список параметров.

  • Номер устройства в группе

  • Символьное имя специального файла.

  • Вызывается программа драйвера соответствующая запрошенному действию.

Пример реализации ввода/вывода в ос vm

В операционной системе VM программы выполнения ввода/вывода, обработки прерываний, обработки и регистрации сбоев находятся в ядре, и не могут быть модифицированы пользователем. Конфигурация системы ввода/вывода задается системным программистом, и на ее основе в ядре строятся управляющие блоки (структуры), описывающие компоненты системы ввода/вывода (каналы ввода/вывода, устройства управления устройствами и сами устройства). Для каналов строятся блоки типа RCHBLOK, для устройства управления RCUBLOCK и для устройства ввода/вывода RDEVBLK. R – означает, что относится к реальному устройству (аналогично V-блоки – для виртуальных устройств).