Основные концепции организации ввода-вывода в операционных системах

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

Поэтому самым главным является следующий принцип: любые операции по уп­равлению вводом-выводом объявляются привилегированными и могут выполняться только кодом самой операционной системы. Для обеспечения этого принципа в большинстве процессоров даже вводятся режимы пользователя и супервизора. Последний еще называют привилегированным режимом, или режимом ядра. Как правило, в режиме супервизора выполнение команд ввода-вывода разрешено, а в пользовательском режиме — запрещено. Обращение к командам ввода-вывода в пользовательском режиме вызывает исключение и управление через механизм прерываний передается коду операционной системы. Хотя возможны и более слож­ные схемы, в которых в ряде случаев пользовательским программам может быть разрешено непосредственное выполнение команд ввода-вывода.

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

Основные концепции организации ввода-вывода в операционных системах - student2.ru ' Исключение — это определенный вид внутреннего прерывания. Этим термином, во-первых, обозна­чают некоторое множество синхронных прерывании, а во-вторых, подчеркивают, что ситуация, выз­вавшая запрос на прерывание, является исключительной, то есть отличается от обычной.

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

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

Можно назвать три основные причины, по которым нельзя разрешать каждой от­дельной пользовательской программе обращаться к внешним устройствам непо­средственно.

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

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

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

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

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

Основные концепции организации ввода-вывода в операционных системах 133

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

2. Супервизор ввода-вывода получает запросы на ввод-вывод от супервизора за­
дач или от программных модулей самой операционной системы.

3. Супервизор ввода-вывода вызывает соответствующие распределители каналов
и контроллеров, планирует ввод-вывод (определяет очередность предоставле­
ния устройств ввода-вывода задачам, затребовавшим эти устройства). Запрос
на ввод-вывод либо тут же выполняется, либо ставится в очередь на выполне­
ние.

4. Супервизор ввода-вывода инициирует операции ввода-вывода (передает уп­
равление соответствующим драйверам) и в случае управления вводом-выво­
дом с использованием прерываний предоставляет процессор диспетчеру задач
с тем, чтобы передать его первой задаче, стоящей в очереди на выполнение.

5. При получении сигналов прерываний от устройств ввода-вывода супервизор
идентифицирует эти сигналы (см. раздел «Прерывания» в главе 1) и передает
управление соответствующим программам обработки прерываний.

6. Супервизор ввода-вывода осуществляет передачу сообщений об ошибках, если
таковые происходят в процессе управления операциями ввода-вывода.

7. Супервизор ввода-вывода посылает сообщения о завершении операции ввода-
вывода запросившей эту операцию задаче и снимает ее с состояния ожидания
ввода-вывода, если задача ожидала завершения операции.

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

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

Основные концепции организации ввода-вывода в операционных системах - student2.ru 1 Инициативным называют такое устройство ввода-вывода, по сигналу прерывания от которого за­пускается соответствующая ему программа (обычно это не стандартное устройство ввода-вывода, а набор датчиков). Такая программа, с одной стороны, не является драйвером, поэтому ей не нужно управлять операциями обмена данными, по, с другой стороны, запуск такой программы осуществля­ется именно по событиям, связанным с генерацией устройством ввода-вывода соответствующего сигнала. Разница между драйверами, работающими по прерываниям, и инициативными программа­ми заключается в их статусе. Драйвер является компонентом операционной системы и часто выпол­няется не как вычислительный процесс, а как системный объект, а инициативная программа являет­ся обычным вычислительным процессом, только его запуск осуществляется но инициативе внешнего устройства.

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

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

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