ОС Unix: файловая система Организация ФС Unix Виды файлов Файл Unix – это специальным образом именованный набор данных, размещенный в файловой системе. Виды файлов: • обычный файл (regular file) • каталог (directory) • специальный файл устройств (special device file) • именованный канал (named pipe) • ссылка (link) • сокет (socket) Права доступа Категории пользователей: • пользователь • группа • все пользователи системы Права • • • на чтение на запись на исполнение Логическая структура каталогов / UNIX BIN ETC TMP MNT DEV LIB USR INCLUDE SYS ........... BIN USER ........... Внутренняя организация ФС Модель версии System V Структура ФС Суперблок Область индексных дескрипторов Блоки файлов Суперблок Суперблок Область индексных дескрипторов Блоки файлов Суперблок файловой системы содержит оперативную информацию о текущем состоянии файловой системы, а также данные о параметрах настройки. Область индексных дескрипторов Суперблок Область индексных дескрипторов Блоки файлов Индексный дескриптор – специальная структура данных ФС, которая ставится во взаимнооднозначное соответствие с каждым файлом Блоки файлов Суперблок Область индексных дескрипторов Блоки файлов Блоки файлов – пространство на системном устройстве, в котором размещается вся информация, хранящаяся в файлах и о файлах, которая не поместилась в предыдущие блоки файловой системы. Работа с массивами номеров свободных блоков N свободно Выделение свободных блоков 0 Работа с массивом свободных ИД • • Освобождение ИД • Есть свободное место – номер –> элемент массива • Нет свободного места – номер “забывается” Запрос ИД • Поиск в массиве • Массив пустой – обновление массива • Массив не пустой - ok Индексные дескрипторы имя 1 имя 2 ..... индексный дескриптор содержимое файла имя n Адресация блоков файла Индексный дескриптор Адресное поле 1 … 10 1 11 … 12 128 … 13 128 … 128 128 10 1 1…128 … 128 … 128 … 1…128 … Файл каталог Индексные дескрипторы Root 1 Text Prog.c Usr Peter Unix Bin Bin Lib … 17 … 21 Dev 1 . 17 . 1 .. 1 .. 21 text 25 peter 17 usr 19 bin 3 unix 34 lib 76 bin 21 prog.c 14 dev Установление связей dir 1 dir 2 name 1 name 2 name 3 жесткая связь ИД 17755 ИД 17577 символическая связь …/dir1/name1 Достоинства ФС модели версии System V • • Оптимизация в работе со списками номеров свободных индексных дескрипторов и блоков. Организация косвенной адресации блоков файлов Недостатки ФС модели версии System V • • • • Концентрация важной информации в суперблоке Проблема надежности Фрагментация файла по диску Ограничения на возможную длину имени файла Модель версии FFS BSD Модель версии FFS BSD Группа цилиндров Суперблок Суперблок •копия суперблока •информация о свободных Суперблок блоках (битовый массив) и о свободных индексных дескрипторах •массив индексных дескрипторов (ИД) •блоки файлов Стратегия размещения • Размещение каталога • Равномерность использования блоков данных • Размещение последовательных блоков файлов Внутренняя организация блоков Блоки 0 … 1 Фрагменты 0 1 2 3 4 5 6 7 … Маска 0 0 0 0 0 1 1 1 … N Выделение пространства для файла Дескриптор petya.txt ID Размер Фрагмент 1 5120 00 04 08 Дескриптор vasya.txt ID Размер Фрагмент 2 4608 12 16 10 Блоки данных, разделённые на фрагменты 0 1 2 00 01 02 03 04 05 06 07 08 09 3 10 11 Дескриптор petya.txt ID Размер Фрагмент 1 5632 00 04 20 12 13 01 02 03 04 05 06 07 15 16 17 5 18 19 20 21 22 23 Дескриптор vasya.txt ID Размер Фрагмент 2 4608 12 16 10 Блоки данных, разделённые на фрагменты 0 1 2 00 4 14 08 09 10 3 11 12 13 4 14 15 16 17 5 18 19 20 21 22 23 Структура каталога FFS номер индексного дескриптора размер записи длина имени файла имя файла (до 255 символов) Name1 Name2 Name3 Name4 Name5 Size(Name1) RM Name2 RM Name4 Name1 Name3 Size(Name1) Size(Name2) Name5 NAME \0 – дополненное до кратности 4 байтам Фрагментация каталога Прямой поиск Дефрагментация Кэширование имен файлов Файловая система Ext2 Linux группа блоков 0 суперблок • • • • группа блоков 0 дескриптор группы bitmap блоки ……… группа блоков n bitmap индексн. дескр. индексн. дескр. количество индексных дескрипторов в файловой системе; число блоков в файловой системе; число блоков в группе; число индексных дескрипторов в группе; • • • • блоки файлов адрес bitmap блоков; адрес bitmap индексных дескрипторов; адрес области индексных дескрипторов; количество индексных дескрипторов для каталогов в группе; Файловая система Ext2 Linux 1 2 12 13 14 15 одинарная косвенность двойная косвенность тройная косвенность NFS – сетевая файловая система Сервер Клиент1 Клиент2 Локальный файловый сервер 1 ... VFS – виртуальная файловая система VFS V-узлы (виртуальный индексный дескриптор) Локальный файловый сервер K Клиент NFS Буферный кэш Драйвер HDD 1 ... Драйвер HDD L Сообщения клиент-сервер Сеть Локальные дисковые устройства Клиент : Системный вызов VFS клиент NFS Сервер клиент NFS VFS конкретная локальная файловая система (возврат результата) Опережающее чтение Блокировка доступа к содержимому файла Возможность блокирования области файла любого размера. Системные вызов fcntl ( ), lockf()…. • «жесткая» блокировка (область может быть заблокирована единственный раз). Блокировка с монополизацией. • «мягкая» блокировка (возможны пересечения заблокированных областей). Рекомендательная блокировка. Проверка с использованием fcntl ( )