Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_ОС / ТОС_5_ФС_слайды1.doc
Скачиваний:
46
Добавлен:
03.03.2016
Размер:
14.16 Mб
Скачать

Структура файловой системы unix

Рис. 1.4. Типичная файловая система UNIX

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

.

Исконной файловой системой UNIX System V является s5fs.

Файловая система FFS, появилась позже, в версии 4.2BSD UNIX.

Базовая ФС System V (s5fs)

Каждый жесткий диск состоит из одной или нескольких логических час­тей, называемых разделами (partitions).

Расположение и размер раздела определяются при форматировании диска.

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

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

Файловая система s5fs занимает раздел диска и состоит из трех основных компонентов.

  • Суперблок, (superblock). Содержит общую информацию о файловой системе,

например, об ее архитектуре, общем числе блоков и ин­дексных дескрипторов, или метаданных (inode).

  • Массив индексных дескрипторов (ilist).

Содержит метаданные всех файлов файловой системы.

Индексный дескриптор содержит статус­ную информацию о файле и указывает на расположение данных этого файла. Ядро обращается к inode по индексу в массиве ilist. Один inode является корневым (root) inode файловой системы, через него обеспечивается доступ к структуре каталогов и файлов после монтирования файловой системы. Размер массива ilist является фик­сированным и задается при создании файловой системы.

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

  • Блоки хранения данных.

Данные обычных файлов и каталогов хранят­ся в блоках.

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

их число определяет макси­мальный суммарный объем файлов данной файловой системы.

Раз­мер блока кратен 512 байтам,

например файловая система S51K SCO UNIX использует размер блока в 1 Кбайт (отсюда и название).

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

Суперблок

Суперблок содержит информацию, необходимую для монтирования и управления работой файловой системы в целом (например, для размещения новых файлов).

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

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

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

  • Тип файловой системы (s_type)

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

  • Размер массива индексных дескрипторов (s_isize)

  • Число свободных блоков, доступных для размещения (s_tfree)

  • Число свободных inode, доступных для размещения (s_tinode)

  • Флаги (флаг модификации s_fmod, флаг режима монтировани s_fronly)

  • Размер логического блока (512, 1024, 2048)

  • Список номеров свободных inode

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

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

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

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

Каждый файл ассоциирован с одним inode, хотя может иметь несколько имен в файловой системе, каждое из которых указывает на один и тот же inode.

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

  • имени файла, которое содержится в блоках хранения данных ;

  • содержимого файла, которое размещено в блоках хранения данных.

При открытии файла ядро помещает копию дискового inode в память в таблицу in-core inode, которая содержит несколько дополнительных полей. Структура дискового inode (struct dinode) приведена на рис. 4.2 Основные поля дискового inode следующие:

di_mode

Тип файла, дополнительные атрибуты выполнения и права доступа.

di_nlinks

Число ссылок на файл, т. е. количество имен, которые имеет файл в файловой системе.

di_uid, di_gid

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

di_size

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

di_atime

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

di_mtime

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

di_ctime

Время последней модификации inode (кроме модификации полей di_atime, dijntime).

di_addr[13]

Массив адресов дисковых блоков хранения данных.

Индексный дескриптор содержит информацию о расположении данных файла.

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

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

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

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

при использовании тройной косвенной адресации можно обеспечить доступ к 16777216 блокам (256x256x256).

Имена файлов

.

Имя файла хранится в файлах специального типа — каталогах.

Каталог файловой системы s5fs представляет собой таблицу, каждый эле­мент которой имеет фиксированный размер в 16 байтов:

2 байта хранят номер индексного дескриптора файла, а

14 байтов — его имя.

Это накла­дывает ограничение на число inode, которое не может превышать 65535.

Также ограничена и длина имени файла: его максимальный размер — 14 символов.

Первые два элемента каталога адресуют сам каталог (текущий каталог) под именем "." и родительский каталог под именем "..".

При удалении имени файла из каталога (например, с помощью команды rm()), номер inode соответствующего элемента устанавливается равным 0. Ядро обычно не удаляет такие свободные элементы, поэтому размер каталога не уменьшается даже при удалении файлов.

Иллюстрацию этого явления в SCO UNIX можно привести, применив команду hd(lM), обеспечивающую вывод неинтерпретированного содержимого файла (шестнаддатеричный дамп).


Можно заметить, что имен файлов, расположенных во второй части вывода команды hd(lM) на самом деле не существует — об этом свидетельствуют нулевые значения номеров inode, это же подтверждает вывод команды ls(l):

Соседние файлы в папке Лекции_по_ОС