Структура магнітного диска (розбивка дисків на розділи).
Для того щоб можна було завантажити з магнітного диска власне саму ОС, а вже з її допомогою й організувати роботу тієї чи іншої системи керування файлами, були прийняті спеціальні системні угоди про структуру диска. Розташування структури даних, що несе інформацію про логічну організацію диска і найпростішу програму, за допомогою якої можна знаходити і завантажувати програми завантаження тієї чи іншої ОС, очевидно — це найперший сектор магнітного диска.
Як відомо, інформація на магнітних дисках розміщається і передається блоками. Кожен такий блок називається сектором (sector), сектори розташовані на концентричних доріжках поверхні диска. Кожна доріжка (track) утвориться при обертанні магнітного диска під зафіксованою в деякім визначеному положенні голівкою читання/запису. Накопичувач на жорстких магнітних дисках (НЖМД) містить один чи більше дисків (у сучасних розповсюджених НЖМД часто — два чи три). Однак звичайно під терміном «жорсткий диск» розуміють весь пакет магнітних дисків. Групи доріжок (треків) одного радіуса, розташованих на поверхнях магнітних дисків, утворять так звані циліндри (cylinder). Сучасні жорсткі диски можуть мати кілька десятків тисяч циліндрів, у той час як на поверхні дискети число доріжок (число циліндрів) нині, як правило, складає всього вісімдесят.
Кожен сектор складається з поля даних і поля службової інформації, щообмежує й ідентифікує його. Розмір сектора (точніше — ємність поля даних) встановлюється контролером чи драйвером. Користувальницький інтерфейс DOS підтримує єдиний розмір сектора — 512 байт. BIOS же безпосередньо надає можливості роботи із секторами розміром 128, 256, 512 чи 1024 байт. Якщо керувати контролером безпосередньо, а не через програмний інтерфейс більш високого рівня (наприклад, рівень DOS), то можна обробляти сектори і з іншими розмірами. Однак у більшості сучасних ОС розмір сектора вибирається рівним 512 байт. Фізична адреса сектора на диску визначається за допомогою трьох «координат», тобто представляється тріадою [c-h-s], де c — номер циліндра (доріжки на поверхні диска, cylinder), h — помер робочої поверхні диска (магнітної голівки, head), а s — номер сектора на доріжці. Номер циліндра c лежить у діапазоні 0..C-1, де C — кількість циліндрів. Номер робочої поверхні диска h належить діапазону 0..Н-1, де Н — число магнітних голівок у накопичувачі. Номер сектора на доріжці s вказується в діапазоні 1..S, де S — кількість секторів на доріжці. Наприклад, тріада [1-0-2] адресує сектор 2 на доріжці 0 (звичайно верхня робоча поверхня) циліндра 1. Надалі ми теж будемо користуватися саме цими позначеннями.
Нагадаємо, що обмін інформацією між ОЗУ і дисками фізично здійснюється тільки секторами. Уся сукупність фізичних секторів на вінчестері представляє його неформатований об’єм.
Жорсткий диск може бути розбитий на кілька розділів (partition), які в принципі потім можуть використовуватися або однією ОС, або різними ОС. Причому самим головним є те, що на кожнім розділі може бути організована своя файлова система. Однак для організації навіть одної файлової системи необхідно визначити, принаймні, один розділ.
Розділи диска можуть бути двох типів — primary (звичайно цей термін переводять як первинний) і extended (розширений). Максимальне число primary розділів дорівнює чотирьом. При цьому на диску обов'язково повинний бути принаймні один primary-розділ. Якщо primary-розділів декілька, то тільки один з них може бути активним. Саме завантажнику, розташованому в активному розділі, передається керування при включенні комп'ютера і завантаженню операційної системи. Інші primary-розділи в цьому випадку вважаються «невидимими, схованими» (hidden).
Відповідно до специфікацій на одному жорсткому диску може бути тільки один extended - розділ, що, у свою чергу, може бути розділений на велику кількість підрозділів — логічних дисків (logical). У цьому змісті термін «первинний» варто визнати не зовсім вдалим перекладом слова primary; можна це слово перевести і як «найпростіший, примітивний». У цьому випадку стає зрозумілим і логічним термін extended.
Один з primary-розділів повинний бути активним, саме з його повинна завантажувати програма завантаження операційної системи, чи так званий менеджер завантаження, призначення якого — завантажити програму завантаження ОС з якого-небудь іншого розділу, і вже з її допомогою завантажувати операційну систему. Оскільки до завантаження ОС система керування файлами працювати не може, то варто використовувати для вказівки згаданих завантажників винятково абсолютні адреси у форматі [c-h-s].
По фізичній адресі [0-0-1] на вінчестері розташовується головний завантажувальний запис (master hoot record, MBR), що містить позасистемний завантажник (non-system bootstrap — NSB), а також таблицю розділів (partition table, FT). Цей запис займає рівно один сектор, вона розміщується в пам'яті, починаючи з адреси 0:7C00h, після чого керування передається коду, що міститься в цьому найпершому секторі магнітного диска. Таким чином, у найпершому (стартовому) секторі фізичного жорсткого диска знаходиться не звичайний запис boot record, як на дискеті, a master boot record.
MBR є основним засобом завантаження з жорсткого диска, підтримуваним BIOS. У MBR знаходяться три важливих елементи:
· програма початкового завантаження (non-system bootstrap). Саме вона запускається BIOS після успішного завантаження в пам'ять першого сектора з MBR. Вона, мабуть, не перевищує 512 байт і її вистачає тільки на те, щоб завантажити наступну, трохи більш складну програму, звичайно — стартовий сектор операційної системи — і передати йому керування;
· таблиця опису розділів диска (partition table). Розташовується в MBR по зсуві Ox1BE і займає 64 байта;
· сигнатура MBR. Останні два байти MBR повинні містити число AA55h. По наявності цієї сигнатури BIOS перевіряє, що перший блок був завантажений успішно. Сигнатура ця обрана не випадково. Її успішна перевірка дозволяє установити, що всі лінії передачі даних можуть передавати і нулі, і одиниці.
Таблиця partition table описує розміщення і характеристики наявних на вінчестері розділів. Можна сказати, що ця таблиця розділів — одна з найбільш важливих структур даних на жорсткому диску. Якщо ця таблиця ушкоджена, то не тільки не буде завантажуватися операційна система (чи одна з операційних систем, встановлених на вінчестері), але перестануть бути доступними і дані, розташовані на вінчестері, особливо якщо жорсткий диск був розбитий на кілька розділів.
Зміщення (Offset) | Розмір (Sise)(байт) | Вміст (Contents) |
Програма аналізу Partition Table і загрузки System Bootstrap з активного розділу жорсткого диску | ||
+1BEh | Partition 1 entry (Описувач розділу) | |
+1CEh | Partition 2 entry | |
+1DEh | Partition 3 entry | |
+1EEh | Partition 3 entry | |
+1FEh | Сигнатура (АА55Н) |
Рис.10.4. Структура MBR.
Спрощено структура MBR представлена на рис.10.4.З неї видно, що на початку цього сектора розташовується програма аналізу таблиці розділів і читання першого сектора з активного розділу диска. Сама таблиця partition table - розташовується наприкінці MBR, і для опису кожного розділу в цій таблиці приділяється по 16 байтів. Першим байтом в елементі розділу йде прапор активності розділу boot indicator (0 - не активна, 128 (80Н) - активний). Він служить для визначення, чи є розділ системним завантажувальним і чи є необхідність робити завантаження операційної системи з нього при старті комп'ютера. Активним може бути тільки один розділ. За прапором активності розділу іде байт номера голівки, з яким починається розділ. Заним ідуть два байти, що означають відповідно номер сектора і номер циліндра завантажувального сектора, де розташовується перший сектор завантажника операційної системи. Потім іде кодовий ідентифікатор System ID (довжиною в один байт), що вказує на приналежність даного розділу до тієї чи іншої операційної системи й установки на ньому відповідної файлової системи. У табл.10.1 приведені деякі (найбільш відомі) ідентифікатори.
Таблиця 10.1. Сигнатури (типи) розділів
System ID | Тип розділу | System ID | Тип розділу |
Empty («пустий» розділ) | PPC PreP Boot | ||
FAT 12 | SFS | ||
XENIX root | 4D | QNX 4.x | |
XENIX usr | 4E | QNX 4.x 2nd part | |
FAT 16 (<32 Мбайт) | 4F | QNX 4.x 3nd part | |
Extended | OnTrack DM | ||
FAT 16 | OnTrack DM6 Aux | ||
HPFS/NTFS | CP/M | ||
AIX | OnTrack DM6 | ||
AIX bootable | OnTrack DM6 | ||
0A | OS/2 Boot Manager | EZ Drive | |
0B | Win95 FAT32 | Golden Bou | |
0С | Win95 FAT32 LBA | 5C | Priam Edisk |
0E | Win95 FAT 16 LBA | Speed Stor | |
0F | Win95 Extended | Novell Netware | |
OPUS | Novell Netware | ||
Hidden FAT12 | PC/1X | ||
Compaq diagnost | Old Minix | ||
Hidden FAT16 (<32 Мбайт) | Linux swap | ||
Hidden FAT16 | Linux native | ||
Hidden HPFS/NTFS | OS/2 hidden C: | ||
AST Windows swap | Linux Extended | ||
1B | Hidden Win95 Fat | NTFS volume set | |
1C | Hidden Win95 Fat | A5 | BSD/386 |
IE | Hidden Win95 Fat | A6 | Open BSD |
NEC DOS | A7 | Next Step | |
3C | Partition Magic | EB | Be OS |
Venix 8028G |
За байтом коду операційної системи розміщений байт номера головки кінця розділу, за яким йдуть два байти – номер сектора і номер циліндра останнього сектора доного розділу. Нижче представлений формат елемента таблиці розділів.
Таблиця 10.2 Формат елемента таблиці розділів.
Назва запису елемента Partition Table | Довжина, байт |
Флаг активності розділу | |
Номер головки початку розділу | |
Номер сектора і номер циліндра завантажуючого сектору розділу | |
Кодовий ідентифікатор операційної системи | |
Номер головки кінця розділу | |
Номер сектора і циліндра останнього сектора розділу | |
Молодше і старше двухбайтове слово відносного номера сектора | |
Молодше і старше двухбайтове слово розміру розділу в секторах |
Номера сектора і номер циліндра секторів у розділах займають по 6 і 10 біт відповідно. Нижче представлений формат запису, що містить номера сектора і циліндра.
Як ми вже сказали, завантажник non-system bootstrap служить для пошуку за допомогою partition table активного розділу, копіювання в оперативну пам'ять комп'ютера завантажника system bootstrap з обраного розділу і передачі йому керування, що дозволяє здійснити завантаження ОС.
Слідом за сектором MBR розмішаються власне самі розділи (рис.10.5). У процесі початкового завантаження сектора MBR, що містить таблицю partition table, працюють програмні модулі BIOS. Початкове завантаження вважається виконано коректно тільки в тому випадку, коли таблиця розділів містить припустиму інформацію.
У MS-DOS і первинному розділі може бути сформований тільки один логічний диск, а в розширеному – будь-яку їхню кількість. Кожен логічний диск «керується» своїм логічним приводом. Кожному логічному диску на вінчестері відповідає своя (відносна) логічна нумерація. Фізична ж адресація жорсткого диска наскрізна.
Первинний розділ DOS включає тільки системний логічний диск без яких-небудь додаткових інформаційних структур.
Рис. 10.5. Розбивка диска на розділи
Розширений розділ DOS містить вторинний запис MBR (secondary MBR SMBR), до складу якого замість partition table входить таблиця логічного диска (LDT, logical disk table), їй аналогічна. Таблиця LDT описує розміщення і характеристики розділу, що містить єдиний логічний диск, а також може специфікувати наступний запис SMBR. Отже, якщо в розширеному розділі DOS створено K логічних дисків, то він містить K екземплярів SMBR, зв'язаних у список. Кожен елемент цього списку описує відповідний логічний диск і посилається (крім останнього) на наступний елемент списку.
Утиліти, що дозволяють розбити диск на розділи і тим самим сформувати як partition table, так і, можливо, спискову структуру з LDT (подібно тому як це зображено на рис.10.6), звичайно називаються FDISK (від form disk), хоча мережа утиліти і з іншою назвою, що вміють виконати розбивку диска. Нагадаємо, що FD1SK від MS-DOS дозволяє створити тільки один primary-розділ і один extended, що, у свою чергу, пропонується розділити на кілька логічних дисків. Аналогічні утиліти інших ОС мають істотно більше можливостей. Так, наприклад. FDISK системи OS/2 дозволяє створювати кілька primary-розділів, причому їх можна виділяти не тільки послідовно, починаючи з перших циліндрів, але і з кінця вільного дискового простору. Це зручно, якщо потрібно виключити з роботи деякий діапазон дискового простору (наприклад, через дефекти на поверхні магнітного диска). За допомогою цієї утиліти можна установити і менеджер завантаження (boot-менеджер).
Перш ніж перейти до boot-менеджерів, розглянемо ще раз процес завантаження ОС. Процедура початкового завантаження (bootstrap loader) викликається як програмне переривання (BIOS INT 19h). Ця процедура визначає перший готовий пристрій зі списку дозволених і доступних (гнучкий чи жорсткий диск, у сучасних комп'ютерах це можуть бути також CD-ROM, привод ZIP-drive компанії iomega, мережний адаптер чи інший пристрій) і намагається завантажити з нього в ОЗУ коротку головну програму-завантажник. Для вінчестерів — це завантажник non-system bootstrap з MBR, і йому передається керування. Головний завантажник визначає на диску активний розділ, завантажує його власний завантажник (system bootstrap) і передає керування йому. І, нарешті, цей завантажник завантажує необхідні файли операційної системи і передає їй керування. Далі операційна система виконує ініціалізацію підвідомчих їй програмних і апаратних засобів. Вона додає нові сервіси, викликаємі, як правило, теж через механізм програмних переривань, і розширює (чи заміняє) деякі сервіси BIOS. Необхідно відзначити, що в сучасних мультипрограмних операційних системах більшість сервісів BIOS, споконвічно розташованих вПЗУ, як правило, заміняються власними драйверами, оскільки вони повинні працювати в режимі переривань, а не в режимі сканування готовності.
Відповідно розглянутому процесу завантаження, ми ще раз при запуску комп'ютера будемо попадати в ту саму ОС. Але іноді це нас не влаштовує. Так звані boot-менеджери (менеджери завантаження) призначені для того, щоб користувач міг вибрати серед декількох установлених на комп'ютері ОС потрібну і передати керування завантажнику цієї обраної ОС. Існує велика кількість таких менеджерів. На наш погляд, одним із кращих довгий час був Boot manager компанії IBM, що входить до складу утиліт OS/2. Для його розміщення створюється окремий primary-розділ, що, природно, і є активним (він позначається як startable). Розділ для Boot-менеджера OS/2 займає всього один циліндр і може розміщатися нетільки нанульовому (початковому) циліндрі, але і на останньому циліндрі. У цьому розділі не організується ніякої файлової системи, оскільки звертання до менеджерайде з використанням абсолютної адресації, а сам Boot manager являє собою найпростішу абсолютну двійкову програму. Установка Boot manager здійснюється з програми FDISK. При цьому з'являється можливість вказати, які розділи можуть бути завантажуваними (вони позначаються як bootable), тобто в яких розділах на першому логічному секторі будуть розміщені програми завантаження ОС. Завантажуючими можуть бути як primary-, так і extended-розділи. При цьому, природно, є можливість вказати як час на ухвалення рішення, так і завантаження деякої ОС «за замовчуванням». Зручним є і те, що при розбивці диска на розділи можна взагалі не створювати primary-розділів. Це особливо важливо, якщо в комп'ютері встановлено більш одного дискового накопичувача або якщо ми підготовляємо вінчестер, що повинний досить часто переноситися з одного комп'ютера на іншій. Справа в тім, що в більшості ОС прийняте наступне правило іменування логічних дисків: перший логічний диск позначається літерою C: другий — D: і т.д. При цьому літеру C: одержує активний primary розділ. Однак якщо до одного вінчестера в персональному комп'ютері підключити другий вінчестер і він теж має активний primary-розділ, то цей primary-розділ другого вінчестера одержить літеру D:, відсуваючи логічний диск D: першого вінчестера на місце диска Е: (і т.д. по ланцюжку). Якщо ж другий (і наступні) вінчестер не має primary-розділу з встановленої на ньому файловою системою, яку дана ОС знає, то «іменування» логічних дисків першого вінчестера не порушується. Природно, що логічні диски другого вінчестера одержують літери логічних дисків слідом за дисками першого вінчестера Boot manager OS/2, створюючи тільки логічні диски на вінчестері, насправді створює і «порожній» primary-розділ, однак цей розділ не стає активним і не одержує статус логічного диска. На жаль, усе більш популярна в наші дні ОС Windows 2000 тепер не тільки знімає прапор активності з розділу, у якому розміщений Boot manager (як це відбувалося при інсталяції будь-яких ОС від компанії Microsoft), але і фізично знищує його двійковий код. Заміна драйвера FASTFAT.SYS системи Windows 2000 на більш ранню версію (у бета-версії ОС Windows 2000 система не знищувала код Boot manager) допомагає лише до установки Service pack. Тому рекомендувати цей менеджер завантаження вже не можна. З останніх менеджерів завантаження, мабуть, найбільш могутнім є Boot star, але його не можна рекомендувати непідготовленим користувачам.
Однієї з найвідоміших і дотепер досить часто використовуваних утиліт за допомогою якої можна подивитися і відредагувати таблицю розділів а також виконати й інші дії, зв'язані з вивченням і виправленням даних як на дискеті, так і на вінчестері, є програма Disk editor з комплекту нортоновских утиліт. Потрібно відмітити, що Disk editor, з одного боку, дуже могутній засіб, і тому його варто використовувати з великою обережністю, а з іншого боку - ця утиліта працює тільки в середовищі DOS. На сьогоднішній день головним недоліком цієї утиліти є обмеження на максимальний розмір диска в 8 Гбайт.
Треба визнати, що останнім часом з'явилася велика кількість утиліт які надають можливість більш наочно представити розбивку дискана розділи, оскільки в них використовується графічний інтерфейс. Ці програми успішно і коректно працюють з найбільш розповсюдженими типами розділів (розділи під FAT, FAT32, NTFS). Однак створені вони в основному для роботи в середовищі Win32API, що часто обмежує можливість їхнього використання. Однією з найвідоміших і могутніх програм для роботи з розділами жорсткого диска є Partition Magic фірми Power Quest
Дата добавления: 2016-07-27; просмотров: 3061;