- •Архитектура семейства ос Unix
- •6.1. История и современное состояние
- •6.2. Архитектура Unix
- •6.3. Процессы
- •6.4. Нити
- •6.5. Планирование процессов
- •6.6. Управление памятью
- •6.7. Средства взаимодействия процессов
- •6.8. Файловые системы
- •Файловая система s5
- •Файловая система ufs
- •Файловая система sfs
- •Файловая система Veritas
- •Другие файловые системы Open Unix
- •Файловая система jfs
- •6.9. Интерфейсы Unix
- •6.10. Unix-системы фирмы Caldera
Другие файловые системы Open Unix
Кроме описанных выше, в Open Unix поддерживаются также файловые системы:
bfs - специализированная файловая система для загрузки и выполнения отдельных программ;
dosfx - файловые системы FAT (FAT-12, FAT-16, FAT-32 и VFAT);
memfs - файловая система для виртуальных дисков в памяти;
cdfs - файловая система CD-ROM.
nfs - сетевая файловая система
Файловая система jfs
ОС IBM AIX работает также с файловыми системами JFS (эта файловая система перенесена также в OS/2 v.5) и JFS2.
О JFS мы расскажем вкратце, так как она во многом похожа на файловые системы, рассмотренные нами выше. Дисковая память выделяется логическими блоками, размер которых может выбираться от 512 байт до 4 Кбайт. Предусматриваются также "частично заполненные" блоки меньшего размера, в которых хранятся последние части файлов, если они слишком малы для выделения им полного блока. Файловый дескриптор содержит 8 прямых адресов блоков с данными файла и 9-й - адрес блока, через который осуществляется косвенная адресация к остальным данным файла - одноуровневая или (для очень больших файлов) двухуровневая.
Несколько более подробно рассмотрим файловую систему JFS2. Загрузочный блок JFS2 имеет размер 4 Кбайт и располагается, конечно, в первых секторах диска. Однако суперблок (его размер также 4 Кбайт) располагается со смещением 32 Кбайт от начала диска. В суперблоке содержится:
размер файловой системы;
число блоков данных в файловой системе;
состояние файловой системы;
размер группы распределения;
размер логического блока.
В файловой системе имеются две битовые карты, используемые для отслеживания состояния и распределения памяти:
карта для файловых индексов;
карта для блоков данных.
Группы распределения являются чисто условным понятием, не поддерживаемым какими-либо конкретными структурами. Они используются файловой системой для того, чтобы поместить в соседние области дисковой памяти те данные, доступ к которым осуществляется, как правило, совместно, и разнести несвязанные данные. Таким образом повышается степень локализации обращений к диску.
Единицей дисковой памяти также является логический блок, размер которого выбирается от 512 байт до 4 Кбайт. Но дисковое пространство для файла выделяется экстентами. Экстент занимает непрерывную область дисковой памяти, состоящую из целого числа логических блоков. Большой экстент может даже находиться в нескольких группах распределения. В плане размещения файла экстент представляется номером первого блока и количеством блоков в экстенте, которое может принимать значения от 1 до 224-1.
Каждый файловый индекс имеет уникальный во всей файловой системе номер и размер 512 байт. Файловые индексы выделяются системой динамически. В каждом файловом индексе содержится:
тип файла;
размер файла и число выделенных файлу блоков;
информация о правах доступа;
число алиасов для файла;
времена доступа и модификации;
данные файла или план размещения файла.
Для небольших файлов сами данные файла содержатся во второй части файлового индекса. Для больших файлов вторая часть индекса содержит корень B+-дерева, через которое адресуются экстенты файла.
Также в B+-деревья структурированы каталоги. Элемент каталога имеет размер 512 байт и содержит имя файла и номер файлового индекса для файла. Имеющиеся в любом каталоге элементы с именами "." и ".." записаны не в элементы каталога, но хранятся в самом файловом индексе каталога.
Драйверы устройств во всех Unix являются частью ядра, а не пользовательскими процессами. Доступ к драйверу на пользовательском уровне возможен через специальные файлы устройств, находящиеся в каталоге /dev. Ядро преобразует файловые операции, выполняемые над этими файлами, в обращения к драйверу.
В системе ввода-вывода различаются два типа устройств - блочные и символьные.
