39)Поддержка синхронных и асинхронных операций ввода-вывода.
Операция ввода-вывода может выполняться по отношению к процессу, запросившему операцию, в синхронном или асинхронном режимах. Синхронный режим означает, что процесс приостанавливает свою работу до тех пор, пока операция ввода-вывода не будет завершена (рис. 6.1, а), а при асинхронном режиме процесс продолжает выполняться в мультипрограммном режиме одновременно с операцией ввода-вывода (рис. 6.1, б). Отличие же заключается в том, что операция ввода-вывода может быть инициирована не только пользовательским процессом — в этом случае операция выполняется в рамках системного вызова, но и кодом ядра, например кодом подсистемы виртуальной памяти для считывания отсутствующей в памяти страницы.
Подсистема ввода-вывода должна предоставлять своим клиентам (пользовательским процессам и кодам ядра) возможность выполнять как синхронные, так и асинхронные операции ввода-вывода в зависимости от их потребностей. Системные вызовы ввода-вывода, генерируемые пользовательскими приложениями, чаще выполняются как синхронные процедуры в связи с тем, что такие операции длятся долго и пользовательскому процессу или потоку все равно придется ждать получения результатов операции для того, чтобы продолжить свою работу. Внутренние же вызовы операций ввода-вывода из модулей ядра обычно выполняются в виде асинхронных процедур, так как кодам ядра нужна свобода в выборе дальнейшего поведения после запроса операции ввода-вывода.
Достарыңызбен бөлісу: |