Улучшить схему одинарной буферизации можно путем использования двух системных буферов (рис. 11.6,в). Теперь процесс выполняет передачу данных в один буфер (или считывание из него), в то время как операционная система освобождает (или заполняет) другой. Эта технология известна как двойная буферизация или сменный буфер.
Время выполнения при блочно-ориентированной передаче данных можно грубо оценить как mах[С, Т]. Таким образом, если С < Т , то блочно-ориентированное устройство может работать с максимальной скоростью. Если же С > Т , то двойная буферизация избавляет процесс от необходимости ожидания завершения ввода-вывода. В любом случае достигается преимущество перед одинарной буферизацией. Это улучшение буферизации осуществляется за счет увеличения ее сложности.
При поточно-ориентированном вводе мы снова обращаемся к двум альтернативным режимам работы. Необходимость приостановления процесса при построчном выводе возникает только в том случае, если при выводе очередной строки оба буфера не пусты. При побайтовых операциях двойной буфер не имеет никакого преимущества перед одинарным буфером двойной длины. В обоих случаях используется модель производителя/потребителя.