Тема 19. Логическая организация файловой системы

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

Типы файлов

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

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

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

Иерархическая структура файловой системы

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

Граф, описывающий иерархию каталогов, может быть деревом или сетью. Ката­логи образуют дерево, если файлу разрешено входить только в один каталог, и сеть, – если файл может входить сразу в несколько каталогов. Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в UNIX – сетевую. В древовидной структуре каждый файл являет­ся листом. Каталог самого верхнего уровня называется корневым каталогом, или корнем (root).

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

Частным случаем иерархической структуры является одноуровневая организа­ция, когда все файлы входят в один каталог.

Имена файлов

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

Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты. В иерархических файловых системах разным файлам разрешено иметь одинако­вые простые символьные имена при условии, что они принадлежат разным ката­логам. То есть здесь работает схема «много файлов – одно простое имя». Для однозначной идентификации файла в таких системах используется так называемое полное имя.

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

В древовидной файловой системе между файлом и его полным именем имеется взаимно однозначное соответствие «один файл – одно полное имя». В файловых системах, имеющих сетевую структуру, файл может входить в несколько катало­гов, а значит, иметь несколько полных имен; здесь справедливо соответствие «один файл – много полных имен». В обоих случаях файл однозначно идентифи­цируется полным именем.

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

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

Монтирование

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

1) На каждом из устройств размещается авто­номная ФС, то есть файлы, находящиеся на этом устройстве, описы­ваются деревом каталогов, никак не связанным с деревьями каталогов на других устройствах. В таком случае для однозначной идентификации файла пользова­тель наряду с составным символьным именем файла должен указывать иденти­фикатор логического устройства. Пример: MS-DOS.

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

Атрибуты файлов

Файл – это не только данные, но и атрибуты. Атрибуты – это информация, описывающая свойства файла. Примеры воз­можных атрибутов файла:

- тип файла (обычный файл, каталог, специальный файл и т. п.);

- владелец файла;

- создатель файла;

- пароль для доступа к файлу;

- информация о разрешенных операциях доступа к файлу;

- времена создания, последнего доступа и последнего изменения;

- текущий размер файла;

- максимальный размер файла;

- признак «только для чтения»;

- признак «скрытый файл»;

- признак «системный файл»;

- признак «архивный файл»;

- признак «двоичный/символьный»;

- признак «временный» (удалить после завершения процесса);

- признак блокировки;

- длина записи в файле;

- указатель на ключевое поле в записи;

- длина ключа.

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

Значения атрибутов файлов могут непосредственно содержаться в каталогах, как это сделано в файловой системе MS-DOS (рис. 19.1, а). На рисунке представлена структура записи в каталоге, содержащая простое символьное имя и атрибуты файла. Здесь буквами обозначены признаки файла: R – только для чтения, А архивный, Н – скрытый, S – системный. Другим вариантом является размещение атрибутов в специальных таблицах, ко­гда в каталогах содержатся только ссылки на эти таблицы. Такой подход реали­зован, например, в файловой системе ufsОС UNIX. В этой файловой системе структура каталога очень простая. Запись о каждом файле содержит короткое символьное имя файла и указатель на индексный дескриптор файла (inode), так называ­ется в ufs таблица, в которой сосредоточены значения атрибутов файла (рис. 19.1, б).

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

Тема 19. Логическая организация файловой системы - №1 - открытая онлайн библиотека

Вопросы для самоконтроля

1. Что такое логическая модель файловой системы?

2. Как связаны полное имя файла и рабочий каталог?

3. Какие типичные операции могут выполняться с каталогм?

4. Какие типичные права доступа могут быть предоставлены определенному пользователю по отношению к некоторому файлу?

5. Какова запись каталога в MS DOS?

6. Какова запись каталога в UNIX?

Литература

1. Бэкон Д., Харрис Т. Операционные системы. – СПб.: Питер; Киев: Издательская группа BHV, 2004. – 800 с.

2. Камер Д., Стивенс Д. Сети TCP/IP, том. 3. Разработка приложений типа клиент/сервер для Linux/POSIX. – М.: Издательский дом "Вильямс", 2002. – 592 с.

3. Митчел М., Оулдем Дж., Самьюэл А. Программирование для Linux. Профессиональный подход. – М.: Издательский дом "Вильямс", 2004. – 288 с.

4. Олифер В.Г., Олифер Н.А. Сетевые операционные системы. – СПб.: Питер, 2005. – 539 с.

5. Стивенс У. UNIX: взаимодействие процессов. – СПб.: Питер, 2003. – 576 с.

6. Стивенс У. UNIX: разработка сетевых приложений. – СПб.: Питер, 2004. – 1086 с.

7. Столлингс В. Операционные системы. – М.: Издательский дом "Вильямс", 2004. – 848 с.

8. Таненбаум Э. Современные операционные системы. – СПб.: Питер, 2002. – 1040 с.

9. Уолтон Ш. Создание сетевых приложений в среде Linux. – М.: Издательский дом "Вильямс", 2001. – 464 с.

Перечень сокращений

API интерфейс прикладного программирования (Application Programming Interface)
DMA - прямой доступ к памяти (Direct Memory Access)
FIFO первым пришел, первым вышел (First In First Out)
PID идентификатор процесса (Process Identifier)
TCP протокол управления передачей (Transmission Control Protocol)
UDP протокол пользовательских дейтаграмм (User Datagram Protocol)
БД база данных
ВС вычислительная система
КС критическая секция
ЛВС локальная вычислительная сеть
НМЛ накопитель на магнитной ленте
ОП оперативная память
ОС операционная система
ОС РВ операционная система реального времени
ПК персональный компьютер
ПО программное обеспечение
УВВ устройство ввода-вывода
ФС файловая система
ЭВМ электронно-вычислительная машина