HDD

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

Спершу небагато про адресацію на вінчестері. Основна одиниця вимірювання - сектор. Розмір сектора - 512 байт. Сектори можна адресувати або безпосередньо по номеру, або задаючи комбіновану адресу, що складається з номера циліндра (доріжки), номера головки (сторони) і номера сектора на доріжці. Переклад з одного в інше проводиться по простенькій формулі: Номер сектора = (номер циліндра X число головок X число секторів) + (номер головки X число секторів) + (номер сектора - 1)

Одиниця віднімається тому, що рахунок секторів ведеться з нуля. Глибше вдаватися до адресації не має сенсу, оскільки тоді доведеться писати окрему статтю про те, чому DOS не розуміє великі диски і якими збоченими способами це лікувалося.

Друга основна одиниця - кластер. Кластер - це декілька секторів, що розглядаються операційною системою як одне ціле. Перехід до кластерів відбувся тому, що розмір таблиці FAT був обмежений, а розмір диска мінявся. У разі FAT16 для диска об'ємом 512 Мб кластер буде величиною 8 Кб, до 1 Гб - 16 Кб, до 2 Гб - 32 Кб і так далі.

MBR (Master Boot Record - основний сектор завантаження).

Розташований в нульовому секторі (циліндр 0, сторона 0, сектор 1). На кожному жорсткому диску є в одному екземплярі і містить в собі багато цікавого. По зсуву 0H (далі для простоти всі зсуви будуть в шістнадцятковій системі) знаходиться сам завантажувач. Його завдання - виявити активний розділ і завантажити його Boot-сектор в пам'ять за адресою 0000:7С00. Далі, по зсуву 1BE знаходиться Partition Table (саме у ній завантажувач і шукає активний розділ). По зсуву 1FE (останні два байти сектора) знаходиться сигнатура 55AA H, що позначає завантажувальний сектор. Вся доріжка на MBR зважає службовою і інформація туди не записується.

Partition Table- таблиця розділів.

Живе в одному секторі з MBR по зсуву 1BE. Розмір PT - 64 байти (на опис одного розділу відводиться 16 байт, так що максимум описується 4 розділи). Для кожного розділу вказано, чи завантажувальний (активний) він (перший байт опису: 80 H - активний, 0H - ні), адреса початку розділу (у циліндрах, головках і секторах), код системи, адреса кінця розділу, логічна адреса початку розділу (у секторах) і кількість секторів в розділі. Подивитися все це в легкотравному вигляді можна за допомогою безсмертної і незамінної програми Diskedit в режимі as partition table. Як правило, на більшості дисків є один або два розділи: Primary DOS і (якщо є) Extended DOS. PT створюється програмою FDISK при розбитті вінчестера на розділи.

Primary DOS Partition (основний розділ)

- важка спадщина старих версій DOS. Зберігся з часів, коли DOS розумів тільки один розділ. Не може бути більше 2 Гб (під FAT 16). Співпадає з першим логічним диском на вінчестері. Тільки Primary Partition може бути завантажувальною. Створюється програмою FDISK.

Extended DOS Partition (розширений розділ)

- спосіб обійти обмеження на розмір розділу 2 Гб. Усередині розширеного розділу можна створювати окремі логічні диски. Якщо подивитися в PT адресу розширеного розділу і потім за допомогою Diskedit перейти на цю адресу, то виявиться сектор, по своїй структурі PT, що нагадує. Полягає він з двох елементів: перший описує поточний розділ (Extended DOS), другий - наступний логічний диск (якщо він є). За вказаною адресою знову виявиться така ж таблиця, а в ній адреса наступного логічного диска (знову ж таки, якщо він існує). В кінці сектора є все та ж сигнатура 55AA H, по якій його можна знайти на диску (все в тому ж Diskedit'е). Решта всієї доріжки, як і у разі MBR - порожня. Створюється програмою FDISK.

Boot Sector (завантажувальний сектор).

Власне кажучи, завантажувальний сектор. Boot sector знаходиться на початку кожного логічного диска (перший сектор наступної доріжки після PT). На початку сектора знаходиться команда Jmp - перехід на початок коду завантажувача. По зсуву 3 знаходиться поле завдовжки 8 байт, що містить назву і версію OS - при завантаженні не використовується. Далі, по зсуву 0B розташований блок з 19 байт, що описує логічні параметри диска (штука, вельми корисна в господарстві), - число байт в секторі (для DOS - 512), число секторів в кластері, число резервних секторів (тобто число секторів від початку диска до першої копії FAT - зазвичай один), число копій FAT (дві), формат FAT в текстовому вигляді (FAT12, FAT16 або FAT32), розмір кореневого каталога (вважається в записах по 32 байти), загальне число секторів на диску, тип носія (співпадає з першим байтом FAT) і число секторів в FAT. Знову ж таки, всю цю інформацію в зрозумілому вигляді виводить Diskedit в режимі as Boot sector. По зсуву 2B знаходиться мітка тому (завдовжки 11 байт). По зсуву 3E розташований сам початковий завантажувач. Його завдання - перевірити перший сектор кореневого каталога на наявність файлів IO.SYS і MSDOS.SYS і, виявивши їх, завантажити почало IO.SYS за адресою 0000:0700 H і передати йому управління. У останніх двох байтах сектора записана звична сигнатура 55AA H. Створюється при форматуванні.

FAT (File Allocation Table - таблиця розміщення файлів).

FAT розташований безпосередньо за завантажувальним сектором і є ланцюговим списком, призначеним для пошуку файлу на диску. Залежно від типу (FAT12, FAT16 або FAT32), має різну структуру. Але в найпримітивнішому вигляді ідея наступна - кожен елемент FAT відповідає одному кластеру на диску. У кореневому каталозі знаходиться посилання на перший кластер, займаний файлом. У FAT шукаємо цей кластер і дивимося, що в нім записане. Варіанти наступні: кластер вільний, зарезервовано, дефектний, кінець ланцюжка або номер наступного кластера у файлі. Файл прочитується до тих пір, поки не зустрінеться код кінця ланцюжка. У DOS (і його прямому спадкоємцеві - Windows) використовується дві копії FAT - для надійності. Обидві копії повинні бути ідентичні (на диску вони розташовані один за одним). Перший байт FAT приховує в собі дескриптор носія (F8 H для жорсткого диска). Наступні декілька байт описують тип FAT. За ними йде сама таблиця. Створюється при форматуванні.

Root Directory (кореневий каталог).

Йде відразу за другою копією FAT. Є на кожному диску. Практично це той самий список файлів і директорій, який ви бачите, відкриваючи диск в Explorer'е або Far'е. Кореневий каталог складається з 32 байтних елементів (насправді, з появою довгих імен файлів для кожного файлу відводиться декілька таких елементів). У них містяться ім'я файлу, розширення, атрибути, дата і час створення, розмір файлу і номер першого кластера. Кореневий каталог створюється при форматуванні.

Після Root Directory починається власне область файлів, де і зберігаються всі ваші нажиті непосильною працею дані

2006-2008 @ rati.com.ua