Наверх Системное программирование
Предыдущий раздел Оглавление Следующий раздел

5.2.2. Иерархические системы каталогов

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

Использование иерархии (дерева каталогов) идеально решает проблемы файловой организации современных систем. При таком подходе в системе может находиться столько каталогов, сколько будет нужно для объединения файлов по общим признакам. Кроме того, если пользователи совместно используют общий файловый сервер (например, в корпоративных сетях), то каждый пользователь может получить свой корневой каталог для организации собственной иерархии файлов. На рис. 5.3 показан именно такой подход. В корневом каталоге содержатся каталоги A, B и C, принадлежащие разным пользователям. Причем в двух пользовательских каталогах для работы над проектами пользователями были созданы собственные подкаталоги.

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

Рис

Рис. 5.3. Иерархическая
система каталогов

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

Другим методом именования файлов в таких системах является использование относительного имени. Совместно с понятием относительного имени используется понятие рабочего каталога, который также называется текущим каталогом. В качестве текущего каталога пользователь выбирает один из собственных каталогов. После чего имена всех файлов будут использоваться относительно рабочего каталога, а не начинаться с корневого. Использование относительного имени во многих случаях значительно удобнее, чем использование абсолютной формы имени файла.

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

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

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

Предыдущий раздел Оглавление Следующий раздел