Тема 19. Логическая организация файловой системы
ОС предоставляет пользователю удобства при работе с данными на дисках. Для этого ОС подменяет физическуюструктуру данных удобной для пользователя логической моделью. Логическая модель файловой системы материализуется в виде дерева каталогов, в символьных составных именах файлов, в командах работы с файлами.
Типы файлов
Обычные файлы, или просто файлы, содержат информацию произвольного характера, которую заносит в них пользователь или которая образуется в результате работы системных и пользовательских программ.
Каталоги – это особый тип файлов, которые содержат системную справочную информацию о наборе файлов, сгруппированных пользователями по какому-либо признаку. В каталог могут входить файлы любых типов, в том числе другие каталоги, за счет чего образуется древовидная структура, удобная для поиска. Каталоги устанавливают соответствие между именами файлов и их характеристиками, используемыми файловой системой для управления файлами.
Специальные файлы – это файлы, ассоциированные с устройствами ввода-вывода, которые используются для унификации механизма доступа к файлам и внешним устройствам. Специальные файлы позволяют пользователю выполнять операции ввода-вывода посредством обычных команд записи в файл или чтения из файла. Современные ФС поддерживают и другие типы файлов (символьные связи, именованные конвейеры, отображаемые в память файлы).
Иерархическая структура файловой системы
Большинство файловых систем имеет иерархическую структуру, в которой уровни создаются за счет того, что каталог более низкого уровня может входить в каталог более высокого уровня.
Граф, описывающий иерархию каталогов, может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть, – если файл может входить сразу в несколько каталогов. Например, в MS-DOS и Windows каталоги образуют древовидную структуру, а в UNIX – сетевую. В древовидной структуре каждый файл является листом. Каталог самого верхнего уровня называется корневым каталогом, или корнем (root).
При такой организации пользователь освобожден от запоминания имен всех файлов, ему достаточно примерно представлять, к какой группе может быть отнесен тот или иной файл, чтобы путем последовательного просмотра каталогов найти его. Иерархическая структура удобна для многопользовательской работы: каждый пользователь со своими файлами локализуется в своем каталоге или поддереве каталогов, и вместе с тем все файлы в системе логически связаны.
Частным случаем иерархической структуры является одноуровневая организация, когда все файлы входят в один каталог.
Имена файлов
Все типы файлов имеют символьные имена. В иерархически организованных файловых системах обычно используются три типа имен файлов: простые, составные (абсолютные и относительные).
Простое, или короткое, символьное имя идентифицирует файл в пределах одного каталога. Простые имена присваивают файлам пользователи и программисты. В иерархических файловых системах разным файлам разрешено иметь одинаковые простые символьные имена при условии, что они принадлежат разным каталогам. То есть здесь работает схема «много файлов – одно простое имя». Для однозначной идентификации файла в таких системах используется так называемое полное имя.
Полное имя представляет собой цепочку простых символьных имен всех каталогов, через которые проходит путь от корня до данного файла.
В древовидной файловой системе между файлом и его полным именем имеется взаимно однозначное соответствие «один файл – одно полное имя». В файловых системах, имеющих сетевую структуру, файл может входить в несколько каталогов, а значит, иметь несколько полных имен; здесь справедливо соответствие «один файл – много полных имен». В обоих случаях файл однозначно идентифицируется полным именем.
Файл может быть идентифицирован также относительным именем. Относительное имя файла определяется через понятие «текущий каталог». Файл идентифицируется цепочкой имен каталогов, через которые проходит маршрут от текущего каталога до данного файла.
И хотя полное имя однозначно определяет файл, операционной системе проще работать с файлом, если между файлами и их именами имеется взаимно однозначное соответствие. С этой целью она присваивает файлу уникальное имя, так что справедливо соотношение «один файл – одно уникальное имя». Уникальное имя существует наряду с одним или несколькими символьными именами, присваиваемыми файлу пользователями или приложениями. Уникальное имя представляет собой числовой идентификатор и предназначено только для ОС. Пример – номер индексного дескриптора в системе UNIX.
Монтирование
ВС может иметь несколько дисковых устройств. Одно физическое устройство с помощью средств ОС может быть представлено в виде нескольких логических устройств, в частности путем разбиения дискового пространства на разделы. Каким образом организовать хранение файлов в системе, имеющей несколько устройств внешней памяти? Два решения:
1) На каждом из устройств размещается автономная ФС, то есть файлы, находящиеся на этом устройстве, описываются деревом каталогов, никак не связанным с деревьями каталогов на других устройствах. В таком случае для однозначной идентификации файла пользователь наряду с составным символьным именем файла должен указывать идентификатор логического устройства. Пример: MS-DOS.
2) Пользователю предоставляется возможность объединять файловые системы, находящиеся на разных устройствах, в единую ФС, описываемую единым деревом каталогов. Такая операция называется монтированием.
Атрибуты файлов
Файл – это не только данные, но и атрибуты. Атрибуты – это информация, описывающая свойства файла. Примеры возможных атрибутов файла:
- тип файла (обычный файл, каталог, специальный файл и т. п.);
- владелец файла;
- создатель файла;
- пароль для доступа к файлу;
- информация о разрешенных операциях доступа к файлу;
- времена создания, последнего доступа и последнего изменения;
- текущий размер файла;
- максимальный размер файла;
- признак «только для чтения»;
- признак «скрытый файл»;
- признак «системный файл»;
- признак «архивный файл»;
- признак «двоичный/символьный»;
- признак «временный» (удалить после завершения процесса);
- признак блокировки;
- длина записи в файле;
- указатель на ключевое поле в записи;
- длина ключа.
Набор атрибутов файла определяется спецификой файловой системы. Пользователь может получать доступ к атрибутам, используя средства, предоставленные для этих целей файловой системой. Обычно разрешается читать значения любых атрибутов, а изменять – только некоторые.
Значения атрибутов файлов могут непосредственно содержаться в каталогах, как это сделано в файловой системе MS-DOS (рис. 19.1, а). На рисунке представлена структура записи в каталоге, содержащая простое символьное имя и атрибуты файла. Здесь буквами обозначены признаки файла: R – только для чтения, А архивный, Н – скрытый, S – системный. Другим вариантом является размещение атрибутов в специальных таблицах, когда в каталогах содержатся только ссылки на эти таблицы. Такой подход реализован, например, в файловой системе ufsОС UNIX. В этой файловой системе структура каталога очень простая. Запись о каждом файле содержит короткое символьное имя файла и указатель на индексный дескриптор файла (inode), так называется в ufs таблица, в которой сосредоточены значения атрибутов файла (рис. 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) |
БД | – | база данных |
ВС | – | вычислительная система |
КС | – | критическая секция |
ЛВС | – | локальная вычислительная сеть |
НМЛ | – | накопитель на магнитной ленте |
ОП | – | оперативная память |
ОС | – | операционная система |
ОС РВ | – | операционная система реального времени |
ПК | – | персональный компьютер |
ПО | – | программное обеспечение |
УВВ | – | устройство ввода-вывода |
ФС | – | файловая система |
ЭВМ | – | электронно-вычислительная машина |