9.3.Файловая
система UNIX
В системе UNIX пространство имен файловой системы
имеет иерархическую структуру. У него есть единый корневой элемент, но при этом
допускается монтирование в одно пространство нескольких файловых систем
(Рис.9.2).
Рис.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/.
Кроме того, для каждого
пользователя определен начальный каталог, который при регистрации пользователя
в системе назначается рабочим. Процесс может в любой момент сменить рабочий
каталог с помощью системного вызова.
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.