Операция ввода-вывода может выполняться по отношению к программному модулю, запросившему операцию, в синхронном или асинхронном режимах. Смысл этих режимов тот же, что и для рассмотренных выше системных вызовов, — синхронный режим означает, что программный модуль приостанавливает свою работу до тех пор, пока операция ввода-вывода не будет завершена (рис. 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. Новейший самоучитель работы на компьютере. Под ред. Симоновича С. — М.: Десс;