Мегаобучалка Главная | О нас | Обратная связь


Загрузочная запись ВООТ



2019-12-29 177 Обсуждений (0)
Загрузочная запись ВООТ 0.00 из 5.00 0 оценок




Самый первый сектор логического диска (и самый первый сектор на системной дискете) занимает загрузочная запись (Boot Record). Эта запись считывается из активного раздела диска программой главной загрузочной записи (Master Boot Record) и запускается на выполнение. Задача загрузочной записи - выполнить загрузку операционной системы. Каждый тип операционной системы имеет свою загрузочную запись. Даже для разный версий одной и той же операционной системы программа загрузки может выполнять различные действия.

Кроме программы начальной загрузки операционной системы в загрузочной записи находятся параметры, описывающие характеристики данного логического диска. Все параметры располагаются в самом начале сектора, в его так называемой форматированной области. Формат этой области разный для DOS версий до 4.0 и версий после 4.0. Приведем формат записи BOOT для DOS версий, более ранних, чем 4.0 (см. табл.6.6).

Таблица 6.6.

Формат загрузочной записи для DOS версий до 4.0

Смещение Размер Содержимое
(+0)     (+3)     (+11)   (+24)   (+26)   (+28) 3     8     13   2   2   2     Команда JMP xxxx - переход типа NEAR на программу начальной загрузки   Название фирмы-производителя операционной системы и версия, например: «IBM 4.0»   ВРВ - блок параметров BIOS   Количество секторов на дорожке   Количество головок (поверхностей диска)   Количество скрытых секторов, эти сектора могут использоваться для схемы разбиения физического диска на разделы

В самом начале BOOT-сектора располагается команда внутрисегментного перехода JMP. Она нужна для обхода форматированной зоны сектора и передачи управления загрузочной программе, располагающейся со смещением (+30).

Название фирмы-производителя не используется операционной системой.

Со смещением (+11) располагается ВРВ - блок параметров BIOS. Этот блок содержит некоторые характеристики логического диска и используется дисковыми драйверами. Поля ВООТ-сектора со смещениями 24 и 26 содержат соответственно количество секторов на дорожке и количество головок в дисководе. Поле со смещением 28 содержит количество «скрытых» секторов, которые не принадлежат ни одному логическому диску. Эти сектора могут содержать основную или вторичные таблицы разделов диска.

Для MS-DOS версии 4.0 и выше ВООТ-сектор имеет следующий формат (см. табл.6.7).

Первые два поля в ВООТ-секторе для DOS 4.0 и выше аналогичны описанным ранее.

Поле со смещением (+38) всегда содержит символ ‘)’. Этот символ означает, что используется формат расширенной загрузочной записи операционной системы MS-DOS.

Серийный номер диска формируется во время форматирования диска на основе даты и времени форматирования. Это поле может быть использовано для определения факта замены диска в дисководе.

Таблица 6.7.

Формат загрузочной записи для DOS версий 4.0 и выше

Смещение Размер Содержимое
(+0) 3 Команда JMP xxxx - переход типа NEAR на программу начальной загрузки
(+3) 8 Название фирмы-производителя операционной системы и версия, например: «IBM 4.0»
(+11) 25 Extended BPB - расширенный блок параметров BIOS
(+36) 1 Физический номер дисковода (0 - флоппи, 80h - жесткий диск)
(+37) 1 Зарезервировано
(+38) 1 Символ ‘)’ - признак расширенной загрузочной записи DOS 4.0
(+39) 4 Серийный номер диска (Volume Serial Number), создается во время форматирования диска
(+43) 11 Метка диска (Volume Label)
(+54) 8 Зарезервировано, обычно содержит запись типа ‘FAT12', которая идентифицирует формат таблицы размещения файлов FAT

 

Метка диска формируется при форматировании и может быть изменена командой операционной системы LABEL. Одновременно метка диска помещается в корневой каталог.

Поле со смещением 11 содержит расширенный блок параметров BIOS. Он состоит из обычного ВРВ и дополнительного расширения (см. табл.6.8).

Как обычный, так и расширенный блок параметров BIOS содержит байт-описатель среды media. Этот байт может служить для идентификации носителя данных и может содержать следующие величины, характеризующие носитель данных по количеству сторон диска и количеству секторов на дорожке:

FFh - 2 стороны, 8 секторов на дорожке; FEh - 1 стороны, 8 секторов на дорожке;

FDh - 2 стороны, 9 секторов на дорожке; FCh - 1 стороны, 9 секторов на дорожке;

F9h - 2 стороны, 15 секторов на дорожке;      F8h - жесткий диск.

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

Таблица 6.8.

Формат расширенного блока параметров BIOS

Смещение Размер Обозначение Содержимое
(0) 2 sect_siz Количество байтов в одном секторе диска
(+2) 1 Clustsiz Количество секторов в одном кластере
(+3) 2 res_sect Количество зарезервированных секторов
(+5) 1 fat_cnt Количество таблиц FAT
(+6) 2 room_siz Максимальное количество дескрипторов файлов, содержащихся в корневом каталоге диска
(+8) 2 tot_sect Общее количество секторов на носителе данных (в разделе DOS)
(+10) 1 Media Байт-описатель среды носителя данных
(+11) 2 fat_size Количество секторов, занимаемых одной копией FAT

--------------------Расширение стандартного ВРВ--------------------

(+13) 2 Sector Количество секторов на дорожке
(+15) 2 Heads Количество магнитных головок
(+17) 2 hidden_l Количество скрытых секторов для раздела, который по размеру меньше 32 Мбайт
(+19) 2 hidden_h Количество скрытых секторов для раздела, превышающего по размеру 32 Мбайт (только для DOS 4.0)
(+21) 4 tot_secs Общее количество секторов на логическом диске для раздела, превышающего по размеру 32 Мбайт

 

Таблица размещения файлов

Сразу после загрузочного сектора на логическом диске находятся сектора, содержащие таблицу размещения файлов FAT (File Allocation Table). В отечественной литературе иногда можно встретить аббревиатуру ТРФ, однако мы будем пользоваться общепринятым сокращением - FAT.

Для того, чтобы назначение этой таблицы стало более понятным, вспомним ,как организовано хранение информации на различных носителях данных.

Магнитные ленты. Этот вид носителей информации использовался еще в самых первых ЭВМ. В современных компьютерах магнитные ленты используются для разгрузки магнитных дисков. При использовании магнитных лент информация записывается в виде файлов с последовательным доступом.

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

В операционных системах DOS, UNIX, OS/2 при создании файла для него не задается начальное распределение памяти в дорожках или секторах. По мере того как файл увеличивается в размерах, операционная система распределяет этому файлу сектора из числа свободных, не используемых другими файлами. При этом файл располагается не обязательно в смежных областях диска, он может быть разбросан по разным дорожкам и секторам. В этом случае операционная система должна вести учет используемых участков диска. Для каждого файла она должна хранить где-то информацию о том, какому файлу какие участки диска распределены.

В операционной система MS-DOS для хранения этой информации используется таблица размещения файлов.

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

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

Утилиты операционной системы и некоторые специальные утилиты проверяют диск на предмет наличия дефектных областей. Кластеры, которые находятся в этих дефектных областях, отмечаются в FAT как плохие и не используются операционной системой.

Итак, FAT - массив информации об использовании кластеров диска, который содержит односвязные списки кластеров, распределенных файлам. Номера начальных кластеров файлов хранятся в каталогах.

На рис.6.9 показаны фрагменты корневого каталога диска С: и элементы FAT для файлов autoexec.bat и config.sys. Реально эти файлы не используют столько кластеров. Из рисунка видно, что в каталоге для файлов указаны номера первых кластеров (соответственно 11 и 27). Таблица FAT в одиннадцатой ячейке содержит число 12 - номер следующего кластера, распределенного файлу autoexec.bat . Ячейка с номером 12 содержит число 13, и так далее. Последняя ячейка, соответствующая последнему кластеру, распределенному этому файлу, содержит специальное значение - FF. В этом примере все кластеры файлов расположены подряд, но это может быть и не так.

 

 

В DOS существуют два формата FAT - 12-битовый и 16-битовый. Эти форматы используют соответственно 12 и 16 битов для хранения информации об одном кластере диска.

12-битовый формат удобен для дискет с небольшим количеством секторов - вся таблица размещения файлов помещается целиком в одном секторе. Если размер диска такой, что для представления всех секторов двенадцати разрядов недостаточно, можно увеличить размер кластера, например до восьми секторов. Однако большой размер кластера приводит к неэффективному использованию дискового пространства. Это происходит из-за того, что минимальный выделяемый файлу элемент (кластер) имеет слишком большой размер. Даже для файла, имеющего длину 1 байт, выделяется целиком кластер. Значит, если размер кластера составляет 8 секторов, то для хранения 1 байта будет использовано 4 килобайт дисковой памяти.

Сектор загрузочной записи (BOOT-сектор) диска, отформатированного в DOS версии 4.0 и выше, в поле со смещением 36h содержит 8-байтовую строку, идентифицирующую формат FAT. Она имеет вид «FAT12» или «FAT16».

Если разделы на жестком диске создавались утилитой DOS FDISK, формат FAT можно определить, анализируя содержимое поля sys главной загрузочной записи (Master Boot Record). Если это поле содержит значение 1, используется 12-битовый формат, если 4 - 16-битовый.

Опишем подробно формат FAT16.

Первый байт FAT называется «Описатель среды» (Media Descriptor) или байт ID идентификации FAT. Он имеет такое же значение, как и байт-описатель среды, находящийся в ВООТ-секторе логического диска.

Следующие 7 байт для 16-битового формата всегда содержат значение Offh.

Основная часть FAT состоит из 16-битовых ячеек, каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения (см. табл.6.9).

Таблица 6.9.

Формат основной части FAT16

FAT16 Что означает
0000h fff0h-fff6h fff7h fff8h-ffffh 0002h-ffefh Свободный кластер Зарезервированный кластер Плохой кластер Последний кластер в списке Номер следующего кластера в списке

 

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

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

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

Файлы и каталоги

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

Корневой каталог находится сразу за последней копией FAT. Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS и ВООТ-секторе в поле fatsize, количество копий FAT - в поле fatcnt блока ВРВ. Следовательно, перед корневым каталогом находится один ВООТ-сектор и (fatcnt * fatsize) секторов таблицы размещения файлов FAT.

Размер корневого каталога можно определить, исходя из значения поля rootsize. В этом поле при форматировании диска записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байт, поэтому корневой каталог имеет длину (32 * rootsize) байт.

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

RootSecs = (32 * rootsize) / sectsize.

В этой формуле sectsize - размер сектора в байтах, он может быть получен из соответствующего поля ВООТ-сектора.

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

Таблица 6.10.

Структура логического диска

Область логического диска Номер начального сектора на логическом диске
ВООТ-сектор и зарезервированные секторы 0  
Первая копия FAT ressecs - количество резервированных секторов
Вторая копия FAT ressecs + fatsize
Корневой каталог ressecs + (fatsize * fatcnt)
Область данных ressecs + (fatsize * fatcnt) + (32 *rootsize) /sectsize

 

Область данных разбита на кластеры, причем нумерация кластеров начинается с числа 2. Кластеру с номером 2 соответствуют первые сектора области данных. Теперь можно привести формулу, которая позволит связать номер кластера с номерами секторов, занимаемых им на логическом диске:

SectNu = DataStart + ((ClustNu - 2) * clustsize),

где SectNu - номер первого сектора, распределенного кластеру с номером ClustNu; DataStart = ressecs + (fatsize * fatcnt) + (32 *rootsize) /sectsize); ClustNu - номер кластера, для которого необходимо определить номер первого сектора; clustsize - количество секторов, занимаемых кластером, находится в блоке параметров BIOS.

Любой каталог содержит 32-байтовые элементы - дескрипторы, описывающие файлы и другие каталоги. Приведем формат дескриптора (см. табл.6.11).

Таблица 6.11.

Формат дескриптора файла (каталога)

Смещение Размер Содержимое
(+0) 8 Имя файла или каталога, выровненное на левую границу и дополненное пробелами
(+8) 3 Расширение имени файла, выровненное на левую границу и дополненное пробелами
(+11) 1 Атрибуты файла
(+12) 10 Зарезервировано
(+22) 2 Время создания файла или время его последней модификации
(+24) 2 Дата создания файла или дата его последней модификации
(+26) 2 Номер первого кластера, распределенного файлу
(+28) 4 Размер файла в байтах

 

Байт атрибутов является принадлежностью каждого файла. Биты этого байта имеют следующие значения:

0 - файл предназначен только для чтения, в этот файл нельзя писать и его нельзя стирать;

1 - скрытый файл, этот файл не будет появляться в списке файлов, создаваемом командой операционной системы DIR;

2 - системный файл. Этот бит обычно установлен в файлах, являющихся составной частью операционной системы;

3 - данный дескриптор описывает метку диска. Для этого дескриптора поля имени файла и расширения имени файла должны рассматриваться как одно поле длиной 11 байт. Это поле содержит метку диска;

4 - дескриптор описывает файл, являющийся подкаталогом данного каталога;

5 - флаг архивации. Если этот бит установлен в 1, то это означает, что данный файл не был выгружен утилитой архивации (например, программой BACKUP);

6-7 - зарезервированы.

Обычно файлы имеют следующие комбинации битов в байте атрибутов:

0 - обычные файлы (тексты программ, загрузочные модули, пакетные файлы);

7 - только читаемые, скрытые, системные файлы. Такая комбинация битов байта атрибутов используется для файлов операционной системы IO.SYS, MSDOS.SYS;

8 - метка тома. Дескриптор метки тома может находиться только в корневом каталоге логического диска;

10h - дескриптор, описывающий каталог;

20h - обычный файл, который не был выгружен утилитами BACKUP или XCOPY.

В любом каталоге, кроме корневого, два первых дескриптора имеют специальное назначение.

Первый дескриптор содержит в поле имени строку «..». Этот дескриптор указывает на содержащий его каталог. Т.е. каталог имеет ссылку сам на себя.

Второй специальный дескриптор содержит в поле имени строку «..». Этот дескриптор указывает на каталог более высокого уровня.

Если в поле номера первого занимаемого кластера дескриптора с именем «..» находится нулевое значение, это означает, что данный каталог содержится в корневом каталоге.

Таким образом, в древовидной структуре каталогов имеются ссылки как в прямом, так и в обратном направлении. Эти ссылки можно использовать для проверки сохранности структуры каталогов файловой системы.

При удалении файла первый байт его имени заменяется на байт E5h (символ ’x’). Все кластеры, распределенные файлу, отмечаются в FAT как свободные. Если вы только что удалили файл, его еще можно восстановить, так как в дескрипторе сохранились все поля, кроме первого байта имени файла. Но если на диск записать новые файлы, то содержимое кластеров удаленного файла будет изменено и восстановление станет невозможным.

Остановимся подробнее на полях времени и даты создания или последней модификации файла. DOS обновляет содержимое этих полей после любой операции, изменяющей содержимое файла - создания файла, перезаписи содержимого файла, добавления данных в файл или обновления содержимого файла. После обновления файла DOS устанавливает бит архивации пятого байта атрибутов в 1.

Формат поля времени показан на рис.6.10.

Старшие пять битов содержат значение часа модификации файла, шесть битов с номерами 5-10 содержат значение минут модификации файла, и, наконец, в младших 5 битах хранится значение секунд, деленное на 2. Для того, чтобы время обновления файла уместилось в шестнадцати битах, пришлось пойти на снижение точности времени до двух секунд.

Формат даты обновления файла напоминает формат времени и показан на рис.6.11.

Для того, чтобы получить значение года обновления файла, необходимо прибавить к величине, хранимой в старших семи битах, значение 1980. Поля месяца и дня каких-либо особенностей не имеют, они полностью соответствуют календарной дате.

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



2019-12-29 177 Обсуждений (0)
Загрузочная запись ВООТ 0.00 из 5.00 0 оценок









Обсуждение в статье: Загрузочная запись ВООТ

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (177)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)