Исконной файловой системой UNIX System V является s5fs. Файловая система, разработанная в Беркли, FFS, появилась позже, в версии 4.2 BSD UNIX. По сравнению с s5fs она обладает лучшей производительностью, функциональностью и надежностью. Файловые системы современных версий UNIX имеют весьма сложную архитектуру, различную для разных версий. Несмотря на это все они используют базовые идеи, заложенные разработчиками UNIX в AT&T и Калифорнийском университете в Беркли. Поэтому мы проиллюстрируем основные принципы организации файловой системы UNIX на примере базовых систем System V (s5fs) и BSD (FFS), которые, кстати, и сегодня поддерживаются в большинстве версий UNIX.
Когда появилась файловая система FFS, архитектура UNIX поддерживала работу только с одним типом файловой системы. Таким образом, создатели различных версий операционной системы UNIX вынуждены были выбирать одну файловую систему из нескольких возможных. Это неудобство было преодолено введением
Далее мы рассмотрим схему доступа прикладных процессов к файлам — всю цепочку структур данных от файловых дескрипторов процесса до фактических дисковых данных, которую операционная система создает в результате открытия процессом файла и которая затем используется для обмена данными.
В заключение мы рассмотрим буферный кэш — подсистему, которая позволяет значительно увеличить производительность работы с дисковыми данными.
Базовая файловая система System V
Каждый жесткий диск состоит из одной или нескольких логических частей, называемых
Например, диск может состоять из четырех разделов, каждый из которых содержит свою файловую систему. Заметим, что в разделе может располагаться только одна файловая система, которая не может занимать несколько разделов. В другой конфигурации диск может состоять только из одного раздела, позволяя создание весьма емких файловых систем.
Файловая система s5fs занимает раздел диска и состоит из трех основных компонентов, как показано на рис. 4.1.
Рис. 4.1. Структура файловой системы s5fs
□
□
□
Рассмотрим подробнее каждый из перечисленных компонентов.
Суперблок
Суперблок содержит информацию, необходимую для монтирования и управления работой файловой системы в целом (например, для размещения новых файлов). В каждой файловой системе существует только один суперблок, который располагается в начале раздела. Суперблок считывается в память при монтировании файловой системы и находится там до ее отключения (размонтирования).
Суперблок содержит следующую информацию:
□ Тип файловой системы (s_type
)
□ Размер файловой системы в логических блоках, включая сам суперблок, ilist и блоки хранения данных (s_fsize
)
□ Размер массива индексных дескрипторов (s_isize
)
□ Число свободных блоков, доступных для размещения (s_tfree
)
□ Число свободных inode, доступных для размещения (s_tinode
)
□ Флаги (флаг модификации s_fmod
, флаг режима монтирования s_fronly
)
□ Размер логического блока (512, 1024, 2048)
□ Список номеров свободных inode