Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие_Unix.doc
Скачиваний:
4
Добавлен:
26.11.2019
Размер:
2.41 Mб
Скачать

5 Подсистема ввода-вывода

5.1 Основные задачи

Подсистема ввода-вывода обеспечивает обмен данными между приложениями и периферийными устройствами компьютера.

Клиентами этой подсистемы являются

  • пользователи

  • приложения

  • компоненты самой ОС, которым требуется получение системных данных или их вывод (например подсистеме управления процессами при смене активного процесса необходимо записать на диск контекст приостанавливаемого процесса и считать с диска контекст активизируемого процесса).

Подсистема ввода-вывода (Input-Output Subsystem) должна решать ряд задач:

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

  • согласование скоростей обмена и кэширование данных;

  • разделение устройств и данных между процессами;

  • обеспечение удобного логического интерфейса между устройствами и остальной частью системы;

  • поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера;

  • динамическая загрузка и выгрузка драйверов;

  • поддержка нескольких файловых систем;

  • поддержка синхронных и асинхронных операций ввода-вывода.

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

5.2 Типы устройств ввода-вывода в ос

Все устройства, обслуживаемые ОС UNIX, могут быть классифицированы на два типа - байт-ориентированные устройства и блок-ориентированные устройства. Байт-ориентированное устройство - это то устройство, обмен с которым осуществляется по одному байту (например, клавиатура). Блок-ориентированное устройство - это устройство, с которым обмен может осуществляться блоками.

При этом, одно и то же устройство может рассматриваться и как байт-ориентированное, и как блок-ориентированное (пример - оперативная память).

Каждое устройство имеет соответствующий ему файл. Содержимого у файлов устройств нет, а есть только ИД и имя. ИД содержит

1. информацию о типе ассоциированного устройства

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

3. некоторый цифровой параметр, который может быть передан драйверу в качестве уточняющего информацию о работе.

В системе имеются две таблицы: для блок- и для байт-ориентированных устройств. Второе поле ИД есть номер в таблице драйверов соответствующего класса устройств.

5.3 Общая схема

Подсистемы ввода-вывода имеет иерархическую структуру.

Обобщенная структура подсистемы ввода-вывода:

Рисунок 4.9 – Обобщенная структура подсистемы ввода-вывода

При этом

  • нижние слои включают индивидуальные драйверы, написанные для конкретных физических устройств,

  • верхние слои управляют этими устройствами и предоставляют общий интерфейс для устройств, обладающих общими характеристиками (например для принтеров определенного производителя или для всех матричных принтеров и т. п.)

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

Для согласования работы слоев предусмотрен менеджер ввода-вывода

Его организующие функции распределены по всем уровням, образуя оболочку.

Задачи такого менеджера:

  • Верхний слой менеджера составляют системные вызовы ввода-вывода, которые принимают от пользовательских процессов запросы на ввод-вывод и переадресуют их соответствующим модулям и драйверам, а также возвращают процессам результаты операций ввода-вывода.

  • Нижний слой менеджера реализует непосредственное взаимодействие с контроллерами внешних устройств, экранируя драйверы от особенностей аппаратной платформы. Этот слой принимает от драйверов запросы на обмен данными с регистрами контроллеров в некоторой обобщенной форме, а затем преобразует эти запросы в зависящий от аппаратной платформы формат. Диспетчер прерываний, рассмотренный выше, может входить в состав менеджера ввода-вывода или же представлять собой отдельный модуль ядра.

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

  • менеджера ввода-вывода организует взаимодействие модулей ввода-вывода с модулями других подсистем ОС, таких как подсистема управления процессами, виртуальной памятью и другими.

Примерами подобного менеджера является среда STREAMS, существующая во многих версиях операционной системы UNIX.