Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л. Клопа.docx
Скачиваний:
3
Добавлен:
26.09.2019
Размер:
53.22 Кб
Скачать

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

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

Существует 3 причины приводящие к исполнению буфера в базовую подсистему ввода/вывод:

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

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

  3. Связана с необходимостью копирования информации из приложений кот осуществляют ввод/вывод в буфер ядра ОС и обратно. допустим некий пользовательский процесс пожелал вывести информацию из своего адресного пространства на внешнее устройство для этого он должен выполнить системный вызов передав в качестве параметров адрес области памяти где расположены данные и их объем. Если внешнее устройство занят, о то к моменту его освобождения содержимое нужной области может оказаться испорченной.Что бы избежать этого(подобной ситуации) проще всего в начале работы системного вызова скопировать необходимые данные в буфе ядра ОС постоянно находящийся в оперативной памяти и выводить их на устройство из этого буфера. Под КЭШем обычно понимают область быстрой памяти содержащую копию данных расположенных в более медленной памяти и предназначенную для ускорения работы вычислительно системы. Базовой подсистемой ввод/вывода не следует смешивать два этих понятия буферизация и кэширование. Хотя за частую для выполнения этих функций отводится одна и та же область памяти. Буфер содержит единственный набор данных существующий в системе, в то время как КЭШ содержит копию данных существующих где ни то еще. Так буфер используемой базовой системой для копирования данных из пользовательского пространства процесса при выводе на диск может применяться как КЭШ для этих данных. Функции буферизации и кэширования не обязательно должны быть локализованы(размещены) в базовой системе ввода/вывода. Они могут быть частично реализованы в драйверах и в контроллерах устройства скрытно по отношению к базовой подсистеме.

Алгоритмы сканирования (scan, c-scan, look, c-look)

В простейшем из алгоритмов сканирования scan головки постоянно перемещаются от одного края диска до другого, по ходу обслуживая все встречающиеся запросы. По достижении другого края диска направление движения меняется и все начинается снова. Предположим головки двигаются в направлении уменьшения номеров цилиндров. Последовательность перемещения головок будет выглядеть следующим образом: 63, 55, 31, 23, 14, 10, … 7, 0, 67, 84

Если нам известно что мы обслужили последний попутный запрос в направлении движения головок, то мы можем не доходить до края диска, а сразу изменять направления на обратное. Тогда: 63, 55, 31, 23, 14, 10, 7, 67, 84 (всего пройдено 133)

Получим модификацию алгоритма scan вносит название look.

Допустим что к моменту изменения направления движение головки в алгоритме scan (т.е. когда головка, у этого края находилось большое количество новых запросов, на обслуживание которых будет потрачено много времени, т.к. надо не только перемещать головку, но еще и перемещать прочитанные данные, тогда запросы относящиеся к другому краю диска и поступившие ранее будут ждать несправедливо долго).

Для сокращения времени ожидания применяется циклическое сканирование (c-scan), когда головка достигает 1го из краев диска она без чтения попутных запросов перемещается на другой край, откуда вновь начинает движение в прежнем направлении. Последовательность перемещений: 63, 55, 31, 23, 14, 10, 7, 0, 99, 84, 67

По аналогии с look для алгоритма scan можно предложить алгоритм c-look для алгоритма c-scan.

Последовательность: 62, 55, 31, 23, 14, 10, 7, 84, 67