ВУЗ:
Составители:
троллеры могут управлять несколькими устройствами. Если интерфейс между контроллером и устройством стандартизован,
то независимые производители могут выпускать совместимые как контроллеры, так и устройства.
Операционная система обычно имеет дело не с устройством, а с контроллером. Контроллер, как правило, выполняет
простые функции, например, преобразует поток бит в блоки, состоящие из байт, и осуществляет контроль и исправление
ошибок. Каждый контроллер имеет несколько регистров, которые используются для взаимодействия с центральным процес-
сором. В некоторых компьютерах эти регистры являются частью физического адресного пространства. В таких компьютерах
нет специальных операций ввода-вывода. В других компьютерах адреса регистров ввода-вывода, называемых часто портами,
образуют собственное адресное пространство за счет введения специальных операций ввода-вывода (например команд IN и
OUT в процессорах i86).
ОС выполняет ввод-вывод, записывая команды в регистры контроллера. Например, контроллер гибкого диска IBM PC
принимает
15 команд, таких как READ, WRITE, SEEK, FORMAT и т.д. Когда команда принята, процессор оставляет контроллер и занимается
другой работой. При завершении команды контроллер организует прерывание для того, чтобы передать управление процессором
операционной системе, которая должна проверить результаты операции. Процессор получает результаты и статус устройства, чи-
тая информацию из регистров контроллера.
5.5.3. Организация программного обеспечения ввода-вывода
5.5.3.1. Уровни организации программного обеспечения
ввода-вывода
Основная идея организации программного обеспечения ввода-вывода состоит в разбиении его на несколько уровней,
причем нижние уровни обеспечивают экранирование особенностей аппаратуры от верхних, а те, в свою очередь, обеспечи-
вают удобный интерфейс для пользователей.
Ключевым принципом является независимость от устройств. Вид программы не должен зависеть от того, читает ли она
данные с гибкого или жесткого диска.
Очень близкой к идее независимости от устройств является идея единообразного именования, т.е. для именования уст-
ройств должны быть приняты единые правила.
Другим важным вопросом для программного обеспечения ввода-вывода является обработка ошибок. Вообще говоря,
ошибки следует обрабатывать как можно ближе к аппаратуре. Если контроллер обнаруживает ошибку чтения, то он должен
попытаться ее скорректировать. Если же это ему не удается, то исправлением ошибок должен заняться драйвер устройства.
Многие ошибки могут исчезать при повторных попытках выполнения операций ввода-вывода, например ошибки, вызванные
наличием пылинок на головках чтения или на диске. И только если нижний уровень не может справиться с ошибкой, он со-
общает об ошибке верхнему уровню.
Еще один ключевой вопрос – это использование блокирующих (синхронных) и неблокирующих (асинхронных) пере-
дач. Большинство операций физического ввода-вывода выполняется асинхронно – процессор начинает передачу и переходит
на другую работу, пока не наступает прерывание. Пользовательские программы намного легче писать, если операции ввода-
вывода блокирующие – после команды READ программа автоматически приостанавливается до тех пор, пока данные не по-
падут в буфер программы. ОС выполняет операции ввода-вывода асинхронно, но представляет их для пользовательских про-
грамм в синхронной форме.
Последняя проблема состоит в том, что одни устройства являются разделяемыми, а другие – выделенными. Диски – это
разделяемые устройства, так как одновременный доступ нескольких пользователей к диску не представляет собой проблему.
Принтеры – это выделенные устройства, потому что нельзя смешивать строчки, печатаемые различными пользователями.
Наличие выделенных устройств создает для операционной системы некоторые проблемы.
Для решения поставленных проблем целесообразно разделить программное обеспечение ввода-вывода на четыре слоя
(рис. 5.11):
1)
обработка прерываний;
2)
драйверы устройств;
3)
независимый от устройств слой операционной системы;
4)
пользовательский слой программного обеспечения.
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »
