Автор, говоря о буферном кеше в книге - Дизайн операционной системы UNIX , говорит, что
буфер всегда находится в хеш-очереди, но он может или может не быть на бесплатный список.
Как насчет буферов в списке свободных мест, которые могли вообще не использоваться? Разве они не были бы просто частью бесплатного списка?
Структуры данных, представленные в книге, аналогичны тем, которые обсуждаются здесь
В книге говорится о системе UNIX V.
"А как насчет буферов в свободном списке, которых могло не быть? вообще используется? Разве они не были бы просто частью списка свободных?"
Думаю, вы сами ответили на свой вопрос! Из того же текста:
"Каждый буфер помещается в список свободных, когда система загружается."
"...он может быть в списке свободных, а может и не быть."
Он есть в списке свободных при инициализации системы, потому что он, ну, бесплатный! система потребляет буфер и бросает его в хэш-очередь для использования, а затем отбрасывает его обратно в список свободных.
Хэш-очередь как бы говорит: «Да, я видел это и использовал это в некотором качестве». обязательно означает, что он уже обработан из буферной очереди.
Формулировка немного запутанная, и мне пришлось выкопать текст, на который вы ссылаетесь. Я просматриваю страницы 40/41 для ясности.
Свободный список представляет собой алгоритм, который используется для поиска разблокированного и свободного буфера в буферном кэше. Эта структура данных используется в основном для записи буфера. Потому что для записи вы можете выбрать любой буфер, а для чтения требуется определенный буфер.
Теперь все буферы, присутствующие в списке Free, не могут быть пустыми, но определенно разблокированы. Кроме того, все буферы присутствуют в хеш-очереди, но не в списке свободных.
Потому что во время установки администратора спрашивают о количестве очередей, и тогда решено поместить все буферы в эти очереди. Следовательно, все буферы должны быть перечислены системой в хеш-очереди.