Скачиваний:
22
Добавлен:
09.05.2014
Размер:
354.82 Кб
Скачать

Ibm 370 имеется инструкция "Start I/o" (Начать ввод-вывод), которая иниции-

рует операцию ввода-вывода, связанную с устройством. Способ связи драйвера с

периферийными устройствами незаметен для пользователя.

Поскольку интерфейс между драйверами устройств и соответствующими аппа-

ратными средствами является машинно-зависимым, на этом уровне не существует

стандартных интерфейсов. Как в случае вводавывода с отображением в памяти,

так и в случае программируемого ввода-вывода драйвер может посылать на уст-

ройство управляющие последовательности с целью установления режима прямого

доступа в память (ПДП) для устройства. Система позволяет осуществлять массо-

вую передачу данных между устройством и памятью в режиме ПДП параллельно с

работой центрального процессора, при этом устройство прерывает работу систе-

мы по завершении передачи данных. Драйвер организует управление виртуальной

памятью таким образом, чтобы ячейки памяти с их действительными номерами ис-

пользовались для ПДП.

Быстродействующие устройства могут иногда передавать данные непосредст-

венно в адресное пространство задачи, без вмешательства буфера ядра. В ре-

зультате повышается скорость передачи данных, поскольку при этом производит-

ся на одну операцию копирования меньше, и, кроме того, объем данных, переда-

ваемых за одну операцию, не ограничивается размером буферов ядра. Драйверы,

осуществляющие такую передачу данных без "обработки", обычно используют

блочный интерфейс для процедур посимвольного чтения и записи, если у них

имеется двойник блочного типа.

10.1.2.4 Стратегический интерфейс

Ядро использует стратегический интерфейс для передачи данных между бу-

ферным кешем и устройством, хотя, как уже говорилось ранее, процедуры чтения

и записи для устройств посимвольного вводавывода иногда пользуются процеду-

рой strategy (их двойника блочного типа) для непосредственной передачи дан-

ных между устройством и адресным пространством задачи. Процедура strategy

может управлять очередностью выполнения заданий на ввод-вывод, связанный с

устройством, или выполнять более сложные действия по планированию выполнения

подобных заданий. Драйверы в состоянии привязывать передачу данных к одному

физическому адресу или ко многим. Ядро передает адрес заголовка буфера стра-

тегической процедуре драйвера; в заголовке содержится список адресов (стра-

ниц памяти) и размеры данных, передаваемых на или с устройства. Аналогичное

действие имеет место при работе механизма свопинга, описанного в главе 9.

При работе с буферным кешем ядро передает данные с одного адреса; во время

свопинга ядро передает данные, расположенные по нескольким адресам (страницы

памяти). Если данные копируются из или в адресное пространство задачи, драй-

вер должен блокировать процесс (или по крайней мере, соответствующие страни-

цы) в памяти до завершения передачи данных.

Например, после монтирования файловой системы ядро идентифицирует каждый

файл в файловой системе по номеру устройства и номеру индекса. В номере уст-

ройства закодированы его старший и младший номера. Когда ядро обращается к

блоку, который принадлежит файлу, оно копирует номер устройства и номер бло-

ка в заголовок буфера, как уже говорилось ранее в главе 3. Обращения к дис-

299

ку, использующие алгоритмы работы с буферным кешем (например, bread или

bwrite), инициируют выполнение стратегической процедуры, определяемой стар-

шим номером устройства. Стратегическая процедура использует значения полей

младшего номера и номера блока из заголовка буфера для идентификации места

расположения данных на устройстве, а адрес буфера - для идентификации места

назначения передаваемых данных. Точно так же, когда процесс обращается к ус-

тройству ввода-вывода блоками непосредственно (например, открывая устройство

и читая или записывая на него), он использует алгоритмы работы с буферным

кешем, и интерфейс при этом функционирует вышеописанным образом.

Соседние файлы в папке материалы к собеседованию