Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи icon

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи




Скачати 97,91 Kb.
НазваЛабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи
Дата конвертації08.04.2013
Розмір97,91 Kb.
ТипЛабораторна робота
джерело

ЛАБОРАТОРНА РОБОТА №3

Сканування жорсткого диску на предмет пошуку логічних розділів


Мета лабораторної роботи - дослідження структури першого завантажувального сектора (MBR), та алгоритму іменування логічних дисків.


1.Сканування жорсткого диску на предмет пошуку логічних розділів.


Вся інформація, необхідна для початкового завантаження ОС, перебуває в першому секторі жорсткого диска. Ця інформація називається головним записом завантаження — MBR(Master Boot Record). Структура MBR наведена у таблиці 1.1..


Таблиця 1.1 Структура MBR

Зсув

Довжина

Опис

000h

446

Код завантажника

1BEh

64

Таблиця розділів

1BEh

16

Розділ 1

1CEh

16

Розділ 2

1DEh

16

Розділ 3

1EEh

16

Розділ 4

1FEh

2

Сигнатура 55ААh

MBR розташована на початку жорсткого диску за фізичною адресою 0-голівка, 0-доріжка, 1- сектор. При використанні абсолютної адреси номер сектора , за яким розташовано MBR дорівнює нулю. Код читання MBR представлений нижче

//опис шаблону пакета

struct paket{

byte size; //розмір пакету

byte reserw; //резерв

word anzahl; //кількість секторів для читання/запису

dword buf; //буфер, у який здійснюється читання/запис

dword ml; //молодша частина адреси по якій здійснюється читання/запис

dword st; //старша частина адреси по якій здійснюється читання/запис

} Paket;


//ініціалізація елементів пакету

Paket.size=0x10; //розмір пакету дорівнює 16 байтам

Paket.reserw=0; //резерв 0

Paket.anzahl=1; //читаємо один сектор

Paket.buf=(dword)((struct mbr far*)(MBR)); //читаємо у перемінну MBR

Paket.ml=sektor; //sektor = 0

Paket.st=0;


//ініціалізація вхідних параметрів для INT13(читання даних)

_DS=FP_SEG((struct paket far*)(&Paket)); //в DS записуємо сегмент пакета

_SI=FP_OFF((struct paket far*)(&Paket)); //SI записуємо зсув пакета

_AH=0x42; //AH записуємо код функції

_DL=drive; //DL номер жорсткого диску(80h,81h …)

geninterrupt(0x13); //виклик int13h

if(_FLAGS&0x0001) //перевірка на наявність

//Помилка //помилок

}

//Продовження основної програми


Структура MBR містить чотири розділи Partition Table (PT), отже на одному жорсткому диску може бути розташовано до чотирьох основних розділів, один із яких може бути завантажувальним. Якщо розділ є завантажувальним, то розміщений на ньому логічний диск повинен містити готову до роботи копію операційної системи, якій буде передане керування при завантаженні комп'ютера з жорсткого диску.   Структура Partition Table наведена у таблиці 1.2.


Таблиця 1.2 Структура елемента Partition Table

Зсув

Довжина(байт)

Опис

00h

1

Ознака активності розділу

01h

1

Початок розділу - голівка

02h

1

Початок розділу - сектор (біти 0-5), доріжка (біти 6,7)

03h

1

Початок розділу - доріжка

04h

1

Код типу розділу

05h

1

Кінець розділу - голівка

06h

1

Кінець розділу - сектор (біти 0-5), доріжка (біти 6,7)

07h

1

Кінець розділу - доріжка

08h

4

Відносний номер першого сектору розділу

0Ch

4

Кількість секторів розділу


У межах основного розділу може розміщатися тільки один логічний диск. Якщо чотирьох розділів не досить для конфігурування системи, використовується розширений розділ. Розширений розділ може містити кілька логічних дисків.
^

2.Алгоритм іменування дисків



Алгоритм іменування логічних дисків в ОС Windows9х, з файловою системою FAT, складається із трьох основних етапів. Перший етап - пошук та іменування завантажувальних і потенційно завантажувальних логічних дисків. У якості потенційно завантажувального розділу розглядаємо перший з знайдений FAT розділів у таблиці Partition Table , припускаємо що він може містити операційну систему. Другий етап - пошук і іменування логічних дисків, які розташовуються в розширеному розділі. Останній етап алгоритму іменування - пошук і іменування логічних дисків, які залишилися в основних розділах. Узагальнена схема алгоритму наведена на рис 1.1




Рис 1.1 Узагальнена схема алгоритму іменування логічних дисків


^ 2.1 Пошук завантажувальних або потенційно завантажувальних дисків


Алгоритм іменування дисків починається з пошуку завантажувальних або потенційно завантажувальних розділів, граф схема цього участку алгоритму приведена на рис 1.2. Після читання MBR яке було описано вище, потрібно організувати цикл по перегляду елементів PT, на предмет пошуку елемента у першому байті якого код 80h. Знайдений завантажувальний розділ з обліком того, що завантаження відбулося в середовищі Windows 98, буде мати у своєму розпорядженні логічний диск ім'я якого С. На граф схемі алгоритму ці операції виконуються у блоках 1-7.



рис 1.2 Граф схема алгоритму пошуку та іменування завантажувальних або потенційно завантажувальних дисків


Далі по алгоритму йдемо до наступного жорсткого диска й починаючи із цього диска й для всіх наступних виконуємо такі дії: читаємо перший сектор жорсткого диска. Організовуємо цикл по PT для пошуку завантажувального розділу. Якщо завантажувальний розділ знайдений перевіряємо параметр «код системи» на приналежність до FAT розділу. Якщо знайдений завантажувальний є FAT розділом, то логічному диску в цьому розділі привласнюємо чергову букву як ім'я. На граф схемі алгоритму ця частина алгоритму реалізована у блоках 8-13,19. Якщо логічний диск у знайденому завантажувальному розділі має тип файлової системи відмінної від FAT то шукаємо основний розділ з файловою системою FAT, і якщо такий знайдений то даний розділ розглядаємо як потенційно завантажувальний, а логічному диску привласнюємо черговий символ як ім'я. Пошук потенційно завантажувального розділу здійснюється й у тому випадку якщо серед елементів PT відсутній елемент із ознакою завантажувального розділу. На граф схемі алгоритму ці операції виконуються у блоках 14-17. Програмний код реалізуючий цю частину алгоритму наведений нижче


//Пошук та іменування завантажувальних дисків

for(int i=0;i<4;i++) //цикл по чотирьом елементам Partition Table

if(MBR.table[i].boot==0x80)

{

DRIVE[drive-0x80].num_table=i;// запам’ятовуємо проіменований елемент

//Іменуємо диск та виводимо потрібну інформацію

...

//Перехід до наступного жорсткого диску

...

}


//Пошук та іменування потенційно завантажувальних дисків

for(i=0;i<4;i++)

if(FAT(MBR.table[i].sys)) //Перевіряємо-файлова система FAT

{

DRIVE[drive-0x80].num_table=i;//запам’ятовуємо проіменований

//елемент у масиві.

//Іменуємо диск та виводимо потрібну інформацію

...

//Перехід до наступного жорсткого диску

...

}


^ 2.3 Пошук й найменування логічних дисків у розширеному розділі


Наступною частиною алгоритму є пошук і найменування логічних дисків у розширеному розділі. Граф схема цього участку алгоритму приведена на рис 1.3.




рис 1.3 Граф схема алгоритму пошуку та іменування логічних дисків у розширеному розділі


Для пошуку й найменування логічних дисків у розширеному розділі для кожного жорсткого диска виконуємо наступні дії.:

- Організуємо цикл по перегляду елементів PT на предмет пошуку розширеного розділу (код системи 05h або 0Fh блоки 1-5). Якщо такий елемент знайдений , уміст поля відносної адреси цього елемента PT запам'ятовуємо як початок розширеного розділу на аналізованому жорсткому диску. Установлюємо адресу першої вторинної MBR рівну адресі початку розширеного розділу (ADR_BEG_EXP), й по даній адресі читаємо сектор. Перший елемент PT у вторинної MBR характеризує логічний диск у розширеному розділі. Якщо параметр код системи першого елемента PT вторинної MBR відповідає параметру файлової системи FAT то даному логічному диску привласнюємо чергову букву.

Якщо другий елемент PT дорівнює нулю отже інформація в даному розділі жорсткого диска вичерпана, інакше перевіряємо код системи на 05h або 0Fh, і обчислюємо адресу наступної вторинної MBR, як


^ ADR_BEG_EXP + OTN_ADR


де ADR_BEG_EXP - адрес початку розширеного розділу

OTN_ADR - відносний номер першого сектору розділу


По цій адресі зчитуємо чергову вторинну MBR і повторюємо дії виконувані з першої вторинної MBR. На граф схемі алгоритму ці операції виконуються у блоках 6-9. Програмний код реалізуючий даний алгоритм наведений нижче


for(int i=0;i<4;i++)//Цикл по чотирьом елементам Partition Table


//Перевірка на розширений розділ

...

beg_ext=MBR.table[i].smeshenie; //Початок розширеного розділу

next_MBR=0;

int j=i;

do //Цикл по ланцюгам розширеного розділу

{

next_MBR=next_MBR+MBR.table[j].smeshenie;

get_MBR(&MBR,drive,next_MBR); //Читання MBR. MBR-

//структура MBR,

//drive – номер жорсткого диска

// next_MBR–номер першого сектору MBR


if(FAT(MBR.table[0].sys)) //Перевірка на файлову систему FAT

{

//Іменуємо диск та виводимо потрібну інформацію

...

}


j=1;

next_MBR=beg_ext;

}

while(MBR.table[1].sys!=0);

//Перехід до наступного жорсткого диску

}


Приклад структури ланцюжка логічних дисків у розширеному розділі представлений на рис 1.4



Рис1.4 Ланцюжок логічних дисків у розширеному розділі


^ 2.4 Іменування логічних дисків, що залишилися, в основних розділах.


Остання частина алгоритму - іменування логічних дисків, що залишилися, в основних розділах. Граф схема цього участку алгоритму приведена на рис 1.4. Для цього на кожному жорсткому диску переглядаємо елементи PT на предмет пошуку логічних дисків FAT, які не були охоплені першим пунктом алгоритму (рис 1.1). Кожному знайденому диску привласнюємо чергову букву.



рис 1.4 Граф схема алгоритм пошуку та іменування логічних дисків залишившихся основних розділах.

Фрагмент коду програми


for(int i=0;i<4;i++) //Цикл по чотирьом елементам Partition Table

//Перевірка на FAT а також, що даний логічний диск ще не проіменован

if(FAT(MBR.table[i].sys)&&(DRIVE[drive-0x80].num_table!=i))

{

//Іменуємо диск та виводимо потрібну інформацію

...

}


^ 3.Контрольні запитання.


1.Головний завантажувальний запис.

2.Порівняння на структурному рівні первинної та вторинної MBR.

3.Поняття основного та розширеного розділу.

4.Ідентифікація завантажувального розділу.

5.Ідентифікація FAT розділу.

6.Ідентифікація розширеного розділу.

7.Абсолютна адресація сектору диску.

8.Використання параметру «відносний номер сектору» у елементі РТ.

9.Обчислювання адреси початку логічного диску у межах розширеного розділу..

10.Обчислення адреси початку вторинної MBR.


4.Завдання.


Скласти програму, що для даної конфігурації технічних засобів визначає кількість логічних дисків, та для кожного з них вигляді таблиці виводить наступну інформацію:

  • ім’я логічного диску

  • тип розділу де знаходиться логічний диск – завантажувальний чи ні

  • номер жорсткого диску де знайден логічний диск.

  • місце знаходження - основний чи розширений розділ

  • тип файлової системи

  • ідентифікатор файлової системи

  • абсолютна адреса початку логічного диску

  • розмір логічного диску


Примітка

  1. Іменування виконувати тільки для дисків типу FAT

  2. Імена дисків повинні співпадати з іменами відповідних дисків у межах ОС.

  3. Програма складається на мові С, С++ та інших С, з відповідним середовищем програмування.

  4. Програма може бути оформлена як DOS так и WIN – додаток.

  5. Доступ до HDD відбувається тільки через INT13h (DOS - додаток), або API – функції (WIN - додаток), але в обох випадках визначення кількості та характеристик логічних дисків відбувається тільки через аналіз списку MBR.

Додати документ в свій блог або на сайт


Схожі:

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconЛабораторна робота №1 дослідження стратегій розподілу та звільнення пам'яті мета даної лабораторної роботи дослідження
Мета даної лабораторної роботи дослідження організації підсистеми керування пам'яттю в реальному режимі

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconЗвіт з лабораторної роботи №3
Ціль роботи: дослідження структури першого завантажувального сектора (mbr), та алгоритму іменування логічних дисків

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconЛабораторна робота№1 «Перевірка закону Бойля – Маріотта» Мета
Мета: встановити залежність між тиском і об'ємом для даної маси газу при ізотермічному процесі

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconЛабораторна робота 6 Моделювання нейронних систем Мета
Мета: ознайомитися із програмою, яка забезпечує широкі можливості для моделювання різноманітних процесів на окремому нейроні

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconЛабораторна робота 4 Залежність абсолютних порогів зорової сенсорної системи
Мета роботи: виміряти поріг зорового аналізатора (за явищем фосфена) та визначити тривалість дії подразника для виникнення реакції...

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconЛабораторна робота №5 ергономічне забезпечення проектування робочого місця верстатника
Мета роботи: освоїти методику і порядок проведення ергономічної оцінки металообробних верстатів; виконати практичне завдання з ергономічної...

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconДокументи
1. /ОПЗ/Лабораторные работы ОПЗ/Лабораторна робота 01.doc
2. /ОПЗ/Лабораторные...

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconДокументи
1. /DSP/Лрь1/Лабораторна робота #1.doc
2. /DSP/Лрь2/Основи...

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconЛабораторна робота 8 Динамометрія. Дослідження максимального м’язового зусилля та силової витривалості м’язів кисті Мета
Мета: засвоїти метод вимірювання сили та витривалості м’язів кисті за допомогою медичного динамометра

Лабораторна робота №3 Сканування жорсткого диску на предмет пошуку логічних розділів Мета лабораторної роботи iconІнформації про систему і файли. Навчитися виконувати всі перелічені дії за допомогою Провідника Windows, Total (Windows) Commander, Far
Складання лабораторної роботи відбувається у діалозі з викладачем. Студенту пропонується в присутності викладача виконати 15 дій...

Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©on2.docdat.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи