Лабораторная № 3 «Файловая система UNIX» по Операционным системам (Иванько А. Ф.)

Кирилл Николоев вт, 28.03.2017 17:21

Логическая организация файловой системы Файловая система UNIX характеризуется: иерархической структурой защитой информации в файлах трактовкой периферийных устройств как файлов существованием “жестких ссылок” (hard link) и “символических ссылок” (soft link)

Файловая система организована в виде дерева с одной исходной вершиной, которая называется корнем (записывается: /); Каждая вершина в древовидной структуре файловой системы, кроме листьев, является каталогом.

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

Структура файловой системы (рис. 1,2) Имени файла предшествует указание пути поиска, который описывает место расположения файла в иерархической структуре файловой системы. Имя пути поиска состоит из компонент, разделенных между собой наклонной чертой (/); каждая компонента представляет собой набор символов, составляющих имя вершины, которое является уникальным для каталога (предыдущей компоненты), в котором оно содержится. В имя могут включаться практически любые символы (даже перевод строки “\n” (Enter)!).

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

Так, пути /etc/passwd, /bin/who и /usr/src/cmd/who.c указывают на файлы, являющиеся вершинами дерева на рис. 1 Программы, выполняемые под управлением системы UNIX, не содержат никакой информации относительно внутреннего формата, в котором ядро хранит файлы данных. Данные в программах представляются как бесформатный поток байтов. Программы могут интерпретировать поток байтов по своему желанию, при этом любая интерпретация никак не будет связана с фактическим способом хранения данных в операционной системе.

Каталоги похожи на обычные файлы - система представляет информацию в каталоге набором байтов, но эта информация включает в себя имена файлов в каталоге в объявленном формате для того, чтобы операционная система и программы, такие как ls (выводит список имен и атрибутов файлов), могли их обнаружить.

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

Пользователи могут создавать файлы, если разрешен доступ на запись к каталогу, в котором создается файл. Вновь созданные файлы становятся листьями в древовидной структуре файловой системы. Монтирование файловых систем

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

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

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

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

Например, на рис. 1 /bin/sh — это путевое имя, начинающееся с имени корневого каталога, обозначаемого как /, a sh — имя того же файла при условии, что текущим каталогом является /bin. Кроме того, для каждого пользователя определен начальный каталог, который при регистрации пользователя в системе назначается рабочим каталогом.

Процесс может в любой момент сменить рабочий каталог с помощью системного вызова chdir(). UNIX поддерживает особый способ навигации по дереву имен вверх от рабочего каталога к корню. Для этой цели в каждый каталог включаются два служебных элемента-обозначения:

«.» - для данного каталога, «» - для родительского. Например, если рабочим каталогом назначен /home/tlh20, то /jmb является путевым именем файла jmb, находящегося в каталоге, родительском по отношению к каталогу home. Если мы находимся в каталоге /dev, то путь ./tty01 указывает файл, полное имя пути поиска для которого /dev/tty01.

Скачать файлы

Похожие документы