Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ_спо.doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
1.5 Mб
Скачать

27. Понятие ввода/вывода. Основные задачи супервизора ввода/вывода

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

Программирование задач управления вводом/выводом является наиболее сложным, требующим высокой квалификации, поэтому подпрограммы ввода/вывода:

  • оформляли в виде системных библиотечных процедур;

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

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

Управление вводом/выводом – одна из основных функций любой операционной системы. Организация ввода/вывода в различных ОС имеет много общего, а реализация сильно отличается от системы к системе. Проблема усугубляется ещё тем, что в большинстве используемых систем эти моменты вообще, как правило, подробно не описаны, и исключение по этому вопросу касается только системы Linux, для которой имеются комментированные исходные тексты. Детально описываются функции API (application program interface – Интерфейс прикладного программирования), реализующие ввод/вывод. Поэтому рассмотрим только основные идеи и концепции.

Сложность проектирование ввода/вывода возникает из-за огромного числа устройств различной природы и назначения. Разработчик ввода/вывода должен решить две задачи:

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

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

Система ввода/вывода должна быть универсальной.

Главный принцип ввода/вывода – любые операции по управлению вводом/выводом объявляются привилегированными и могут выполняться только самой ОС. Для обеспечения этого принципа в большинстве процессоров вводятся два режима:

  1. режим пользователя, выполнение команд ввода/вывода запрещено;

  2. режим супервизора, выполнение команд ввода/вывода разрешено.

Использование команд ввода/вывода в пользовательском режиме вызывает исключение (прерывание) и управление передается ОС.

Для мультипрограммных ОС одним из основных видов ресурсов являются устройства ввода/вывода и обслуживающие их программы. ОС должны управлять разделяемыми и неразделяемыми устройствами и позволять параллельно выполняющимися задачам использовать различные устройства ввода/вывода. Примером разделяемого устройства может служить устройство для чтения компакт-дисков. Это устройство с прямым доступом. Пример неразделяемых устройств – принтер. Это устройство с последовательным доступом.

Непосредственное обращение к внешним устройствам из пользовательских программ не разрешено по трем причинам:

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

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

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

Компонента ОС, выполняющая ввод/вывод называется супервизором ввода/вывода. Основные задачи супервизора следующие:

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

  • планирование ввода/вывода: выполнение или постановка в очередь, т.е. супервизор ввода/вывода определяет очередность предоставления устройств ввода/вывода задачам, затребовавшим их;

  • инициирование ввода/вывода. Т.е. супервизор ввода/вывода передаёт управление соответствующим драйверам и в случае управления вводом/выводом с использованием прерываний предоставляет процессор диспетчеру задач с тем, чтобы передать его первой задаче, стоящей в очерёди на выполнение;

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

  • передача сообщений об ошибках, если они появляются;

  • передача сигнала о завершении операции ввода/вывода, т.е. супервизор ввода/вывода посылает сообщения о завершении операции ввода/вывода запросившему эту операцию процессу и снимает его с состояния ожидания ввода/вывода, если процесс ожидал завершения операции.

Если устройство ввода/вывода является инициативным, управление со стороны супервизора ввода/вывода заключается в активизации соответствующего вычислительного процесса. Инициативное устройство – устройство, по сигналу прерывания от которого запускается соответствующая ему программа.

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