Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SRS_IPOVS_OS.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1 Мб
Скачать
☆

17.2. Программные уровни ввода-вывода

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

Обработчики прерываний

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

  1. Сохранить все регистры, не сохраненные аппаратурой.

  2. Установить контекст для процедуры обработки прерываний. Выполнение этого действия может включать установку TLB и таблицы страниц.

  3. Установить указатель стека для процедуры обработки прерываний.

  4. Выдать подтверждение контроллеру прерываний. Если централизованного контроллера прерываний нет, разрешить прерывания.

  5. Скопировать содержимое регистров в таблицу процессов.

  6. Запустить процедуру обработки прерываний. Она извлечет информацию из регистров контроллера устройства, инициировавшего прерывание.

  7. Выбрать процесс, которому передать управление.

  8. Установить контекст блока управления памятью для следующего работающего процесса.

  9. Загрузить регистры нового процесса.

  10. Начать выполнение нового процесса.

Драйверы устройств

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

Чтобы получить доступ к регистрам контроллера, драйвер устройства должен быть частью ядра ОС. Драйверы устройств обычно располагаются под остальной частью операционной системы.

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

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

У драйвера устройства есть несколько функций.

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

  2. Проверка входных параметров.

  3. Преобразование абстрактных параметров в конкретные. Например, дисковый драйвер может преобразовывать линейный номер блока в номера головки, дорожки и сектора.

  4. Проверка готовности и незанятости устройства.

  5. Собственно управление устройством. Выдача ему серии команд.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]