Реализация файловых систем
Структура файловой системы
Файл - логическая единица распределения памяти. Он является также совокупностью логически взаимосвязанной информации. Файловая система располагается во внешней памяти (на дисках) и организована поуровням. Структура многоуровневой файловой системы изображена на рис. 11.
Рис. 11.Многоуровневая файловая система.
На верхнем уровне абстракции работают пользовательские программы, использующие высокоуровневые примитивы вида WriteLine(F, X).Уровнем ниже располагаются модули интерфейса логических файлов – логических записей, блоков и операций обмена. Еще ниже следуют модули организации файлов, затем – операции базовой системы файлов. На нижних уровнях располагаются драйверы устройств (управление вводом-выводом) и аппаратура (устройства ввода-вывода и их контроллеры).
Блок управления файлом (File control block - FCB)– структура в памяти, содержащая информацию о файле. Типовая структура блока управления файлом представлена в таблица 3.
Таблица 3. Типовая структура блока управления файлом |
полномочия для работы с файлом |
даты создания, доступа и модификации файла |
владелец файла, группа, список управления доступом |
размер файла |
блоки данных файла |
Системные структуры в памяти для управления файловой системой
При открытии файла и при дальнейшем выполнении операций над ним ОС хранит в памяти целый ряд системных структур, изображенных на рис. 12.
Рис. 12.Структуры ОС в памяти для управления файловой системой.
При открытии файла, при исполнении операции, где указывается путь доступа к файлу в структуре директорий, система находит ссылку на блок управления файлом. При выполнении операций обмена ОС считывает в память блоки данных файла, над которыми выполняются операции. Кроме того, ОС хранит общесистемную таблицу открытых файлов. Для каждого процесса также хранится таблица файлов, открытых только этим процессом.
Ключевые термины
Network File System (NFS)– широко распространенная система общего доступак файлам через локальную сеть.
Абсолютный путь- полный путь доступа к файлу, начиная от логического имени раздела, либо от корневой системной директории.
Атрибуты файла– общие свойства, описывающие содержимое файла.
Блок– логическая единица информации (часть) файла, как правило, объединяющая несколько записей, с целью оптимизации операций ввода-вывода.
Блок управления файлом (File control block - FCB)– структура в памяти, содержащая информацию о файле и используемая операционной системой.
Директория (справочник, папка)- directory, folder– структура во внешней памяти, содержащая символьные имена файлов и других директорий и ссылки на них.
Дополнение к файлу объектного кода (ДФОК):в системе "Эльбрус" - файл, содержащий в унифицированном виде таблицы именованных сущностей, определенных в программе и ее процедурах (метаданные).
Заголовок файла –головная записьфайла, в которой содержатся его атрибуты.
Запись (record) –элементарная единица, часть файла, в терминах которых выполняются операции обмена с файлом.
Защита (Protection)– управляющая информация, задающая полномочия чтения, изменения и исполнения файла.
Контейнер(в системе "Эльбрус") – хранилище файлов на одном или нескольких дисках.
Монтирование– подсоединение отдельного поддерева еще не смонтированной файловой системы к какой-либо вершине (точке монтирования)общего дерева доступных файловых систем.
Набор данных (data set)- термин фирмы IBM для обозначения файла.
Общий доступ (sharing)– возможность доступа к файлам и директориям различным пользователям, в том числе – по локальной сети.
Относительный путь- путь доступа к файлу относительно некоторой текущей директории.
Память файла -его записи, содержащие собственно хранимую в нем информацию.
Путь (path)– многослоговое имя файла или директории, состоящее из имени корневой директории (или логического диска) и последовательности имен директорий последующих уровней.
Раздел (partition) –смежная область дисковой памяти, имеющая свое логическое имя (обычно одна из первых букв латинского алфавита).
Резервное копирование (back-up)– копирование файлов и директорий на внешние носители – ленту (стример), flash-память, внешний переносной жесткий диск, компакт-диск (CD, DVD), с целью их сохранности.
Символическая ссылка– ссылка из элемента одной директории на другую директорию или файл, уже имеющий другой путь доступа.
Cправочник внешних ссылок (СВС)– в системе "Эльбрус": справочник, имеющийся у каждого файла и используемый для хранения его внешних ссылок на другие файлы; элементы СВС адресуются по номерам, а не по именам.
Точка монтирования (mount point)– узел в дереве файловых систем, к которому подсоединяется новая файловая система при монтировании.
Файл (file) –смежная область логического адресного пространства, как правило, хранящаяся во внешней памяти.
Файл объектного кода (ФОК)– в системе "Эльбрус": файл, в котором хранится двоичный код исполняемой программы.
Файловая система– поддерево директорий на некоторой машине, расположенных в одном разделе.
Краткие итоги
Файл – смежная область логического адресного пространства, хранящаяся, как правило, во внешней памяти. В файле могут храниться данные или программа. Файл делится на записи постоянной или переменной длины. Возможны файлы сложной структуры, интерпретируемые программами, их создавшими (например, документ в Microsoft Word). Файлы интерпретируют ОС и обрабатывающие их программы.
Основные атрибуты файла: имя, тип, ссылка на размещение на устройстве, размер, признаки защиты, время создания, чтения и модификации. Информация о файлах хранится в структуре директорий.
Основные операции над файлом: создание, запись, чтение, позиционирование, удаление, сокращение, открытие и закрытие.
Тип файла в большинстве ОС указывается с помощью расширения его имени.
Различаются прямой (по номеру блока) и последовательный (с помощью сдвига текущей позиции) доступ к файлам. Последовательный доступ может быть смоделирован операциями прямого доступа.
Индексные файлы используются для ускорения поиска в больших основных файлах.
Директория – системная структура во внешней памяти, содержащая ссылки на файлы или другие директории.
Файловая система в "Эльбрусе" отличается тем, что файл может быть создан без явной ссылки на него из справочника (директории). Файлы и справочники хранятся в контейнерах – хранилищах из одного или нескольких дисков. Файлы могут ссылаться друг на друга через справочники внешних ссылок, имеющися у каждого файла. Недостатки файловой системы "Эльбруса" – сложность структуры файлов, большое число атрибутов, зависимость операций над файлами от типа внешнего устройства.
Файлы и директории в файловой системе хранятся в разделах – смежных областях дисковой памяти, имеющих свои логические имена.
Основные операции над директорией: поиск файла, создание файла, удаление файла, создание поддиректории, вывод содержимого директории, переименование файла, создание символической ссылки, обход файловой системы.
Различные способы логической организации директорий: одноуровневая, двухуровневая, древовидная, в виде ациклического графа, в виде произвольного графа. Рекомендуется древовидная структура директорий, так как она позволяет организовать поддиректории для каждого пользователя, использовать файлы с одинаковыми именами в директориях различных пользователей и организовывать директории тематически. Структура директорий в виде ациклического графа возникает вследствие совместного использования узлов несколькими поддиректориями. Структура директорий в виде произвольного графа может привести к наличию циклов, обнаружение которых – очень неэффективная и нежелательная операция.
Монтирование файловой системы – это ее подсоединение к узлу уже существующих, активных и используемых файловых систем (точке монтирования).
Общий доступ к файлам и директориям необходим в многопользовательских системах, в том числе – в локальных сетях. Общий доступ контролируется некоторой системой защиты. Система NFS наиболее распространена как система общего доступа к файлам в локальной сети.
Система защиты управляет полномочиями пользователей по выполнению различных действий над файлами. В ОС UNIX задаются полномочия чтения, записи и исполнения для трех групп пользователей - владельца, его группы и всех остальных.
Для реализации файловой системы ОС организует блок управления файлом, содержащий основные атрибуты файла.
Реализация системы файлов имеет иерархическую структуру, на верхнем уровне которой – пользовательские программы, на нижнем – драйверы и устройства ввода-вывода.
Для управления открытием, закрытием файлов и операциями обмена ОС хранит в памяти общую таблицу открытых файлов и таблицы открытых файлов для каждого процесса.
Вопросы для самопроверки:
1. Что такое файл?
2. Какого типа информация может храниться в файле?
3. Какую структуру может иметь файл?
4. Какие программы интерпретируют содержимое файла?
5. Каковы основные атрибуты файла?
6. Каковы основные операции над файлом?
7. Каким образом система определяет тип файла?
8. Какие расширения имен используются в операционных системах?
9. Какие методы доступа к файлам Вам известны?
10. Какие операции определены над файлами прямого доступа?
11. Какие операции определены над файлами последовательного доступа?
12. Что такое индексный файл и для чего он используется?
13. Что такое директория?
14. Каковы особенности, достоинства и недостатки файловой системы "Эльбруса"?
15. Что такое раздел?
16. Каковы основные операции над директорией?
17. Каковы цели логической организации директорий?
18. Какая организация директорий является наиболее предпочтительной и почему?
19. Какие проблемы возникают при организации директорий в виде произвольного графа?
20. Что такое монтирование файловых систем?
21. Что такое точка монтирования?
22. Что такое общий доступ к файлам и почему он необходим?
23. Что такое NFS?
24. Что такое защита файлов?
25. Какие полномочия защиты и для каких пользователей рассматриваются в UNIX?
26. Что такое блок управления файлом?
27. Какие уровни абстракции можно выделить в реализации файловых систем?
28. Какие структуры в памяти создает ОС при открытии файла и для управления операциями обмена?
Упражнения
1. Реализуйте набор основных операций над файлами, используя низкоуровневые примитивы ввода-вывода.
2. Реализуйте операции последовательного доступа к файлам, используя операции прямого доступа.
3. Реализуйте индексные файлы и операции ускоренного поиска информации по основным файлам с использованием индексных файлов.
4. Реализуйте структуру директорий и основные операции над ней, используя операции над файлами. Храните все ссылки в символической форме.
5. Разработайте и реализуйте алгоритм поиска циклических ссылок в структуре директорий.