Поточно-ориентированные

Блочно-ориентированные

Блочно-ориентированные устройства сохраняют информацию блоками, обычно фиксированного размера, и выполняют передачу данных поблочно. Как правило, при этом можно ссылаться на данные с использованием номера блока. Диски и магнитные ленты относятся к блочно-ориентированным устройствам ввода-вывода.

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

Одинарный буфер

Простейшим типом поддержки со стороны операционной системы является одинарный буфер.

В тот момент, когда пользовательский процесс выполняет запрос ввода-вывода, операционная система назначает ему буфер в системной части основной памяти.

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

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

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

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


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



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