Добавлен: 28.04.2024
Просмотров: 43
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Последний элемент загрузочной записи – программа начальной загрузки IPL2 (Initial Program Loading 2), которая и осуществляет начальную загрузку операционной системы (если диск является загрузочным – содержит базовые файлы операционной системы). Если диск не является загрузочным, исполняемый код в загрузочном секторе выдает следующее сообщение:
Non-System disk or disk error
Replace and press any key when ready
Что означает «Не системный диск или ошибка диска. Замените его и нажмите любую клавишу, когда будете готовы».
Заканчивается загрузочная запись определенной кодовой комбинацией – сигнатурой (AA55h).
Замечание: не следует путать загрузочную запись (Boot Record - BR) с главной загрузочной записью (Master Boot Record - MBR). MBR имеется на физическом диске в одном экземпляре и обеспечивает разбиение жесткого диска на разделы, а BR находится в начале каждого раздела и выполняет загрузку операционной системы и работу файловой системы в каждом из разделов. Процедура загрузки компьютера будет разобрана дальше.
Таблицы размещения файлов
Таблицы размещения файлов - FAT (File Allocation Table) - это таблица которая хранит информацию о месте нахождения частей файлов и каталогов.. От этой таблицы и получилось название всей файловой системы, в которой FAT является лишь одним из элементов. Учитывая крайнюю важность данной структуры, таблица FAT хранится в двух экземплярах, что повышает надежность системы. Конкретный способ организации этой таблицы будет рассмотрен ниже.
Корневой каталог
Директория (или каталог) это список 32-байтных элементов, каждый из которых описывает какой-либо файл или каталог. Есть лишь одна специальная директория, которая всегда должна присутствовать на диске, это корневая директория (Root Directory), которая располагается сразу после последней копии FAT. Файловая система имеет древовидную структуру – в корневом каталоге располагаются 32-байтовые элементы, которые содержат информацию о других (вложенных) каталогах, те в свою очередь содержат вложенные каталоги следующего уровня и так далее.
Размер корневого каталога задается при форматировании и определяет максимальное количество файлов и каталогов, которые могут быть описаны в корневом каталоге (В FAT32 корневой можно свободно наращивать по необходимости, подобно любому другому каталогу.).
Область файлов и каталогов, понятие кластера
После корневого каталога на диске следуют сектора, где собственно и хранятся файлы и каталоги (все каталоги кроме корневого тоже можно рассматривать как особые файлы). Эта область называется областью файлов и каталогов (File and Directory Data Region) или просто областью данных. Область данных предназначена для размещения всех файлов и всех каталогов, кроме корневого каталога.
Вся эта область разделена на так называемые кластеры. Кластер (cluster) – это логическая единица хранения данных, объединяющая группу секторов. Например, на дисках с размером секторов в 512 байт, 512-байтный кластер содержит один сектор, тогда как 4-килобайтный кластер содержит восемь секторов. Это наименьшее место на диске, которое может быть выделено для хранения файла.
Размер кластера (число секторов) выбирается кратным степени числа 2 (размер кластера может быть описан формулой 2n*512). Это означает, что кластер может иметь размер 512, 1024, 2048, 4096 и.т.д. байт. Конкретный размер кластера на диске задается при его форматировании в зависимости oт объема диска и размера FAT Файл на диске занимает целое число кластеров, от одного до всех кластеров, входящих в область данных. Количество файлов на диске не может превышать количества кластеров
Каждый кластер имеет свой номер, который может использоваться для указания места на диске.
Структура каталога и дескриптора файла
Как мы уже говорили, любой каталог содержит 32-байтовые элементы – дескрипторы (Descriptor – дословно описатель, описательный элемент), описывающие файлы и другие каталоги. Поля дескриптора описывают различные характеристики файла (или каталога). Приведем формат дескриптора файла (Таблица 6):
Таблица 6 Формат дескриптора файла
Размер (байт) | Поле |
8 | Имя файла или каталога |
3 | Расширение имени файла |
1 | Атрибуты файла. |
2 | Время создания файла или время его последней модификации |
2 | Дата создания файла или время его последней модификации |
2 | Номер первого кластера, распределённого файлу |
4 | Размер файла в байтах |
Остановимся на понятии атрибутов файла. Атрибут – признак, дополнительно характеризующий некоторые свойства файла или каталога. В FAT атрибуты занимают один байт, каждый из атрибутов кодируется одним битом. Биты этого байта имеют следующие значения:
Таблица 7. Атрибуты файлов.
Бит | Название атрибута | Перевод | Описание |
0 | R – READ ONLY | только для чтения | Файл предназначен только для чтения, в этот файл нельзя писать и его нельзя стирать. |
1 | Н–HIDDEN | скрытый | Файл скрывается от показа, пока явно не сказано обратное |
2 | S –SYSTEM | системный | Системный файл. Этот бит обычно установлен в файлах, являющихся составной частью операционной системы. |
3 | V–VOLUME | том | Данный дескриптор описывает метку диска. Для этого дескриптора поля имени файла и расширения имени файла должны рассматриваться как одно поле длиной 11 байтов. Это поле содержит метку диска. |
4 | D–DIRECTORY | каталог | Дескриптор описывает файл, являющийся подкаталогом данного каталога. Только операционная система может управлять этим атрибутом. |
5 | А–ARCHIVE | Архивный (требующий архивации) | Файл изменён после резервного копирования или не был скопирован программами резервного копирования (сейчас используется редко) |
Информация, хранимая в атрибутах, используется операционной системой при выполнении файловых операций. Например, значение атрибута DIRECTORY позволяет отличать файл от подчиненного каталога, а по значению атрибута ARCHIVE отбираются файлы для резервного копирования. Атрибут READ ONLY запрещает изменять и удалять файл, а атрибут HIDDEN делает файл «невидимым». Биты атрибутов VOLUME и DIRECTORY может изменить только операционная система, остальные атрибуты могут изменяться пользователем.
Итак, мы видим, что в дескрипторе указывается имя и тип файла, длина, дата создания и некоторые его атрибуты, а также что важно, номер начального кластера этого файла. Если файл занимает один кластер мы имеем полную информацию о его размещении на диске, если файл не помещается в кластер для получении информации о его размещении нужно будет обратиться к таблице размещения файлов (FAT).
Структура FAT
Расположение файлов в кластерах определяется с помощью таблицы распределения файлов FAT. FAT - это связанный список, который обеспечивает возможность фрагментарного расположения файлов на диске (т.е. расположения файлов по частям в разных местах диска). Этот список используется файловой системой для определения последовательности кластеров, выделенных файлу или каталогу, а также для поиска свободного пространства, необходимого для записи новых файлов и каталогов. Число элементов этого списка равно числу кластеров области данных диска. Каждому кластеру из области данных соответствует свой элемент из таблицы FAT.
Иными словами FAT состоит из элементов, элементов в таблице ровно столько, сколько кластеров на диске, и кластеру с номером N соответствует элемент FAT с тем же номером N. Каждый из элементов FAT представляющий один кластер может содержать следующие коды (см. таблицу 8):
Таблица 8. Возможные значения элемента FAT
Код, содержащийся в элементе FAT | Описание |
(0)000h | Доступный (пустой) кластер |
(0)002h до (F)FEFh | Номер следующего кластера |
(F)FF0h до (F)FF7h | Зарезервированный кластер (используется NTFS) |
(F)FF7h | Плохой кластер (BAD) |
(F)FF8h до (F)FFFh | Конец цепочки (EOF) |
Вернемся к задаче определения точного места на диске (номеров кластеров), где располагается файл.
Если файл занимает более одного кластера, то все кластеры, занимаемые файлом, организуются в цепочку кластеров (cluster chain).
Для того чтобы прочитать файл целиком, необходимо найти его дескриптор в каталоге и считать первый кластер, на который ссылается этот дескриптор – это будет начало файла. Далее следует прочитать соответствующий первому кластеру элемент FAT и определить, является ли он последним (соответствующий означает, что кластеру с номером N соответствует элемент из таблицы FAT тоже с номером N). Если прочитанный элемент FAT не содержит признака конца файла (EOF), то он показывает номер следующего кластера цепочки, который также должен быть считан. Снова проверяем очередной элемент FAT. Повторяем это до тех пор, пока очередь не дойдет до последнего кластера в цепочке.
Пример цепочки кластеров
Пусть некоторый каталог содержит дескриптор файла (обозначим его А.txt), в которой содержится ссылка на начальный кластер (кластер № 18) из цепочки кластеров, выделенных этому файлу.
На рисунке 6 обычным шрифтом обозначены номера элементов FAT (номера элементов FAT соответствуют номерам кластеров), а жирным шрифтом обозначены числовые значения, записанные в этих элементах.
Дескриптор файла A.txt
| Фрагмент таблицы FAT (разбит на элементы) | | Фрагмент области данных (разбит на кластеры) |
10 | 0 | | Пустой |
11 | 0 | | Пустой |
12 | 13 | | 1-й кластер файла A.txt |
13 | 14 | | 2-й кластер файла A.txt |
14 | 17 | | 3-й кластер файла A.txt |
15 | 16 | | 1-й кластер другого файла |
16 | EOF | | 2-й (последний) кластер другого файла |
17 | 18 | | 4-й кластер файла A.txt |
18 | 20 | | 5-й кластер файла A.txt |
19 | BAD | | Плохой кластер |
20 | 21 | | 6-й кластер файла A.txt |
21 | 22 | | 7-й кластер файла A.txt |
22 | 23 | | 8-й кластер файла A.txt |
23 | EOF | | 9-й (последний) кластер файла A.txt |
24 | 0 | | Пустой |
25 | 0 | | Пустой |
26 | 0 | | Пустой |
Рисунок 6 Пример цепочки кластеров для файла A.txt
Из приведенного на рисунке 6 фрагмента FAT следует:
Файл занимает цепочку из десяти кластеров: 12–13–14–17–18–20–21–22–23. Каждый элемент указывает на следующий элемент цепочки - значение элемента № 13 равно 14, значение элемента 14 равно 17 и т.д. Последний элемент содержит специальный код EOF (FF8h) - конец файла.
Еще одна цепочка из двух кластеров начинается с кластера № 15 и кончается кластером № 16. Чтобы узнать, какому файлу (или каталогу) распределены эти кластеры, нужно отыскать в каком-либо каталоге диска дескриптор файла, содержащий ссылку на начальный кластер № 15.
Кластер № 19 помечен, как «плохой» (BAD - FF7) и не входит ни в одну из цепочек. При поиске свободных кластеров для записи нового файла этот кластер будет игнорироваться.
Кластеры № 10, 11, 24, 25, 26 пусты (точнее - объявлены таковыми). Они доступны для распределения под вновь записываемые файлы.
Каждая цепочка кластеров, выделенных системой для одного файла (подкаталога), упорядочена в порядке возрастания их номеров.
Форматы таблицы FAT(FAT12, FAT16, FAT32)
Каждый элемент таблицы FAT занимает на диске определенное место, т.е. под него выделяется определенное количество бит. Используются 12-ти, 16 32-битовые элементы FAT. Соответственно файловая система носит название FAT12, FAT16 или FAT32.
Длина элемента FAT определяет разрядность хранимого в нем двоичного числа, а значит и максимальный номер кластера, информация о котором находиться в этом элементе. Поэтому длина элемента FAT ограничивает максимальное количество кластеров, которые могут быть сформированы в рабочей области тома (для FAT12: 212 = 4096; для FAT-16: 216 = 65535; для FAT-32: 232 = 4294967296).
12-битовый формат годиться только для гибких дисков (дискет) с небольшим количеством секторов при этом вся таблица FAT помещается в одном секторе диска.
16-ти и 32-битовые версии FAT были разработаны для жестких дисков. В настоящее время используется в основном FAT32, FAT16 может использоваться только с дисками небольшого объема, которые в настоящий момент уже не применяются. Разберем почему. Пусть нам необходимо организовать файловую систему на диске объемом 4Гбайта (очевидно, что речь идет о Flash-диске). Если мы используем FAT16, количество используемых кластеров на диске может достигать 216. Вычислим размер одного кластера, размер всего диска 4*230 делим на количество кластеров:
Размер кластера = 4*230 / 216 = 216 = 64КБайта
Это значит, что даже для хранения файла размером один байт будет использовано 64 КБайта дисковой памяти, т.е. дисковое пространство используется крайне нерационально. Неиспользованная часть кластера