Основные системные таблицы ввода-вывода

Для управления всеми операциями ввода-вывода и отслеживания состояния всех ресурсов, занятых в обмене данными, операционная система должна иметь соот­ветствующие информационные структуры. Эти информационные структуры, преж­де всего, призваны отображать следующую информацию: - состав устройств ввода-вывода и способы их подключения;

- аппаратные ресурсы, закрепленные за имеющимися в системе устройствами ввода-вывода;

- логические (символьные) имена устройств ввода-вывода, используя которые
вычислительные процессы могут запрашивать те или иные операции ввода-
вывода;

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

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

- данные о текущем процессе, который работает с данным устройством;

- адреса тех областей памяти, которые содержат данные, собственно и участвую­
щие в операциях ввода-вывода (получаемые при операциях ввода данных и
выводимые на устройство при операциях, вывода данных).

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

Каждая операционная система ведет свои таблицы ввода-вывода, их состав (и ко­личество, и назначение каждой таблицы) может сильно отличаться. В некоторых операционных системах вместо таблиц создаются списки, хотя использование ста­тических структур данных для организации ввода-вывода, как правило, приводит к более высокому быстродействию. Здесь очень трудно вычленить общие состав­ляющие, тем более что для современных операционных систем подробной доку­ментации на эту тему крайне мало, разве что воспользоваться материалами ныне устаревших ОС. Тем не менее попытаемся это сделать, опираясь на идеи семей­ства простых, но эффективных операционных систем реального времени, разрабо­танных фирмой Hewlett Packard для своих мини-ЭВМ.

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

Основные системные таблицы ввода-вывода_______________________________ 139

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

Первая таблица (или список) содержит информацию обо всех устройствах ввода-вывода, подключенных к вычислительной системе. Назовем ее условно таблицей оборудования (equipment table), а каждый элемент этой таблицы пусть называется UCB (Unit Control Block — блок управления устройством ввода-вывода). Каждый элемент UCB таблицы оборудования, как правило, содержит следующую инфор­мацию об устройстве:

- тип устройства, его конкретная модель, символическое имя и характеристики устройства;

- способ подключения устройства (через какой интерфейс, к какому разъему, какие порты и линия запроса прерывания используются и т. д.);

- номер и адрес канала (и подканала), если такие используются для управления устройством;

- информация о драйвере, который должен управлять этим устройством, адреса
секции запуска и секции продолжения драйвера;

- информация о том, используется или нет буферизация при обмене данными с устройством, «имя» (или просто адрес) буфера, если такой выделяется из сис­темной области памяти;

- установка тайм-аута и ячейки для счетчика тайм-аута;
- состояние устройства;

- поле указателя для связи задач, ожидающих устройство; - возможно, множество других сведений.

Поясним перечисленное. Поскольку во многих операционных системах драйверы могут обладать свойством реентерабельности (напомним, это означает, что один и тот же экземпляр драйвера может обеспечить параллельное обслуживание сразу нескольких однотипных устройств), то в элементе UCB должна храниться либо непосредственно сама информация о текущем состоянии устройства и сами пере­менные для реентерабельной обработки, либо указание на место, где такая инфор­мация может быть найдена. Наконец, важнейшим компонентом элемента таблицы оборудования является указатель на дескриптор той задачи, которая в настоящий момент использует данное устройство. Если устройство свободно, то поле указа­теля будет иметь нулевое значение. Если же устройство уже занято и рассматрива­емый указатель не нулевой, то новые запросы к устройству фиксируются посред­ством образования списка из дескрипторов задач, ожидающих данное устройство.

Вторая таблица предназначена для реализации еще одного принципа виртуализа­ции устройств ввода-вывода — принципа независимости от устройства. Желатель­но, чтобы программисту не приходилось учитывать конкретные параметры (и/или возможности) того или иного устройства ввода-вывода, которое установлено (или не установлено) в компьютер. Для него должны быть важными только самые общие возможности, характерные для данного класса устройств ввода-вывода. Например,

140_____________ Глава 5. Управление вводом-выводом в операционных системах

принтер должен уметь выводить (печатать) символы или графические изображе­ния. А накопитель на магнитных дисках — считывать или записывать порцию дан­ных по указанному адресу, то есть в координатах C-H-S (Cylinder-Head-Sector — номера цилиндра, головки и сектора) или по порядковому номеру блока данных. Хотя чаще всего программист и не использует прямую адресацию при работе с магнитными дисками, а работает на уровне файловой системы (см. главу 6). Одна­ко в таком случае уже разработчики системы управления файлами не должны зависеть от того, каких типа и модели накопитель используется в данном компью­тере и кто является его производителем (например, HDD IBM IC35L120AVV207-0, WD1200JB или еще какой-нибудь). Важным должен быть только сам факт су­ществования накопителя, имеющего некоторое количество цилиндров, головок чтения-записи и секторов на дорожке магнитного диска. Упомянутые значения количества цилиндров, головок и секторов должны быть взяты из элемента таб­лицы оборудования. При этом для программиста также не должно иметь зна­чения, каким образом то или иное устройство подключено к вычислительной системе. Поэтому в запросе на ввод-вывод программист указывает именно логи­ческое имя устройства. Действительное устройство, которое сопоставляется вир­туальному (логическому), выбирается супервизором с помощью описываемой таблицы.

Итак, способ подключения устройства, его конкретная модель и соответствующий ей драйвер содержатся в уже рассмотренной таблице оборудования. Но для того чтобы связать некоторое виртуальное устройство, использованное программистом, с системной таблицей, отображающей информацию о том, какое конкретно уст­ройство и каким образом подключено к компьютеру, требуется вторая системная таблица. Назовем ее условно таблицей виртуальных логических устройств (Device Reference Table, DRT). Назначение этой второй таблицы — установление связи между виртуальными (логическими) устройствами и реальными устройствами, описанными посредством первой таблицы (таблицы оборудования). Другими сло­вами, вторая таблица позволяет супервизору перенаправить запрос на ввод-вывод из приложения в те программные модули и структуры данных, которые (или адре­са которых) хранятся в соответствующем элементе первой таблицы. Во многих многопользовательских системах таких таблиц несколько: одна общая и по одной на каждого пользователя, что позволяет строить необходимые связи между логи­ческими устройствами (символьными именами устройств) и реальными физичес­кими устройствами, которые имеются в системе.

Наконец, третья таблица — таблица прерываний — необходима для организации обратной связи между центральной частью и устройствами ввода-вывода. Эта таб­лица указывает для каждого сигнала запроса на прерывание тот элемент UCB, ко­торый сопоставлен данному устройству. Каждое устройство либо имеет свою линию запроса на прерывание, либо разделяет линию запроса на прерывание с другими устройствами, но при этом имеется механизм второго уровня адресации устройств ввода-вывода. Таким образом, таблица прерываний отображает связи между сиг­налами запроса на прерывания и самими устройствами ввода-вывода. Как и сис­темная таблица ввода-вывода, таблица прерываний в явном виде может и не при­сутствовать. Другими словами, можно сразу из основной таблицы прерываний

Основные системные таблицы ввода-вывода_______________________________ 141

компьютера передать управление на программу обработки (драйвер), связанную с элементом UCB. Важно наличие связи между сигналами прерываний и табли­цей оборудования.

В ряде сложных операционных систем, а к ним следует отнести все современные 32-разрядные системы для персональных компьютеров, имеется гораздо больше системных таблиц или списков, используемых для организации управления опе­рациями ввода-вывода. Например, одной из возможных и часто реализуемых ин­формационных структур, сопровождающих практически каждый запрос на ввод-вывод, является блок управления данными (Data Control Block, DCB). Назначение DCB — подключение препроцессоров к процессу подготовки данных на ввод-вы­вод, то есть учет конкретных технических характеристик и используемых преоб­разований. Это необходимо для того, чтобы имеющееся устройство получало не какие-то непонятные ему коды или форматы данных, не соответствующие режи­му его работы, а коды и форматы, созданные специально под данное устройство. Теперь такие препроцессоры часто называют высокоуровневыми драйверами, или просто драйверами, хотя изначально под термином «драйвер» подразумевалась программа управления операциями ввода-вывода.

Взаимосвязи между описанными таблицами изображены на рис. 5.2.

Основные системные таблицы ввода-вывода - student2.ru

Рис. 5.2. Взаимосвязи системных таблиц ввода-вывода

Нам осталось рассмотреть процесс управления вводом-выводом еще раз, теперь с учетом изложенных принципов (рис. 5.3).

Запрос на операцию ввода-вывода от выполняющейся программы поступает на супервизор задач (шаг 1). Этот запрос представляет собой обращение к операци­онной системе и указывает на конкретную функцию API. Вызов сопровождается некоторыми параметрами, уточняющими требуемую операцию. Модуль операци­онной системы, принимающий от задач запросы на те или иные действия, часто

142_____________ Глава 5. Управление вводом-выводом в операционных системах

называют супервизором задач. Не следует путать его с диспетчером задач. Супер­визор задач проверяет системный вызов на соответствие принятым спецификаци­ям и в случае ошибки возвращает задаче соответствующее сообщение (шаг 1-1). Если же запрос корректен, то он перенаправляется в супервизор ввода-вывода (шаг 2). Последний по логическому (виртуальному) имени с помощью таблицы DRT находит соответствующий элемент UCB в таблице оборудования. Если уст­ройство уже занято, то описатель задачи, запрос которой обрабатывается суперви­зором ввода-вывода, помещается в список задач, ожидающих это устройство. Если же устройство свободно, то супервизор ввода-вывода определяет из UCB тип уст­ройства и при необходимости запускает препроцессор, позволяющий получить последовательность управляющих кодов и данных, которую сможет правильно понять и отработать устройство (шаг 3). Когда «программа» управления операци­ей ввода-вывода будет готова, супервизор ввода-вывода передает управление со­ответствующему драйверу на секцию запуска (шаг 4). Драйвер инициализирует операцию управления, обнуляет счетчик тайм-аута и возвращает управление су­первизору (диспетчеру задач) с тем, чтобы он поставил на процессор готовую к исполнению задачу (шаг 5). Система работает своим чередом, но когда устройство ввода-вывода отработает посланную ему команду, оно выставляет сигнал запроса на прерывание, по которому через таблицу прерываний управление передается на секцию продолжения (шаг 6). Получив новую команду, устройство вновь начина­ет ее обрабатывать, а управление процессором опять передается диспетчеру задач, и процессор продолжает выполнять полезную работу. Таким образом, получается параллельная обработка задач, на фоне которой процессор осуществляет управле­ние операциями ввода-вывода.

Основные системные таблицы ввода-вывода - student2.ru

Рис. 5.3. Процесс управления вводом-выводом

Синхронный и асинхронный ввод-вывод___________________________________ 143

Очевидно, что если имеются специальные аппаратные средства для управления вводом-выводом (речь идет о каналах прямого доступа к памяти), которые позво­ляют освободить центральный процессор от этой работы, то в функции централь­ного процессора будут по-прежнему входить все только что рассмотренные шаги, за исключением последнего — непосредственного управления операциями ввода-вывода. В случае использования каналов прямого доступа в память последние ис­полняют соответствующие канальные программы и освобождают центральный процессор от непосредственного управления обменом данными между памятью и внешними устройствами.

Наши рекомендации