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

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

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

Рис. 1 Два режима выполнения операций ввода-вывода.

Домашнее задание: § конспект.

Закрепление материала:

Ответьте на вопросы:

Когда протекают процессы, происходящие в контроллерах?

Опишите процесс взаимодействия контроллера с драйвером.

Как обеспечивается согласование скорости в оперативной памяти?

Для каких случаев в качестве буфера используется дисковый файл, называемый также спул-файлом?

Устройства ввода-вывода могут предоставляться процессам как в монопольное, так и в совместное (разделяемое) использование. Как при этом ОС должна обеспечи­вать контроль доступа?

Опишите два типа интерфейсов: интерфейс «драйвер-ядро» ( Driver Kernel Interface, DKI) и интерфейс «драйвер-устройство» ( Driver Device Interface, DDI).

Что является альтернативой динамической загрузке драйверов при изменении текущей кон­фигурации внешних устройств компьютера?

Литература:

1. Богумирский Б. Энциклопедия Windows 98 (второе издание). — СПб.: Питер, 1999,896с.

2. Борланд Р. Знакомство с Windows 98. — М.: Microsoft Press Русская редакция,1997,376с.

3. Борланд Р. Эффективная работа с Word 97. - СПб.: Питер, 1998,960 с.

4. Коварт Р., Уотерс Б. Windows NT Server 4: Учебный курс. — СПб.: Питер, 1999, 448с.

5. Мэтьюз М. Windows 98: Книга ответов. - СПб.: Питер, 1999, 464 с.

6. Немнюгин С. Pascal: Учебный курс. — СПб.: Питер, 1999.

7. Новейший самоучитель работы на компьютере. Под ред. Симоновича С. — М.: Десс;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: