Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект 58 страниц 2002.doc
Скачиваний:
91
Добавлен:
15.06.2014
Размер:
4.07 Mб
Скачать

Файловая подсистема ос unix

Базовая файловая система UNIX S5FS:

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

Файловая система S5FS состоит из трех основных компонентов:

  1. Суперблок – важнейший компонент файловой системы, содержащий информацию для монтирования и управления работой файловой системы в целом. В каждой файловой системе существует только один суперблок, расположенный в начале раздела. Суперблок считывается в память при монтировании файловой системы и находится там до её отключения или размонтирования. Содержит следующую информацию:

  • тип файловой системы;

  • размер файловой системы в логических блоках, включая суперблок, массив индексных дескрипторов и блоки хранения данных;

  • размер массива индексных дескрипторов;

  • число свободных блоков, доступных для размещения;

  • число доступных индексных дескрипторов, свободных для размещения;

  • флаги;

  • размер логического блока;

  • список номеров свободных индексных дескрипторов;

  • список адресов свободных блоков

Список свободных индексных дескрипторов и список свободных блоков целиком в суперблоке не хранятся. В списке свободных индексных дескрипторов хранится только часть свободных дескрипторов. У каждого дескриптора есть поле, которое показывает, занят дескриптор или нет.

Когда число свободных блоков (дескрипторов) приближается к нулю в списке суперблока, ядро ОС просматривает массив индексных дескрипторов и вновь формируется список свободных индексных дескрипторов.

Для списка свободных блоков такой подход применить не возможно, т.к. по содержимому блока нельзя определить, свободен этот блок или занят. Список свободных блоков может занимать несколько блоков хранения данных, но в суперблоке хранится только один такой блок. Выделение свободных блоков для размещения файла производится с конца списка, находящегося в суперблоке. Нулевой элемент списка является указателем на блок данных, в которых храниться продолжение списка. Когда достигается конец списка, новый блок записывается в суперблок. Такой подход позволяет использовать дисковое пространство под списки пропорционально свободному месту в файловой системе. Когда свободного места становиться мало, список адресов свободных блоков целиком помещен в суперблоке.

Индексный дескриптор

БХД

- – блок хранения данных;

R1 = Rбл*10;

R2 = Rбл *10 + 256* Rбл;

R3 = Rбл *10 + 256*256*Rбл 256* Rбл

R4= Rбл *10 + 256*256*256*Rбл+256*256* Rбл+ 256* Rбл

...

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

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

  2. три группы прав доступа.

  • Владелец.

  • Группа-владелец

  • Остальные пользователи.

  1. поле, определяющее количество имён, которые имеет файл в файловой системе. Когда поле = 0, это значит , что файл удалён.

  2. идентификаторы владельца-пользователя и группы

  3. размер файла в байтах. (для специальных файлов это поле содержит старшие и младшие номера устройства).

  4. время последнего доступа к файлу

  5. время последней модификации файла.

  6. время последней модификации индексного дескриптора (не означает модификацию полей времён).

  7. 12 адресов дисковых блоков хранения данных. Если файл небольшого размера (< R1), то адрес блоков обозначается в индивидуальном дескрипторе. Если файл большего размера (< R2), то хранение происходит в di_addr[10] (первый уровень косвенности). И т.д. используется 3 уровня вложенности:

  • di_addr[10] <R2

  • di_addr[11] <R3

  • di_addr[12] <R4

Такой подход позволяет адресовать файлы достаточно больших размеров (но не бесконечно). Ядро обращается к индексным дескрипторам по индексу в массиве индексных дескрипторов. Один индексный дескриптор является корневым. Через него обеспечивается доступ к структуре каталогов и файлов после монтирования файловой системы. Размер массива индексных дескрипторов является фиксированным и задаётся при создании файловой системы.

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