Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС / Тема_4.ppt
Скачиваний:
252
Добавлен:
11.04.2015
Размер:
5.04 Mб
Скачать

4.2.9. Поддержка синхронных и асинхронных операций ввода-вывода

При асинхронном режиме ввода-вывода процесс продолжает выполняться в мультипрограммном режиме одновременно с операцией ввода-вывода (нижняя диаграмма).

Операционные системы

121

4.2.8. Поддержка синхронных и асинхронных операций ввода-вывода

ПроцессорP2

 

 

 

 

Завершение операции

 

 

 

 

ввода-вывода

P1

P2

P3

P2

P3

P1

Контроллер

 

Операция ввода-

 

Синхронизация (событие,

Процессор

 

 

вывода

 

 

 

 

Мьютекс)

 

 

 

 

 

P1

P1

P2

P3

P1

P1

Контроллер

Операция ввода-

 

 

вывода

 

 

Операционные системы

122

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода Простейший вариант асинхронного вывода -

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

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

Операционные системы

123

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода Реальный вывод данных из системного буфера

выполняет супервизор ввода-вывода.

Выделение буфера из системной области памяти выполняет специальный системный процесс по указанию супервизора ввода-вывода.

Операционные системы

124

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода Для выполнения асинхронного ввода данных

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

Сам запрос на операцию ввода-вывода разбивается на две части (на два запроса).

Операционные системы

125

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода В первом запросе указывается операция на

считывание данных, подобно тому как это делается при синхронном вводе-выводе, однако тип (код) запроса используется другой, и в запросе указывается еще по крайней мере один дополнительный параметр

— имя (код) системного объекта, которое получает процесс в ответ на запрос и которое идентифицирует выделенный буфер.

Операционные системы

126

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода Получив имя буфера, процесс продолжает свою

работу.

В результате запроса на асинхронный ввод данных процесс остается в состоянии выполнения или в состоянии готовности к выполнению.

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

Операционные системы

127

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода В этом втором запросе (имеющем другой код или

имя), процесс указывает имя системного объекта (буфера для асинхронного ввода данных) и в случае успешного завершения операции считывания данных тут же получает их из системного буфера.

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

Операционные системы

128

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода В этом втором запросе (имеющем другой код или

имя), процесс указывает имя системного объекта (буфера для асинхронного ввода данных) и в случае успешного завершения операции считывания данных тут же получает их из системного буфера.

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

Операционные системы

129

4.2.8. Поддержка синхронных и асинхронных

операций ввода-вывода Операция ввода-вывода может быть

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

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

Операционные системы

130

Соседние файлы в папке ОС