Структуры данных файловой системы UNIX

Структуры данных в памяти

Для обеспечения доступа к открытым файлам MS-DOS использует системные таблицы двух типов.

Таблица SFT (System File Table) содержит записи о всех файлах, в данный момент открытых программами пользователя и самой ОС. Эта таблица хранится в системной памяти, число записей в ней определяется параметром FILES в файле конфигурации CONFIG.SYS, но не может превышать 255.

Если один и тот же файл был открыт несколько раз, то для него будет несколько записей в SFT.

Каждая запись содержит подробную информацию о файле, в частности, в записи SFT содержатся:

· копия каталожной информации о файле;

· адрес каталожной записи (сектор и номер записи в секторе);

· текущее положение указателя чтения/записи;

· номер последнего записанного или прочитанного кластера файла;

· адрес в памяти программы, открывшей файл;

· режим доступа, заданный при открытии.

Также, в записи SFT содержится значение счетчика ссылок на данную запись из всех таблиц JFT, речь о которых пойдет ниже. Когда этот счетчик становится равным нулю, запись SFT становится свободной, поскольку файл закрыт.

В отличие от единственной SFT, таблицы JFT (Job File Table) создаются для каждой запускаемой программы, поэтому одновременно может существовать несколько таких таблиц. Таблица JFT содержит несколько однобайтовых записей, причем значение каждой записи представляет собой индекс (номер записи) в таблице SFT. Размер таблицы по умолчанию составляет 20 записей (байт), но может быть увеличен до 255.

Типы файлов в файловых системах UNIX

  1. Обычные- представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для ОС такие файлы представляют собой просто последовательность байтов.
  2. Каталоги- это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию - метаданные, позволяющие операционной системе производить операции над этими файлами.
  3. Специальные файлы устройств- обеспечивает доступ к физическому устройству.
  4. Именованные каналы- это файл, используется для связи между процессами
  5. Сокеты - представляет собой двусторонний канал обмена данными между процессами.

Дисковый том UNIX состоит из следующих основных областей, показанных на рисунке:

· блок начальной загрузки (BOOT-сектор); его структура определяется не UNIX, а архитектурой используемого компьютера;

· суперблок – содержит основные сведения о дисковом томе в целом (размер логического блока и количество блоков, размеры основных областей, тип файловой системы, возможные режимы доступа), а также данные о свободном месте на диске;

· массив индексных дескрипторов, каждый из которых содержит полные сведения об одном из файлов, хранящихся на диске (кроме имени этого файла);

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

 

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

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

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

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

В дескрипторе содержатся тип и атрибуты файла, а так же данные о размещении файла.