3585 СИСТЕМНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЭВМ - Страница 3

Биты 6,7 байта атрибутов не используются.

В заключение следует отметить, что один и тот же файл может иметь несколько атрибутов.

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

15                    11 10                                                          5  4                            0

Часы(0..23)

Минуты(0..59)

Секунды/2(0..29)

Рис. 2.

Шестое поле элемента каталога используется для хранения даты создания или обновления файла. Формат поля даты приведен на рис. 3.

15                                9 8                                                  5 4                             0

Год(0..119)

Месяц(1..12)

День(1..31)

Рис. 3.

 

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

Седьмое поле элемента каталога предназначено для хранения номера начального кластера, выделенного файлу. Номер представляется целым беззнаковым числом, первый байт которого имеет смеще­ние 1Ah. Самый первый кластер пространства данных на диске всегда имеет номер 2.

Восьмое поле является последним в элементе каталога и предназначено для хранения размера файла в байтах как четырехбайтного целого беззнакового числа, причем первый байт со смещением 1Ch является младшим, а последний со смещением 1Fh - старшим. Такое поле допускает размеры файлов до 4 Гб, что значительно больше емкости используемых в настоящее время логических дисков и дискет.

2. Практическая часть

2.1.Чтение и анализ системных областей каталогов

2.1.1. Создать на диске A: средствами NC или DOS файловую структуру следующего вида (рис. 4):

 

 

 

 

 

 

 

 

Рис. 4

Скопировать из текущего  или другого каталога винчестера 2-3 файла длиной 10 - 12 Кб (или создать эти файлы) во все подкаталоги диска A:. Командой LABEL задать диску метку.

2.1.2. Вычислить границы в секторах основных системных областей дискеты.  Построить структуру всего диска (см. рис. 1), указав на ней значение границы каждой области.

2.1.3. С помощью команд отладчика debug l,d прочитать в память необходимое число секторов корневого каталога диска A:. Найти строки дампа, содержащие следующие элементы: а) файлов корневого каталога; б) подкаталогов корневого каталога; в) метки диска. Занести в отчет структуру каждого элемента, заполнив таблицу, аналогичную табл.3.

Таблица 3

Смещение

Размер, байт

Содержимое в 16-ричном коде

Расшифровка содержимого

Метка

 

 

 

 

Файлы корневого каталога

 

 

 

 

Подкаталоги S1, S2

 

 

 

 

2.1.4. По номерам начальных кластеров подкаталогов S1,S2 вычислить соответствующие номера начальных секторов подкаталогов. Прочитать эти секторы в память и проанализировать их содержимое. Найти специальные элементы подкаталогов. Зафиксировать в отчете их структуру и содержимое полей в виде таблицы 4, структура которой аналогична табл. 3.

Найти элементы файлов, зарегистрированных в каждом подкаталоге. Занести в табл. 4 структуру и расшифрованное содержимое полей этих элементов.

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

2.1.5. Выполнить задание п.2.1.4 для подкаталогов S3 - S6 в файловой структуре диска A:. Построить структуру каталогов диска c указанием на ней начальных номеров секторов для каждого подкаталога.

2.2.Чтение, анализ и методика практического применения FAT

2.2.1. Используя результаты п.2.1.2, с помощью команд отладчика l, d прочитать FAT диска A: в память. Содержимое FAT (2-3 первых сектора) зафиксировать в отчете.

2.2.2. Для файловой структуры диска , созданной в п.2.1.1, найти:

а) цепочку кластеров для двух файлов корневого каталога;

б) цепочку кластеров для двух подкаталогов из множества S1-S6;

в) цепочку кластеров для двух файлов любого из подкаталогов.

Результаты вычисления последовательностей номеров кластеров для каждого случая занести в отчет и представить в виде табл. 5.

п/п

Номер преды-

дущего кластера

Четность

 

Результат

х 3

Результат

Div 2 (ад-

рес в FAT)

Элемент

FAT

Адрес сле-

дующего

кластера

Файлы корневого каталога

 

 

 

 

 

 

 

Подкаталоги корневого каталога

 

 

 

 

 

 

 

Файлы подкаталогов

 

 

 

 

 

 

 

 

Таблица 5

Примечание. Для определения номера начального кластера файла или подкаталога запустить отладчик debug, прочитать в память корневой каталог (или подкаталог), найти соответствующие элементы и в них прочитать поле номера начального кластера.

2.2.3. Для произвольного файла на диске A: вычислить номера секторов двух первых кластеров, средствами отладчика прочитать их содержимое в память. Получить распечатку содержимого этих секторов и зафиксировать ее в отчете. Найти номера и прочитать секторы последнего кластера файла. Занести распечатку содержимого этих секторов в отчет. Обратить внимание на степень заполнения последнего кластера.

2.2.4. Выполнить п.2.2.2 для диска A: с помощью программы DISKEDIT.

2.2.5. Используя программу DISKEDIT, прочитать FAT диска D:. Найти и просмотреть цепочку кластеров для 2-3 файлов и подкаталогов рабочего каталога группы. Зафиксировать их номера в отчете.

3.Содержание отчета

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

 

Лабораторная работа  № 3

 

Структура, расчет и восстановление таблицы разделов жесткого диска

1. Теоретическая часть

1.1. Форматы адресации данных LBA и CHS

Физический адрес сектора на диске может быть задан или в формате линейного адреса (LBA), или в фор­мате «цилиндр-головка-сектор» (CHS).

В режиме LBA для обращения к информации на диске используется только один параметр — абсо­лютный (логический) адрес сектора. Счет секторов ведется с нуля, а максимальный номер сектора равен 228-1.

При использовании формата CHS приходится выполнять преобразования адреса сектора данных, к которо­му производится обращение (линейный или логиче­ский адрес), в трехмерную систему координат, включающую номер цилиндра (дорожки) С, номер поверхности диска (головки) Н и но­мер сектора на дорожке S. При этом счет номеров цилиндров и поверхностей ведется с нуля, а счет номеров секторов — с единицы. Если в документации дисковода указано, что он имеет Сmах цилиндров, Hmax поверхностей и Smax секторов на дорожке, то значение С может изменяться от 0 до (Cmax-1), значение Н — от 0 до (Нmax-1), а значение S — от 1 до Smax.

Соответствие между физическим адресом сектора в формате CHS и его логическим номером N определяется следующей формулой: N = (С * Нmax + Н) * Smax + S – 1 или    то же самое словами: АбсСектор = СекторНаДорожке+ВсегоСекторовНаДорожку* (НомерГоловки+ВсегоГоловок*НомерДорожки)—1. Единица вычитается потому, что счет абсолютных секторов ведется с нуля.

Для обратного преобразования N в CHS используется целочислен­ное деление (остаток отбрасывается):

C = N / (Нmах * Smax)

Н = (N - C * Hmax * Smax )/Smax

S = N - (С * Нmах + Н) * SMAX+ 1

1.2. Таблица разделов

В первом секторе жесткого диска хранятся программа его начальной загрузки (до ОС) и данные о разбиении на разделы. Вся эта информация называется MBR (Master Boot Record) — главная загрузочная запись (в некоторых источниках к MBR относят только исполняемый код, хранящийся в данном секторе). Завершается сектор MBR, как и загрузочные секторы разделов (Boot Record), сигнатурой Uk (55h AAh).

MBR занимает самый первый сектор физического диска (цилиндр — 0, головка — 0, сектор — 1). Вся дорожка с MBR считается служебной и информация (кроме одного сектора с самой MBR) туда не записывается. Нас в этом секторе интересует таблица разделов. Она начинается со смещения 1BEh (446) загрузочного сектора, занимает 64 байт и представляет собой последовательность четырех 16-байтовых записей. Каждые 16 байт описывают один раздел. Каждая запись в таблице содержит указание на начало, конец и величину логического диска или раздела. Как правило, на большинстве дисков имеется один или два раздела: Primary и (если есть) Extended (содержит логические разделы). Таблица разделов создается программой FDISK при разбивке винчестера на разделы.

В табл.1 показан пример таблицы разделов, записанной в MBR для диска размером 3.2-Гбайт.

Таблица 1

 

Таблица получена с использованием программы DiskEdit из пакета Norton Utilites. Столбцы в таблице имеют следующий смысл:

1-й столбец — тип раздела (если в разделе установлена файловая система FAT 32, то текстовое значение 1-го столбца в зависимости от версии программы DiskEdit может быть одним из следующих: FAT 32, FAT 32x, BIGDOSx, EXTENDx.);

2-й — признак загрузки;

3, 4, 5-й — в первой строке таблицы здесь указываются координаты (CHS) начала загрузочного сектора (Boot Record) раздела, а во второй строке - координаты вторичной MBR (SMBR) для раздела, следующего по цепочке за тем, который описывается в первой строке;

6, 7, 8-й — в первой строке таблицы здесь записаны координаты последнего сектора раздела (логического диска), а во второй всегда записано одно и то же значение - координаты последнего сектора последнего раздела диска;

9-й — в первой строке таблицы здесь записано смещение (всегда 63) загрузочного сектора BR раздела (от сектора, содержащего соответствующую данному разделу таблицу разделов), а во второй строке записано смещение SMBR – для первой SMBR указывается смещение относительно MBR, для второй SMBR указывается смещение относительно первой SMBR и т.д.;

10-й — размер раздела в секторах (начиная с BR) - здесь для MBR в первой строке указывается размер первичного раздела (C:), во второй – размер расширенного раздела, а для первой SMBR в первой строке – размер логического раздела (D:), во второй – размер остатка расширенного раздела (за вычетом раздела D:), для второй SMBR в первой строке - размер логического раздела (E:), во второй – размер остатка расширенного раздела (за вычетом разделов D: и E:) или ноль (если раздел E: - последний) и т.д..

1.3. Расчет таблицы разделов и местоположения основных структур данных на жестком диске

Логический диск (том) файловой системы типа FAT состоит из че­тырех основных областей (рис. 1), расположенных в следующем порядке:

  • загрузочный сектор (FAT16) или резервная область (FAT32);
  • область таблиц размещения файлов (FAT1 и FAT2);
  • область корневого каталога (не существует в FAT32);
  • область данных (файлов и каталогов).

 

Рис.1

В первом секторе логического диска с системой FAT16 располагаются загрузочный сектор раздела (Boot Record) и блок параметров BIOS. Они обозначаются как Boot Sector (BS) и BIOS Parameter Block (BPB) соответственно. Начальный участок данного блока для всех типов FAT идентичен; описание этого участка рассмотрено в лабораторной работе №1.

Различия в структуре загрузочных секторов для разных типов FAT начинаются со смещения 24h. Для FAT12 и FAT16 структура была рассмотрена в предыдущей лабораторной работе, а для FAT32 ее отличие от других типов приведено в таблице 2.

Таблица 2

Наименование

элемента

Смеще-

ние

Размер,

байт

Описание

BPB_FATSz32

24h

4

Количество секторов, занимаемых одной копией FAT

BPB_ExtFlags

28h

2

Номер активной FAT

BPB_FSVer

2Ah

2

Номер версии FAT32: старший байт - номер версии, младший —номер ревизии. В настоящее время используется значение 0:0

PB_RootClus

2Ch

4

Номер кластера для первого кластера корневого каталога (обычно имеет значение 2)

BPB_FSInfo

30h

2

Номер сектора структуры FSINFO в резервной области логического диска (обычно 1)

BPB_BkBootSec

32h

2

Номер сектора (в резервной области логического диска), используемого для хранения резервной копии загрузочного сектора (обычно 6)

BPB_Reserved

34h

12

Область, зарезервированная для дальнейших расширений (должна содержать нули)

BS_DrvNum

40h

1

Номер дисковода для прерывания 13h (для дисководов гибких дисков — от 0 до 3; для жестких дисков счет номеров ведется c 80h)

BS_Reserved1

41h

1

Зарезервировано для Windows

NT, имеет значение 0

BS_BootSig

42h

1

Признак расширенной загрузочной записи (29h).Показывает, что следующие три поля присутствуют

BS_VollD

43h

4

Номер логического диска (формируется при форматировании как комбинация времени и даты создания)

Продолжение таблицы 2

BS_VolLab

47h

11

Метка диска (текстовая строка)

BS_FiISysType

52h

8

Текстовая строка с аббревиатурой типа файловой системы

ица 2. Структура загрузочного сектора для FAT32, начиная со смещения 24h

 

Для расчета параметров таблицы разделов (с целью ее восстановления, например) целесообразно использовать значения полей из Boot Record разделов диска. При этом следует отметить, что в системе FAT32 Boot Record занимает не один сектор, а три, кроме того, секторы 6, 7 и 8 резервной области (для раздела C: это абсолютные сектора 69, 70 и 71) используются для хранения копии загрузочного сектора (Backup Boot Sector).

Расчет параметров (восстановление) таблицы разделов можно проводить по приводимым ниже формулам. В этих формулах использовались следующие обозначения:

а) для главной MBR

  • GM - Generic MBR, нулевой, абсолютный сектор физического диска;
  • GD - смещение первого сектора первичного раздела (начало раздела);
  • GS - количество секторов первичного раздела;
  • GDе - смещение первого сектора всего расширенного раздела. Это сектор, где располагается первый из цепочки Secondary MBR (SMBR) для расширенного раздела;
  • GSе - количество секторов расширенного раздела.

б) для SMBR расширенного и логического раздела

  • AD1 - смещение первого сектора первого логического раздела (D:) в расширенном разделе;
  • AAD1 - номер первого сектора первого логического раздела (D:) в расширенном разделе;
  • AS1 - количество секторов логического раздела;
  • AD2 - смещение первого сектора второго логического раздела (для раздела E:) в расширенном разделе;
  • AAD2 - номер первого сектора второго логического раздела (для раздела E:) в расширенном разделе;
  • AS2 - количество секторов второго логического раздела;
  • ADe1 и ADe2 - смещение первого сектора остатка расширенного раздела для SMBR1 (для раздела D:) и SMBR2 (для раздела E:) ;
  • ASe1 и ASe2 - количество секторов остатка расширенного раздела для SMBR1 (для раздела D:) и SMBR2 (для раздела E:).