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



 

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

 

Поводов для нежелательной конкуренции между процессами много, особенно при удалении имен ката-логов. Предположим, что один процесс пытается найти данные файла по его полному символическому имени, последовательно проходя компонент за компонентом, а другой процесс удаляет каталог, имя ко - торого входит в путь поиска. Допустим, процесс A делает разбор имени "a/b/c/d" и приостанавливается во время получения индексного узла для файла "c". Он может приостановиться при попытке заблокиро-вать индексный узел или при попытке обратиться к дисковому блоку, где этот индексный узел хранится. Если процессу B нужно удалить связь для каталога с именем "c", он может приостановиться по той же самой причине, что и процесс A. Пусть ядро впоследствии решит возобновить процесс B раньше процес-са A. Прежде чем процесс A продолжит свое выполнение, процесс B завершится, удалив связь каталога "c" и его содержимое по этой связи. Позднее процесс A попытается обратиться к несуществующему ин-дексному узлу, который уже был удален. Алгоритм поиска файла, проверяющий в первую очередь нера-венство значения счетчика связей> нулю, должен сообщить об ошибке.


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

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

 

Hадежность файловой системы

 

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

 

Целостность файловой системы

 

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

 

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

 

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


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

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






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