Назад

Лекция №8

Системы управления файлами.

Файловая система ОС UNIX

Вопросы:

1.    Файловая система ОС UNIX

·      Общие сведения

·      Структура диска

·      Блок начальной загрузки

·      Суперблок

·      Список свободных блоков

·      Список свободных i-узлов

·      Область индексных дескрипторов

·      Адресация блоков

·      Защита файла

·      Организация каталогов

·      Специальные файлы

·      Утилиты=команды

2. Несколько слов о файловой системе ОС Linux

 

В мире UNIX существует несколко разных видов файловых систем со своей структурой внешней памяти. Наиболее известны традиционная файловая система UNIX System V (s5) и файловая система семейства UNIX BSD (ufs).

Мы будем рассматривать s5.

 

Файл в системе UNIX представляет собой множество символов с произвольным доступом.

Файл имеет такую структуру, которую налагает на него пользователь.

 

Файловая система Unix, это иерархическая, многопользовательская файловая система.

Файловая система имеет древовидную структуру. Вершинами (промежуточными узлами) дерева являются каталоги со ссылками на другие каталоги или файлы. Листья дерева соответствуют файлам или пустым каталогам.

Замечание. На самом деле файловая система Unix не является древообразной. Дело в том, что в системе имеется возможность нарушения иерархии в виде дерева, так как имеется возможность ассоциировать несколько имен с одним и тем же содержимым файла.

 

 

Структура диска

 

Диск разделен на блоки. Размер блока данных определяется при форматировании файловой системы командой mkfs и может быть установлен 512, 1024, 2048, 4096 или 8192 байтов. 

Считаем по 512 байт (размер сектора).

Дисковое пространство делится на следующие области (см. рис.):

·      загрузочный блок;

·      управляющий суперблок;

·      массив i-узлов;

·      область для хранения содержимого (данных) файлов;

·      совокупность свободных блоков (связанных в список);

 

Блок  начальной загрузки

 

 

            Суперблок

 

                 i - узел

                    . . .

                 i - узел

 

 

                Данные

 

 

 

Замечание. Для файловой системы UFS - все это для группы цилиндров повторяется (кроме Boot-блока) + выделена специальная область для описания группы цилиндров

 

Блок начальной загрузки

 

Блок размещен в блоке №0. (Вспомним, что размещение этого блока в нулевом блоке системного устройства определяется аппаратурой, так как аппаратной загрузчик всегда обращается к нулевому блоку системного устройства. Это последний компонент файловой системы, который зависит от аппаратуры.)

Boot-блок содержит программу раскрутки, которая служит для первоначального запуска ОС UNIX. В файловых системах s5 реально используется boot-блок только корневой файловой системы. В дополнительных файловых системах эта область присутствует, но не используется.

 

Суперблок

 

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

В частности суперблок содержит следующую информацию

·      количество i-узлов (индексных дескрипторов);

·      размер раздела ???;

·      список свободных блоков;

·      список свободных i-узлов;

·      и другое.

 

Обратим внимание! Свободное пространство на диске образует связанный список свободных блоков. Этот список хранится в суперблоке.

Элементами списка являются массивы из 50 элементов  (если блок = 512 байт, то элемент = 16 бит):

·      в элементах массива №№1-48 записаны номера свободных блоков пространства блоков файлов с 2 до 49.

·      в №0 элементе содержится указатель на продолжение списка, а

·      в последнем элементе (№49) содержится указатель на свободный элемент в массиве.

 

Если какому-то процессу для расширения файла требуется свободный блок, то система по указателю (на свободный элемент) выбирает элемент массива, и блок с №, хранящимся в данном элементе, предоставляется файлу. Если происходит сокращение файла, то высвободившиеся номера добавляются в массив свободных блоков и корректируется указатель на свободный элемент.

 

Так как размер массива — 50 элементов, то возможны две критические ситуации:

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

 

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

 

Список свободных i-узлов. Это буфер, состоящий из 100 элементов. В нем находится информация о 100 номерах i-узлов, которые свободны в данный момент.

 

!

 Суперблок всегда находится в ОЗУ

Þ все операции (освобождение и занятие блоков и i-узлов происходят в ОЗУ Þ минимизация обменов с диском.

Но! Если содержимое суперблока не будет записано на диск и выключено питание, то возникнут проблемы (несоответствие реального состояния файловой системы и содержимого суперблока). Но это уже требование к надежности аппаратуры системы.

 

Замечание. В файловых системах UFS для повышения устойчивости поддерживается несколько копий суперблока (по одной копии на группу цилиндров)

 

Область индексных дескрипторов

 

Это массив описаний файлов, называемых i-узлами (i-node).(64-х байтные ?)

 

Каждый индексный описатель (i-узел) файла содержит:

·      Тип файла (файл/каталог/специальный файл/fifo/socket)

·      Атрибуты (права доступа) - 10

·      Идентификатор владельца файла

·      Идентификатор группы-владельца файла

·      Время создания файла

·      Время модификации файла

·      Время последнего доступа к файлу

·      Длина файла

·      Количество ссылок к данному i-узлу из различных каталогов

·      Адреса блоков файла

! Обратите внимание. Здесь нет имени файла

 

Рассмотрим подробнее как организована адресация блоков, в которых размещен файл. Итак, в поле с адресами находятся номера первых 10 блоков файла.

Если файл превышает десять блоков, то начинает работать следующий механизм: 11-й элемент поля содержит номер блока, в котором размещены 128(256) ссылок на блоки данного файла. В том случае, если файл еще больше — то используется 12й элемент поля  — он содержит номер блока, в котором содержится 128(256) номеров блоков, где каждый блок содержит 128(256) номеров блоков файловой системы. А если файл еще больше, то используется 13 элемент — где глубина вложенности списка увеличена еще на единицу.

Таким образом мы можем получить файл размером (10+128+1282+1283)*512.

Это можно представить в следующем виде:

Адрес 1-го блока файла

Адрес 2-го блока файла

...

Адрес 10-го блока файла

Адрес блока косвенной адресации (блока с 256 адресами блоков)

Адрес блока 2-й косвенной адресации (блока с 256 адресами блоков с адресами)

Адрес блока 3-й косвенной адресации (блока с адресами блоков с адресами блоков с адресами)

 

 

Защита файла

Теперь обратим внимание на идентификаторы владельца и группы и биты защиты.

 

В ОС Unix используется трехуровневая иерархия пользователей:

Первый уровень — все пользователи.

Второй уровень - группы пользователей. (Все пользователи подразделены на группы.

Третий уровень - конкретный пользователь (Группы состоят из реальных пользователей). В связи с этой трехуровневой организацией пользователей каждый файл обладает тремя атрибутами:

1) Владелец файла. Этот атрибут связан с одним конкретным пользователем, который автоматически назначается системой владельцем файла. Владельцем можно стать по умолчанию, создав файл, а также есть команда, которая позволяет менять владельца файла.

2) Защита доступа к файлу. Доступ к каждому файлу ограничивается по трем категориям:

· права владельца (что может делать владелец с этим файлом, в общем случае — не обязательно все, что угодно);

· права группы, которой принадлежит владелец файла. Владелец сюда не включается (например, файл может быть закрыт на чтение для владельца, а все остальные члены группы могут свободно читать из этого файла;

· все остальные пользователи системы;

 

По этим трем категориям регламентируются три действия: чтение из файла, запись в файл и исполнение файла (в мнемонике системы R,W,X, соответственно). В каждом файле по этим трем категориям определено — какой пользователь может читать, какой писать, а кто может запускать его в качестве процесса.

 

Организация каталогов

 

Каталог с точки зрения ОС — это обычный файл, в котором размещены данные о всех файлах, которые принадлежат каталогу.

 

Элемент каталога состоит из двух полей:

1)   номер i-узла (порядковый номер в массиве i-узлов)и

2)   имя файла:

 

Каждый каталог содержит два специальных имени: ‘.’ - сам каталог; ‘..’ - родительский каталог.

(Для корневого каталога родитель ссылается на него же самого.)

 

В общем случае, в каталоге могут неоднократно встречаться записи, ссылающиеся на один и тот же i-узел, но в каталоге не могут встречаться записи с одинаковыми именами. То есть с содержимым файла может быть связано произвольное количество имен. Это называется связыванием. Элемент каталога, относящийся к одному файлу называется связью.

Файлы существуют независимо от элементов каталогов, а связи в каталогах указывают действительно на физические файлы. Файл «исчезает» когда удаляется последняя связь, указывающая на него.

 

Итак, чтобы получить доступ к файлу по имени, операционная система

1.   находит это имя в каталоге, содержащем файл,

2.   получает номер i-узла файла,

3.   по номеру находит i- узел в области i-узлов,

4.   из i-узла получает адреса блоков, в которых расположены данные файла,

5.   по адресам блоков считывает блоки из области данных.

 

Монтирование файловой системы

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

Запрос от системы mount (на установку носителей и т.п.) позволяет встраивать в иерархию файлов файлы на сменных томах.

Команда mount предназначена для подключения файловой системы, расположенной на некотором устройстве, таким образом, что ее содержимое заменяет собой содержимое заданного в команде каталога.

Команда mount имеет несколько опций, но обязательными аргументами стандартного ее использования являются:

            имя файла блочного устройства и

            имя каталога.

Для монтирования соответствующего тома обычно задают пустой каталог.

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

 

Специальные файлы

 

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

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

 

Например,

файл /dev/console - соответствует консольному терминалу.

Все, что выводится в файл /dev/console, будет просто появляться на экране терминала. При попытке чтения из файла /dev/console, вы будете получать (внимание!), не то, что нарисовано в данный момент на экране, а то, что вводится с клавиатуры.

Специальный файл  /dev/rdsk/m197_c0d0s7 соответствует жесткому диску в целом

Файл  /dev/dsk/m197_c0d0s  соответствует его разделам.

 «Если вы будете читать из этих файлов, то получите все байтики, как они лежат на жестком диске, с нулевого цилиндра и до последнего... А если вы в этот файл что-нибудь запишете, то получите (потом) богатый опыт по переформатированию и разметке жесткого диска.»

/dev/mem- файл, изображающий оперативную память.

/dev/audio- если записать в него файл звукового формата (*.wav, *.au, ...?) - то он будет озвучен динамиком компьютера, а команда cat /dev/audio будет принимать все, что произносится в микрофон.

 

!

Файловая система UNIX позволяет сильно сократить количество реальных обменов с ВЗУ, причем эшелонированная буферизация в ОС Unix делает число этих обменов еще меньше.

Утилиты=команды

 

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

Наиболее употребительные:

cp имя1 имя2 - копирование файла имя1 в файл имя2

rm имя1 - уничтожение файла имя1

mv имя1 имя2 - Рпереименование файла имя1 в файл имя2

mkdir имя - создание нового каталога

rmdir имя- уничтожение каталога

ls имя - выдача содержимого каталога

cat  имя - выдача на экран содержимого файла

chown имя режим - изменение режима доступа к файлу

 

Несколько слов о файловой системе ОС Linux

 

Linux - UNIX-подобная ОС для ПК и рабочих станций.

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

 

Linux поддерживает различные типы файловых систем.

Файловая система Ext2FS создана специально для Linux.  РЕФЕРАТ-ДОКЛАД.

Поддерживает Minix-1 и Xenix.

Реализованы системы управления файлами на основе FAT (для обращения к файлам в разделах с FAT).

Поддерживает ISO-9660 CD-ROM.

Существуют системы управления файлами на томах с HPFS и NTFS (только на чтение).

Существуют системы управления файлами для доступа к FAT32.

 

 

 

 

Литература

 

1.   А.В. Гордеев, А.Ю. Молчанов «Системное программное обеспечение».

2.   Лекции Машечкина (ВМиК3.html)

3.   Специальные файлы UNIX.htm

4.   Основные понятия ОС UNIX и базовые системные вызовы.htm

5.   Unix, базовые принципы и особенности.htm

Назад