БУФЕРИЗАЦИЯ ОПЕРАЦИЙ ВВОДА-ВЫВОДА

Необходимость буферизации диктуется следующими проблемами:

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

2. При выполнении операции ввода-вывода процесс приостанавливает работу и выгружается из ОП в виртуальную, где ожидает завершения операции ввода-вывода. Однако, т.к. вместе с процессом из ОП выгружена и сама страница, то некуда выводить данные и ввод-вывод блокируется, образуется взаимная блокировка: процесс ждет завершения операции ввода-вывода, а операция ввода-вывода ждет появления страницы в памяти. Поэтому, процесс должен быть заблокирован и оставаться в ОП, хотя операция ввода-вывода может быть выполнена не сразу, а поставлена в очередь.

Для эффективности работы можно выполнить чтение блока данных в специальное место памяти – буфер, а затем удалить страницу из ОП. При этом устройство будет считывать и сохранять данные не в память процесса, а в буфер. Такая схема называется буферизацией операций ввода-вывода.

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

 
 

 


2. Двойная буферизация ( сменный буфер). Если использовать не 1 , а 2 буфера, то операции ввода-вывода можно еще ускорить. Во время считывания данных из первого буфера в ОП процесса можно одновременно выполнять считывание данных с устройства во 2 буфер