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



 

Во-первых,емкость буфера кэша ограничена.Когда блок должен быть загружен в заполненный буферкэша, возникает проблема замещения блоков, то есть отдельные блоки должны быть удалены из него. Здесь работают те же стратегии и те же FIFO, Second Chance и LRU-алгоритмы замещения, что и при вы-талкивании страниц памяти.

 

 

Рис. 12.12. Структура блочного кэша

 

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

 

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

 

Так, блоки, существенные для совместимости файловой системы (блоки индексных узлов, блоки косвен-ной адресации, блоки директорий), должны быть переписаны на диск немедленно, независимо от того, в какой части LRU-цепочки они находятся. Hеобходимо тщательно выбрать порядок такого переписыва-ния.

 

В Unix имеется для этого вызов SYNC, который заставляет все модифицированные блоки записываться на диск немедленно. Для синхронизации содержимого кэша и диска периодически запускается фоновый процесс-демон. Кроме того, можно организовать синхронный режим работы с отдельными файлами, за-даваемый при открытии файла, когда все изменения в файле немедленно сохраняются на диске.


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

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

 

Оптимальное размещение информации на диске

 

Кэширование - не единственный способ увеличения производительности системы. Другая важная тех-ника - сокращение количества движений считывающей головки диска за счет разумной стратегии разме-щения информации. Например, массив индексных узлов в Unix стараются разместить на средних дорож-ках. Также имеет смысл размещать индексные узлы поблизости от блоков данных, на которые они ссы-лаются и т. д.

 

Кроме того, рекомендуется периодически осуществлять дефрагментацию диска (сборку мусора), по-скольку в популярных методиках выделения дисковых блоков (за исключением, может быть, FAT) прин-цип локальности не работает, и последовательная обработка файла требует обращения к различным уча-сткам диска.

 

Реализация некоторых операций над файлами

 

В предыдущей лекции перечислены основные операции над файлами. В данном разделе будет описан порядок работы некоторых системных вызовов для работы с файловой системой, следуя главным обра-зом [Bach, 1986], с учетом совокупности введенных в данной лекции понятий.


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

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






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