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



 

Связывание файлов

 

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

 

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


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

ту же команду (выполняемый файл). Например, выполняемый файл традиционного текстового редактора ОС Unix vi обычно может вызываться под именами ex, edit, vi, view и vedit файловой системы. Соедине-ние между директорией и разделяемым файлом называется "связью" или "ссылкой" (link). Дерево файло-вой системы превращается в циклический граф.

 

Это удобно, но создает ряд дополнительных проблем.

 

Простейший способ реализовать связывание файла - просто дублировать информацию о нем в обеих ди-ректориях. При этом, однако, может возникнуть проблема совместимости в случае, если владельцы этих директорий попытаются независимо друг от друга изменить содержимое файла. Например, в ОС CP/M запись в директории о файле непосредственно содержит адреса дисковых блоков. Поэтому копии тех же дисковых адресов должны быть сделаны и в другой директории, куда файл линкуется. Если один из пользователей что-то добавляет к файлу, новые блоки будут перечислены только у него в директории и не будут "видны" другому пользователю.

 

Рис. 12.11. Структура файловой системы с возможностью связывания файла с новым именем

 

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

 

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

 

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

 

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


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

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






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