The design of the UNIX Operating System 103 страница



 

Буферизация и кэширование

 

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

 

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


Основы операционных систем 139

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

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

 

Под словом кэш (cash – "наличные"), этимологию которого мы не будем здесь рассматривать, обычно понимают область быстрой памяти, содержащую копию данных, расположенных где-либо в более мед-ленной памяти, предназначенную для ускорения работы вычислительной системы. Мы с вами сталкива-лись с этим понятием при рассмотрении иерархии памяти. В базовой подсистеме ввода-вывода не следу-ет смешивать два понятия, буферизацию и кэширование, хотя зачастую для выполнения этих функций отводится одна и та же область памяти. Буфер часто содержит единственный набор данных, существую-щий в системе, в то время как кэш по определению содержит копию данных, существующих где-нибудь еще. Например, буфер, используемый базовой подсистемой для копирования данных из пользовательско-го пространства процесса при выводе на диск, может в свою очередь применяться как кэш для этих дан-ных, если операции модификации и повторного чтения данного блока выполняются достаточно часто.


Дата добавления: 2021-01-21; просмотров: 110; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!