Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lectures_OS.doc
Скачиваний:
17
Добавлен:
23.09.2019
Размер:
826.88 Кб
Скачать

Директории в ос Unix

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

Рис. 14.  Вариант записи в директории Unix

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

Особенности файловой системы ОС FreeBSD .

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

Каждая запись в каталоге состоит из 4-х полей фиксированной длины и 1-го переменного.

1852

F

7

my_file

2562

F

9

your_file

1562

D

6

big_dir

не используется

№ inode имя файла

размер записи

тип файла

длинна имени файла

1852

F

7

my_file

не используется

1562

D

7

big_dir

не используется

Поле размер записи служит для отыскания следующей записи. Имя файла заканчивается нулевым байтом и дополняется до 32- битовой границы, а за ним могут следовать дополнительные байты- заполнители. При удалении файлов в каталоге происходит следующее: увеличивается размер предыдущего файла, а байты, занимаемые записью удаленного файла превращается в заполнители предыдущей записи. В последствии эти байты могут использоваться при создании нового файла. Поскольку поиск в каталоге проводится линейно и может быть долгим, то для увеличения производительности было добавлено кэширование имен. Второе существенное изменение – это разбиение раздела на группы цилиндров, у каждой из которой есть свой собственный суперблок, inodes, и блоки данных. Идея такой организации в том, чтобы хранить inodes и блоки данных ближе друг к другу, тогда при обращении к файлам снижается время, затрачиваемое диском на перемещение магнитных головок.

В ФС FreeBSD дополнительно введены такие изменения: вместо 10-ти прямых адресов блоков inode используется 12, а длина адресов увеличена с 3-х до 4-х байтов, это позволяет поддерживать дисковые разделы размером более 2^24 блоков. Кроме того, используется файловая система proc, основная идея этой системы в том, что для каждого процесса в ОС создается подкаталог, в котором хранятся файлы, описывающие состояние процесса. Эти файлы недоступны для просмотра.

Физическая организация ФС MS DOS.

Раздел диска, отформатированного под ФС FAT, состоит из следующих областей:

  • загрузочный сектор;

  • основная копия FAT ( содержит информацию о расширении файлов и каталогов на диске);

  • резервная копия FAT;

  • корневой каталог ( он занимает фиксированную область размером в 32 сектора ( 16 Кбайт), что позволяет хранить 512 записей о файлах и каталогах, так как каждая запись в каталоге занимает 32 байта;

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

Загрузочный сектор (512 байт)

FAT1

FAT2

Корневой каталог (32 байт)

Кластеры данных

Рис. 15. Физическая организация ФС MS DOS.

ФС FAT поддерживает всего 2 типа файлов: обычные файлы и каталоги. ФС распределяет память только у области данных, при чем использует в качестве минимальной единицы дискового пространства так называемый кластер (совместимость секторов диска, которую ОС рассматривает как единое целое). Размер кластера зависит от размера раздела на диске.

Таблица FAT ( обе копии) состоит из массива индексных указателей, количество которых равно количеству кластеров в области данных. Между кластерами и индексными указателями имеется взаимнооднозначное соответствие, т. е. нулевой указатель соответствует файловому кластеру, первый первому и т.д.

Индексный указатель может принимать следующие значения, характерного состояния связанного с ним кластера:

  • кластер свободен (не используется);

  • кластер используется файлом и не является последним кластером файла ( в этом случае индексный указатель содержит номер следующего кластера файла;

  • последний кластер файла;

  • дефектный кластер;

  • резервный кластер.

Таблица FAT является для всех файлов раздела.

В исходном состоянии (после форматирования все кластеры раздела свободны и все индексные указатели, кроме тех, которые соответствуют резервным и дефектным кластерам, принимают значения «кластер свободен».

При размещении файла ОС просматривает FAT начиная с её начала и ищет первый свободный индексный указатель. После его обнаружения в специальном поле записи каталога фиксируется Номер этого указателя. В кластер с этим номером записывается данные файла и он становится первым кластером файла. Если файл умещается в одном кластере, то в указатель заносится специальное значение «последний кластер файла». Если же размер файла больше одного кластера, то ОС продолжает просмотр FAT и ищет следующий указатель на свободный кластер. После его обнаружения в предыдущий указатель заносится номер этого кластера, который теперь становится следующим кластером файла. Процесс повторяется, пока не будут размещены все данные файла.

Т.О. создаётся связанный список всех кластеров файла.

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

Размер таблицы FAT и разрядность используемых в ней индексных указателей определяется количеством кластеров в областях данных. Для уменьшения потерь от неиспользуемого пространства в кластерах их лучше делать небольшими, а для сокращения объема адресной информации и повышении скорости обмена – наоборот большим. Решение принимается с учётом среднего размера файла на диске.

Разрядность индексного указателя должна быть такой, чтобы в ней можно было задать максимальный Номер кластера на диска определённого объема. Существуют несколько разновидностей FAT в связи с различной разрядностью указателей:

FAT 12 позволяет адресовать 4096 кластеров.

FAT 16 – 65536

FAT 32 – 232

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

Таблицы FAT при фиксированной размерности индексных указателей имеет переменный размер, зависящий от объема области данных диска. При удалении файла в первый байт соответствующей записи каталога заносится специальный признак того, что запись свободна, а во все индексные указатели файла признак «кластер свободен».

Остальные данные в записи каталога, в том числе и Номер первого кластера остаются нетронутыми, это оставляет шанс на восстановление файла.

Используемый в FAT метод хранения адресной информации о файлах ненадёжен, поскольку при разрыве списка индексных указателей в одном месте, теряется информация во всех последующих кластерах файла.

Рис 16. Вариант записи в директории MS-DOS

Файловая система Windows 98

Файловая система FAT 32 используется в Windows 98 позволяет поддерживать HDD размером больше 8 Гбайт и размером больше 2 Гбайт. Эта же файловая система используется в Windows ME.

Для того чтобы позволить пользователю работать с длинными именами файлов можно было разработать новую структуру каталога, но в этом случае пользователи использующие Windows 3.x (или DOS) не смогли бы иметь доступ ко всем свойствам файла как из Windows 3.x, так и из Windows 95/98.

Была разработана система поддержки длинных имён, обладающая обратной совместимостью с системой.

Добавлены новые поля:

- поле NT – для совместимости с Window NT и обеспечивает отображение имён в правильном регистре.

- поле СЕК решает проблему невозможности хранения времени суток в 16 битовом поле с точностью до секунды.

Поскольку номера кластеров теперь 32 разрядные, то для хранения старших разрядов номера начального кластера требуется дополнительно 16 бит.

Способ хранения длинных имён.

Каждому файлу назначается два имени: - длинное имя и имя в 8.3

Доступ к файлам может быть получен по любому имени. Когда создаётся файл, имя которого не удовлетворяет параметрам MS-DOS, то Windows 98 создаёт дополнительное имя формата MS-DOS в соответствии с определенным алгоритмом: берутся шесть первых символов имени, при необходимости преобразуются в верхний регистр и к ним добавляется суффикс ~1 (если, такое имя есть, то ~2 и т.д.).

Кроме того, удаляются пробелы и машинные точки, а некоторые символы преобразуются в символы подчёркивания. Имя формата MS-DOS хранится в каталоге прямо в описателе. Если у файла есть данное имя, то оно в одной или нескольких записях каталога, предшествующих описателю в формате MS-DOS. Каждая такая запись содержит до 13 символов формата Unicode. Элементы имени хранятся в обратном порядке, начинаясь сразу перед описателем файла в формате MSDOS.

Для различия записей для файлов в формате MSDOS и фрагментов длинного имени оно содержит значение 0x0F, что соответствует невозможной комбинации атрибутов для описателя файлов MSDOS. Старые программы написанные для MSDOS, при чтении каталога просто игнорируют эти описатели как неверные. Порядок фрагментов имени учитывается в первом байте записи каталога. Последний фрагмент отмечается добавлением к порядковому номеру числа 64.

Поскольку для порядкового номера используется всего 6 бит, то теоретически максимальная длинна имени файла может быть 63*13=819 символов. В поле «контрольная сумма» (checksum) помогает избежать такой проблемы как: при удалении файла с помощью программы, не распознающей длинных имён, а за тем создании нового файла, когда используется освободившаяся строка в каталоге, может возникать ситуация, когда в каталоге есть верная последовательность фрагментов длинного имени файла и следующая за ним запись для короткого имени, однако эти два, имени совершенно не связанны между собой. Но поскольку поле checksum занимает 1 байт, то имеется 1 шанс из 256, что Windows 98 не заметит подмены. Рассмотрим в качестве примера использования длинного имени файла такое имя The quick brown fox jumps over the lazy dog.

Эта фраза содержит все символы английского алфавита. Имя формата, MSDOS будет таким: THEQUI~1 и храниться в последней записи.

Структура каталога обладает некоторой избыточностью, позволяющей обнаруживать проблемы, вызванные вмешательством старых программ. Порядковый номер в начале каждого фрагмента длинного имени не так уж и необходим, поскольку бит 0х40 помечает первый фрагмент, но он обеспечивает дополнительную избыточность. Кроме того поле low=0 во всех фрагментах кроме последнего, что также позволяет избежать неверной интерпретации этих записей каталога старыми программами и разрушения. Байт NT используется системой WinNT и игнорируется системой WIN98.

Байт А содержит атрибуты файла.

Реализация FAT32 концептуально близка к FAT 16, однако вместо массива из 65536 элементов в ней используется столько, сколько нужно, чтобы покрыть все раздел диска. Для экономии памяти система Win98 не хранит сразу все элементы FAT в памяти, а использует так называемое окно, накладываемое на таблицу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]