Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект ОС.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
664.06 Кб
Скачать

Управление вводом-выводом в операционных системах (продолжение)

Содержание лекции:

- закрепление устройств; общие устройства ввода-вывода; основные системные таблицы ввода-вывода; синхронный и асинхронный ввод-вывод.

Цель лекции:

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

Многие устройства, прежде всего, устройства с последовательным доступом, не допускают совместного использования. Такие устройства могут стать закрепленными за процессом на все время его жизни. Однако, это приводит к тому, что вычислительные процессы не могут выполняться параллельно, т.к. ожидают освобождения УВВ. Чтобы организовать совместное использование многими параллельно выполняющимися задачами не разделяемых УВВ, вводится понятие виртуальных устройств.

Имитация работы с устройством в режиме непосредственного подключения к нему называется спулингом (spooling – Simultaneous Peripheral Operation On-Line). Основное назначение спулинга – создать видимость разделения УВВ, которое фактически является устройством с последовательным доступом и должно использоваться только монопольно и быть закрепленным за процессом.

Каждому вычислительному процессу предоставляется не реальный, а виртуальный принтер, и поток выводимых символов сначала направляется в специальный файл на диске (спул-файл – spool-file) и только потом, по окончании виртуальной печати, в соответствии с принятой дисциплиной обслуживания и приоритетами приложений содержимое спул-файла выводится на принтер. Системные процессы, управляющие спул-файлами, называют спулером чтения (spool-reader) или спулером записи (spool-writer). Например, Microsoft различает понятия «принтер» и «устройство печати». Принтер – это некоторая виртуализация, объект ОС, а устройство печати – это физическое устройство, которое может быть подключено к компьютеру.

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

Каждая ОС имеет свои таблицы ввода-вывода, состав которых может отличаться, хотя в некоторых системах вместо таблиц создаются списки. Исходя из принципа управления вводом-выводом исключительно через супервизор ОС и учитывая, что драйверы устройств ввода-вывода используют механизм прерываний для установления обратной связи центральной части с внешними устройствами, можно сделать вывод о необходимости создания по крайней мере трех системных таблиц (списков):

  1. таблица оборудования (элементы таблицы UCB – Unit Control Block) – содержит информацию обо всех устройствах ввода-вывода, подключенных к вычислительной системе;

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

  3. таблица прерываний – необходима для организации обратной связи между центральной частью и устройствами ввода-вывода.

Взаимосвязи между таблицами изображены на рисунке 14.1.

Рисунок 14.1 – Взаимосвязи системных таблиц ввода-вывода

Запрос на операцию ввода-вывода от выполняющейся программы поступает на супервизор задач (рисунок 14.2, шаг 1). Этот запрос представляет собой обращение к ОС и указывает на конкретную функцию API. Вызов сопровождается некоторыми параметрами, уточняющими требуемую операцию. Модуль ОС, принимающий от задач запросы на те или иные действия, называют супервизором задач.

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

Когда «программа» управления операцией ввода-вывода будет готова, супервизор ввода-вывода передает управление соответствующему драйверу на секцию запуска (шаг 4).

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

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

Рисунок 14.2 – Процесс управления вводом-выводом

Различают синхронный и асинхронный ввод-вывод данных.

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

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

ЛЕКЦИЯ № 15