Буфер сверхоперативной памяти (кеш)
Буфер сверхоперативной памяти (кеш)
Определение
Ядро старается свести к минимуму частоту обращений к диску, заведя специальную область внутренних информационных буферов, именуемую буферным кешем. Буферный кеш представляет собой программную структуру, которую не следует путать с аппаратными кешами, ускоряющими косвенную адресацию памяти.
Назначение
Буфер хранит содержимое блоков диска, к которым перед этим производились обращения. Перед чтением информации с диска ядро пытается считать что-нибудь из буфера кеша. Если в этом буфере отсутствует информация, ядро читает данные с диска и заносит их в буфер. Аналогично, информация, записываемая на диск, заносится в буфер для того, чтобы находиться там, если ядро позднее попытается считать ее.
Каждому блоку соответствует один буфер.
Свойства:
- функциональность
Рекомендуемые материалы
- инъективность
- не всюду определено
- сюръективный
Каждый буфер состоит из двух частей: области памяти, в которой хранится информация, считываемая с диска, и заголовка буфера, который идентифицирует буфер.
Состояние буфера представляет собой комбинацию из следующих условий:
· буфер заблокирован (термины "заблокирован (недоступен)" и "занят" равнозначны, так же, как и понятия "свободен" и "доступен"),
· буфер содержит правильную информацию,
· ядро должно переписать содержимое буфера на диск перед тем, как переназначить буфер; это условие известно, как "задержка, вызванная записью",
· ядро читает или записывает содержимое буфера на диск,
· процесс ждет освобождения буфера.
Заголовок буфера:
Структура области буферов:
Буферы организуются в ХЭШ очереди.
В зависимости от номера блока генерируется ХЭШ ключ, и буфер помещается в соответствующую этому ключу очередь.
Информация в лекции "1 Основные понятия алгоритмического языка" поможет Вам.
Буфер, с которым не производится чтение и запись или операции дискового ввода вывода помещается в список свободных буферов.
ХЭШ- функция ≈ это остаток от деления на 4.
Буферы, с которыми не производятся чтение/ запись процессом или операции дискового ввода/ вывода помещаются в список свободных буферов.
Если нам нужен буфер, то он выделяется из начала списка свободных буферов. В него заносится нужная информация с диска, и буфер помещается в конец этого списка.
Любой буфер всегда находится в хеш-очереди, но его положение в очереди не имеет значения. Ядро просматривает хеш-очередь, если ему нужно найти определенный буфер, и выбирает буфер из списка свободных буферов, если ему нужен любой свободный буфер. Еще раз напомним: буфер всегда находится в хеш-очереди, а в списке свободных буферов может быть, но может и отсутствовать.