Вордовские лекции (1115151), страница 7
Текст из файла (страница 7)
Файловые системы можно классифицировать по степени персонификации доступа к содержимому файлов. Соответственно могут быть:
-
однопользовательские файловые системы;
-
многопользовательские файловые системы.
Однопользовательская ФС - система, в которой не регламентируется доступ к содержимому файлов от имени любого пользователя.
Многопользовательские файловые системы предусматривают работу только идентифицированных системой пользователей. Для многопользовательских файловых систем основным свойством является наличие защиты данных, содержащихся в файлах, от несанкционированного доступа.
Свойства файлов:
-
Файл представляет собой некую сущность, имеющую имя и позволяющую оперировать со своим содержимым через ссылку на имя файла.
-
Реальное местосторасположение данных файлов определяется файловой системой и в общем случае закрыто от пользователя.
-
Определен фиксированный программный интерфейс для работы с содержимым файла. Операционная система однозначно определяет набор функций, обеспечивающих обмен с файлом. Обычно, этот набор функций содержит следующие возможности по работе с файлами:
-
Открытие файла. Эта функция обеспечивает установление взаимосвязи между программой и хранящимся на внешнем носителе файлом. Это средство объявляет операционной системе тот факт, что с данным файлом будет работать тот или иной процесс. Операционная система, исходя из этой информации, может принять решения по изменению статуса файла (например, блокировать, разрешить или синхронизировать доступ к этому файлу со стороны других процессов и т.п). При открытии файла система формирует внутренние наборы данных, необходимые для работы с содержимым файла. С этими наборами данных ассоциируется понятие файлового дескриптора.
-
Закрытие файла. Закрытие файла - информация операционной системе о том, что работа с файлом завершена. При этом меняется статус доступа к файлу со стороны процессов. Операция закрытия файла осуществляется двумя функциями:
-
закрыть и сохранить текущее содержимое файла;
-
уничтожить файл.
-
Создание нового файла. Функция создает новый файл. В некоторых ОС создание файла осуществляется по функции открытия файла.
-
Чтение/запись. Обычно обмен с файлами производится некоторыми блоками данных. С одной стороны, размеры этих блоков данных могут варьироваться программистом, с другой стороны, реальные физические ресурсы имеют блочную структура и, следовательно, определенный размер блока. Поэтому эффективность обменов, а, следовательно, и эффективность работы всей ВС в целом, в данном случае зависит от квалификации программиста. Отметим, что в современных операционных системах заложены механизмы сглаживания подобного рода неэффктивности.
-
Управление файловым указателем. С каждым открытым файлом связано такое понятие, как файловый указатель. Этот указатель в каждый момент времени показывает на следующий относительный адрес по файлу, с которым можно произвести обмен. После обмена с данным блоком указатель переносится на позицию через блок. Для организации работы с файлами необходимо уметь управлять этим указателем. В операционных системах определена функция, позволяющая произвольным образом перемещать указатель в пределах файла. Доступ к содержимому файла может быть прямыми и последовательным. Вообще говоря, файловый указатель есть некоторая переменная, доступная программе, которая создается при открытии файла.
-
Персонификация и защита данных. Персонификация – возможность системы «опознавать» конкретного пользователя и ассоциировать с ним его файлы. Защита доступа к содержимому файлов обычно включает в себя права на выполнение следующих действий:
-
чтение
-
запись
-
исполнение содержимого как процесс
Отметим, что персонификация и защита данных – это свойство всей ОС в целом.
4.5.2Стратегии организации файловых систем
Рассмотрим некоторые типовые подходы к организации файловых систем.
4.5.2.1Одноуровневая организация ФС с непрерывными сегментами
На внешнем запоминающем носителе выделяется некоторая непрерывная область. Данные размещаются в подряд идущих единицах этого носителя. В этой области в свою очередь выделяется подобласть для хранения информации о файлах, которая называется каталог. Каталог представляет собой таблицу, которая имеет три колонки: имя файла, координаты начала и конца файла, указанные в блоках. Имя файла в таблице должно быть уникальным (отсюда и термин – “одноуровневая”). При создании файла в эту таблицу добавляется строка с вышеперечисленными характеристиками. При уничтожении соответствующая строка удаляется из таблицы. Функция открытия уже существующего файла сводится к нахождению в каталоге имени файла, определении его начала и конца. Операции чтения/запись происходят почти без дополнительных обменов, так как при открытии файла мы получаем диапазон размещения данных (более того каталог можно хранить в оперативной памяти). Таким образом к несомненным достоинствам следует отнести простоту реализации и эффективность операций обмена.
Как отмечалось выше, особенностью этой организации является физическая непрерывность файла на внешнем носителе. Отсюда вытекает следующая проблема: при создании файла необходимо знать его максимальный размер, так как в случае необходимости добавления данных в файл может не оказаться достататочно места. В этом случае система может отказать в выполнении такой операции или может попытаться найти новую непрерывную область достаточного размера, чтобы туда переписать данные. Последняя операция трудозатратна и приведет к внешней фрагментации, когда появятся незаполненные отрезки памяти между файлами. Выделение файлу места “заведомо достаточного” приведет к внутренней фрагментации. Разумеется можно осуществлять регулярную компрессию данных, но это операция также достаточно трудозатратна.
Такого рода организация может быть пригодна для организации однопользовательской файловой системы. Это объясняется тем, что
- при большом количестве пользователей очень быстро произойдет фрагментация, а постоянный запуск компрессии приведет к неэффективности системы
- ограниченность количества файлов в каталоге и необходимость уникального именования файлов делает многопользовательский режим крайне неудобным.
4.5.2.2Файловая система с блочной организацией файлов
На пространстве внешней памяти выделяется непрерывная область данных, в которой размещается каталог. Вся оставшаяся внешняя память, выделенная для файловой системы, разбивается на блоки, удобные для обмена. Количество строк в каталоге совпадет с количеством этих блоков. Каждая строка таблицы соответствует i-му блоку файловой системы. Каждый файл занимает, как минимум, один блок памяти. Таблица разбивается на столбцы. Поле "имя" содержит имя файла, который занимает данный блок памяти. Поле "атрибуты" содержит различные подполя - имя пользователя, номера блоков, занимаемых файлом. Блоки, принадлежащие одному файлу, физически могут располагаться в произвольном порядке. Такой способ организации файловой системы решает проблему лимитирования размера файла. При создании нового файла его размер будет всегда равным 1 блоку, если при записи в файл его фактический размер превышает размер одного блока, то в таблицу записывается новая строка с именем этого файла и соответствующими атрибутами — это означает, что к файлу присоединяется еще один блок и так далее. Незаполненные строки таблицы образуют список свободной памяти При такой организации исчезает проблема внешней фрагментации, но актуальна проблема внутренней фрагментации. Так как даже если реальный размер файла равен 1 байту, он все равно займет целый блок памяти. Уменьшение размера блока уменьшает внутреннюю фрагментацию, но увеличивает размер таблицы. Последнее усложняет с ней работу. К примеру, при открытии файла необходимо просмотреть всю таблицу, чтобы определить все блоки файла. Если таблица не хранится в оперативной памяти, то увеличивается количество необходимых обменов.
Приведенная организации файловой системы является одноуровневой в рамках одного пользователя, т.е. все файлы связаны в группы по принадлежности к одному пользователю. Таким образом уникальность имен требуется только среди файлов одного пользователя.
4.5.2.3Иерархические файловые системы
За основу логической организации такой файловой системы берется дерево. В корне дерева находится, так называемый, корень файловой системы - каталог нулевого уровня. В этом каталоге могут находиться либо файлы пользователей, либо каталоги первого уровня. Каталоги первого и следующих уровней организуются по аналогичному принципу. Файлы пользователя в этом дереве представляются листьями. Пустой каталог также может быть листом. Таким образом образуется древовидная структура файловой системы, где в узлах находятся каталоги, а листьями являются либо файлы, либо пустые каталоги.
Остановимся на правилах именования в иерархической файловой системе. В данном случае используется механизм, снованный на понятии имени файла (name) и полного имени файла (path_name). Полное имя файла – это путь от корневого каталога до листа (такой путь всегда будет уникальным). Существует также относительное именование, т.е. когда нет необходимости указания полного пути при работе с файлами. Это происходит в случае, когда программа вызывает файл и подразумевается, что он находится в том же каталоге, что и программа. В данном случае появляется понятие текущего каталога, т. е. каталога, на работу с которым настроена файловая система в данный момент времени. В рамках одного каталога имена файлов одного уровня должны быть разными.
Согласно этой иерархии, с каждым из файлов можно ассоциировать атрибуты, связанные с правами доступа. Правами доступа могут обладать как файлы, так и каталоги.
Структура этой системы удобна для организации многопользовательской работы, за счет приведенного выше способа именования и возможности удобного наращивания ФС .
4.6Управление внешними устройствами
Управление устройствами и организация обмена.
Обработка прерываний, учет приоритетов прерываний, буферизация обмена.
5ОС Unix: Файловая система.
5.1Особенности, характеристики Unix:
-
в основном архитектура системы построена на использовании и организации понятий файл и процесс;
-
открытость, прозрачность системы;
-
унификация основных интерфейсов;
-
иерархическая файловая система;
-
развитый аппарат управления и взаимодействия процессов;
-
«переносимость» системы;
-
развитая внутренняя оптимизация работы компонентов системы.
5.2Организация файловой системы Unix. Пользовательский аспект.
Файловая система операционной системы UNIX является примером многопользовательской иерархической файловой системой с трехуровневой организацией прав доступа к содержимому файлов .
Файл Unix – это специальным образом именованный набор данных, размещенный в файловой системе.
OC Unix трактует понятие файла шире традиционного. В частности, в системе в качестве файла рассматриваются :
-
обычный файл (regular file) – традиционный тип файла, содержащий данные пользователя. Интерпретация содержимого файла производится программой, обрабатывающей файл.
-
каталог (directory) – специальный файл, обеспечивающий иерархическую организацию файловой системы. С каталогом ассоциируются все файлы, которые принадлежат данному каталогу.
-
специальный файл устройств (special device file) – cистема позволяет ассоциировать внешние устройства с драйверами и предоставляет доступ к внешним устройствам, согласно общим интерфейсам работы с файлами.
-
именованный канал (named pipe) – специальная разновидность файлов, позволяющая организовывать передачу данных между взаимодействующими процессами;
-
ссылка (link) – позволяет создавать дополнительные ссылки к содержимому файла из различных точек файловой системы;
-
сокет (socket) – средство взаимодействия процессов в пределах сети ЭВМ.
Права доступа к содержимому файлов в системе жестко связаны с организацией пользователей системы. С точки зрения организации прав доступа к содержимому файлов рассматриваются следующие категории пользователей:
-
пользователь – владелец файла;
-
группа – категория, к которой принадлежит пользователь – владелец файла, за исключением самого этого пользователя;
-
все пользователи системы - все остальные пользователи системы за исключением первых двух категорий пользователей.
Для каждой из перечисленных выше категорий определены права на выполнение следующих действий:
-
чтение;
-
запись;
-
исполнение.
Интерпретация этих прав зависит от типа файла. Так для обычных файлов это традиционные права на чтение, запись данных файла и исполнение содержимого файла в качестве процесса. Интерпретация прав доступа для других типов файлов может различаться. Например, для файлов каталогов это:
- право на чтение каталога – получение списка имен файлов;
- право на исполнение каталога – получение дополнительной информации о файлах (т.е. тогда, когда требуется информация, большая чем имя файла), право на использование каталога в качестве текущего, возможность использования имени каталога внутри имени файла;