русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2014-11-28; просмотров: 5675; Нарушение авторских прав


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

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

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

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

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

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

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

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

Каждая операционная система ведет свои таблицы ввода-вывода, их состав (и ко­личество, и назначение каждой таблицы) может сильно отличаться. В некоторых операционных системах вместо таблиц создаются списки, хотя использование ста­тических структур данных для организации ввода-вывода, как правило, приводит к более высокому быстродействию. Здесь очень трудно вычленить общие состав­ляющие, тем более что для современных операционных систем подробной доку­ментации на эту тему крайне мало, разве что воспользоваться материалами ныне устаревших ОС. Тем не менее попытаемся это сделать, опираясь на идеи семей­ства простых, но эффективных операционных систем реального времени, разрабо­танных фирмой 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.

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

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

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


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

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

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


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

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



<== предыдущая лекция | следующая лекция ==>
Общие устройства ввода-вывода | Синхронный и асинхронный ввод-вывод


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.026 сек.