Главная » Информационные системы » Операционные системы » 59-9.3.Файловая система UNIX

59-9.3.Файловая система UNIX

9.3.Файловая система UNIX

В системе UNIX пространство имен файловой системы имеет иерархическую структуру. У него есть единый корневой элемент, но при этом допускается монтирование в одно пространство нескольких файловых систем (Рис.9.2).

 src=img/9-2.png

Рис.9.2. Иерархическое пространство имен файловой системы.

 

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

Помимо обычных дисковых файлов в UNIX поддерживаются специализированные файлы, предназначенные для доступа к устройствам или для взаимодействия между процессами. Подобные файлы обычно хранятся в каталоге /dev. Например, после открытия файла /dev/hda приложение получает непосредственный доступ к блокам на жестком диске. Доступ к таким файлам разрешен только привилегированным пользователям системы.

Для выполнения операций ввода-вывода операционная система предоставляет стандартные системные вызовы, в частности такие, как:

open(), close(), read(), mount() и другие.

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

mount (′/bin′,′/dev/hda′, R/W)   {монтировать}

В результате устройство, представленное файлом /dev/hda, монтируется в каталог /bin. Признак R/W указывает, что оно может использоваться как для чтения, так и для записи.

Использовать для доступа к файлам их полные имена, заданные относительно корневого каталога, не всегда удобно. Поэтому ядро UNIX связывает с каждым процессом каталог, называемый текущим или рабочим, и все имена интерпретируются как заданные относительно этого каталога, что не только упрощает работу пользователей, но и ускоряет поиск. Например, /bin/sh – это путевое имя, начинающееся с имени корневого каталога, а sh – имя того же файла при условии, что текущим (или рабочим) каталогом является /bin/.

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


Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.

Поделиться

Дисциплины