Задача согласования скорости возникает всегда. Достигается за счет буферизации данных в ОП и синхронизации доступа процессов к буферу.
В специализированных ОС, в которых очень важно обеспечение высокой скорости ввода-вывода, под буферизацию отводится большая часть ОП. Но часто её объема не хватаетÞв качестве буфера используется дисковый файл (спул-файл). Пример – организация вывода файла на принтер.
Другое решение – большая буферная память в контроллерах внешн устройств. Особенно круто, когда помещение данных на диск слишком замедляет обмен (или когда данные выводятся на сам диск).
Ещё +: сокращает кол-во реальных операций ввода-вывода за счет кэширования данных, а это существенно сокращает t доступа к хранимым данным.
Бывает одинарная, двойная (сменный буфер), циклическая б-я.
Время обработки блока данных (С – t для вычислений между запросами на ввод данных, М – t на перемещение данных из буфера в пользов. память, T – t для ввода одного блока)
Без буферизации: T + C
Одинарная буферизация: max {T, C} + M
|
|
в большинстве случаев T + C > max {T, C}
Двойная буферизация: max {T, C}
если C <= T, то блочно-ориентированное устройство может работать с максимальной скоростью;
если C > T, то процесс избавляется от необходимости ожидания завершения ввода-вывода.
Циклическая буферизация используется при высокой частоте ввода-вывода.
Задача
Система буферизации состоит из процесса ввода I, пользовательского процесса Р и процесса вывода О, соединенных с двумя буферами. Процессы обмениваются блоками данных одинакового размера, которые буферизуются на диске; граница между входными и выходными буферами динамическая, зависящая от скорости работы процессов. Используемые процессами примитивы гарантируют выполнение условия i + o <= max, где max – максимальное количество блоков на диске;
i – количество входных блоков на диске;
o – количество выходных блоков на диске.
I P O
О работе процессов известно следующее:
1. Пока система производит данные, процесс I записывает их на диск (если на нем есть свободное место).
2. Пока на диске имеются входные данные, процесс Р их считывает и для каждого считанного блока выводит некоторое количество данных (если на диске есть свободное место).
3. Пока на диске имеются выходные данные, процесс О считывает их.
Требуется показать, что в системе может возникнуть взаимоблокировка