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



 

В некоторых системах управления файлами требуется, чтобы каждый архив файлов целиком располагал-ся на одном диске (разделе диска). В этом случае полное имя файла начинается с имени дискового уст-ройства, на котором установлен соответствующий диск (буквы диска). Например, c:\util\nu\ndd.exe. Та-кой способ именования используется в файловых системах DEC и Microsoft.

 

В других системах (Multics) вся совокупность файлов и каталогов представляет собой единое дерево. Са-ма система, выполняя поиск файлов по имени, начиная с корня, требовала установки необходимых дис-ков.

 

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

 

Технически это осуществляется с помощью создания в корневой файловой системе специальных пустых каталогов (см. также следующую лекцию). Специальный системный вызов mount ОС Unix позволяет подключить к одному из этих пустых каталогов корневой каталог указанного архива файлов. После мон - тирования общей файловой системы именование файлов производится так же, как если бы она с самого начала была централизованной. Задачей ОС является беспрепятственный проход точки монтирования при получении доступа к файлу по цепочке имен. Если учесть, что обычно монтирование файловой сис-темы производится при загрузке системы, пользователи ОС Unix обычно и не задумываются о происхо-ждении общей файловой системы.

 

Операции над директориями

 

Как и в случае с файлами, система обязана обеспечить пользователя набором операций, необходимых для работы с директориями , реализованных через системные вызовы. Несмотря на то что директории - это файлы, логика работы с ними отличается от логики работы с обычными файлами и определяется природой этих объектов, предназначенных для поддержки структуры файлового архива . Совокупность системных вызовов для управления директориями зависит от особенностей конкретной ОС. Напомним, что операции над каталогами являются прерогативой ОС, то есть пользователь не может, например, вы-полнить запись в каталог начиная с текущей позиции. Рассмотрим в качестве примера некоторые сис-темные вызовы, необходимые для работы с каталогами [Таненбаум, 2002].

 

• Создание директории. Вновь созданная директория включает записи с именами '.' и '..', однако считается пустой.

• Удаление директории. Удалена может быть только пустая директория.

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


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

• Закрытие директории после ее чтения для освобождения места во внутренних системных табли-цах.

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

• Получение списка файлов в каталоге.

• Переименование. Имена директорий можно менять, как и имена файлов.

• Создание файла. При создании нового файла необходимо добавить в каталог соответствующий элемент.

• Удаление файла. Удаление из каталога соответствующего элемента. Если удаляемый файл при-сутствует только в одной директории, то он вообще удаляется из файловой системы, в противном случае система ограничивается только удалением специфицируемой записи.


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

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






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