ОС Unix: файловая система

advertisement
ОС 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 ( )
Download