### Оглавление

Назад | Вперед

Устройство жесткого диска

Большинство пользователей, отвечая на вопрос, что находится в их системном блоке, помимо прочего упоминают винчестер. Винчестер - это устройство, на котором чаще всего хранятся Ваши данные. Бытует легенда, объясняющая, почему за жесткими дисками повелось такое причудливое название. Первый жесткий диск, выпущенный в Америке в начале 70-х годов, имел емкость по 30 Мб информации на каждой рабочей поверхности. В то же время, широко известная в той же Америке магазинная винтовка О. Ф. Винчестера имела калибр - 0.30; может грохотал при своей работе первый винчестер как автомат или порохом от него пахло - не знаю, но с той поры стали называть жесткие диски винчестерами.

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

С одной стороны, в процессе написания этой статьи я ставил для себя задачей рассказать Вам:

1. о принципах записи информации на жесткий диск;

2. о размещении и загрузке операционной системы;

3. о том как грамотно разделить

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

С другой стороны, я хочу подготовить читателя ко второй статье, в которой я расскажу о программах, называемых boot manager-ами. Для того чтобы понимать, как работают эти программы, нужно обладать базовыми знаниями о таких вещах как MBR, Partitions и т. д.

Довольно общих слов - приступим.

Устройство жесткого диска

Жесткий диск (НDD - Hard Disk Drive) устроен следующим образом: на шпинделе, соединенным с электромотором, расположен блок из нескольких дисков (блинов), над поверхностью которых находятся головки для чтения/записи информации. Форма головкам придается в виде крыла и крепятся они на серпообразный поводок. При работе они "летят" над поверхностью дисков в воздушном потоке, который создается при вращении этих же дисков. Очевидно, что подъемная сила зависит от давления воздуха на головки. Оно же, в свою очередь, зависит от внешнего атмосферного давления. Поэтому некоторые производители указывают в спецификации на свои устройства предельный потолок эксплуатации (например, 3000 м). Ну чем не самолет? Диск разбит на дорожки (или треки), которые в свою очередь поделены на сектора. Две дорожки, равноудаленные от центра, но расположенные по разные стороны диска, называются цилиндрами.

## Хранение информации

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

К сожалению, достаточно часто происходит путаница между такими понятиями как "сектор", "кластер" и "блок". Фактически, между "блоком" и "сектором" разницы нет. Правда, одно понятие логическое, а второе топологическое. "Кластер" - это несколько секторов, рассматриваемых операционной системой как одно целое. Почему не отказались от простой работы с секторами? Отвечу. Переход к кластерам произошел потому, что размер таблицы FAT был ограничен, а размер диска увеличивался. В случае FAT16 для диска объемом 512 Мб кластер будет составлять 8 Кб, до 1 Гб - 16 Кб, до 2 Гб - 32 Кб и так далее.

Для того чтобы однозначно адресовать блок данных, необходимо указать все три числа (номер цилиндра, номер сектора на дорожке, номер головки). Такой способ адресации диска был широко распространен и получил впоследствии обозначение аббревиатурой CHS (cylinder, head, sector). Именно этот способ был первоначально реализован в BIOS, поэтому впоследствии возникли ограничения, связанные с ним. Дело в том, что BIOS определил разрядную сетку адресов на 63 сектора, 1024 цилиндра и 255 головок. Однако развитие жестких дисков в то время ограничилось использованием лишь 16 головок в связи со сложностью изготовления. Отсюда появилось первое ограничение на максимально допустимую для адресации емкость жесткого диска: 1024*16*63*512 = 504Mb.

Со временем, производители стали делать HDD большего размера. Соответственно число цилиндров на них превысило 1024, максимально допустимое число цилиндров (с точки зрения старых BIOS). Однако, адресуемая часть диска продолжала равняться 504 Мбайтам, при условии, что обращение к диску велось средствами BIOS. Это ограничение со временем было снято введением так называемого механизма трансляции адресов, о котором чуть ниже.

Проблемы, возникшие с ограниченностью BIOS по части физической геометрии дисков, привели в конце концов к появлению нового способа адресации блоков на диске. Этот способ довольно прост. Блоки на диске описываются одним параметром - линейным адресом блока. Адресация диска линейно получила аббревиатуру LBA (logical block addressing). Линейный адрес блока однозначно связан с его CHS адресом:

lba = (cyl*HEADS + head)*SECTORS + (sector-1);

Введение поддержки линейной адресации в контроллеры жестких дисков дало возможность BIOS'aм заняться трансляцией адресов. Суть этого метода состоит в том, что если в приведенной выше формуле увеличить параметр HEADS, то потребуется меньше цилиндров, чтобы адресовать то же самое количество блоков диска. Но зато потребуется больше головок. Однако головок-то как раз использовалось всего 16 из 255. Поэтому BIOS'ы стали переводить избыточные цилиндры в головки, уменьшая число одних и увеличивая число других. Это позволило им использовать разрядную сетку головок целиком. Это отодвинуло границу адресуемого BIOS'ом дискового пространства до 8Gb.

Нельзя не сказать несколько слов и о Large Mode. Этот режим работы предназначен для работы жестких дисков объемом до 1 Гб. В Large Mode количество логических головок увеличивается до 32, а количество логических цилиндров уменьшается вдвое. При этом обращения к логическим головкам 0..F транслируются в четные физические цилиндры, а обращения к головкам 10..1F - в нечетные. Винчестер, размеченный в режиме LBA, несовместим с режимом Large, и наоборот.

Дальнейшее увеличение адресуемых объемов диска с использованием прежних сервисов BIOS стало принципиально невозможным. Действительно, все параметры задействованы по максимальной "планке" (63 сектора, 1024 цилиндра и 255 головок). Тогда был разработан новый расширенный интерфейс BIOS, учитывающий возможность очень больших адресов блоков. Однако этот интерфейс уже не совместим с прежним, вследствие чего старые операционные системы, такие как DOS, которые пользуются старыми интерфейсами BIOS, не смогли и не смогут переступить границы в 8GB. Практически все современные системы уже не пользуются BIOS'ом, а используют собственные драйвера для работы с дисками. Поэтому данное ограничение на них не распространяется. Но следует понимать, что прежде чем система сможет использовать собственный драйвер, она должна как минимум его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS'ом. Это и вызывает ограничения на размещение многих систем за пределами 8GB, они не могут оттуда загружаться, но могут читать и писать информацию (например, DOS который работает с диском через BIOS).

# Разделы, или Partitions

Обратимся теперь к размещению операционных систем на жестких дисках. Для организации систем дисковое адресное пространство блоков разделяется на части, называемые разделами (partitions). Разделы полностью подобны целому диску в том, что они состоят из смежных блоков. Благодаря такой организации для описания раздела достаточно указания начала раздела и его длины в блоках. Жесткий диск может содержать четыре первичных раздела.

Во время загрузки компьютера, BIOS загружает первый сектор головного раздела (загрузочный сектор) по адресу 0000h:7C00h и передает ему управление. В начале этого сектора расположен загрузчик (загрузочный код), который прочитывает таблицу разделов и определяет загружаемый раздел (активный). А дальше все повторяется. То есть он загружает загрузочный сектор этого раздела на этот же адрес и снова передает ему управление.

Разделы являются контейнерами всего своего содержимого. Этим содержимым является, как правило, файловая система. Под файловой системой с точки зрения диска понимается система разметки блоков для хранения файлов. После того, как на разделе создана файловая система и в ней размещены файлы операционной системы, раздел может стать загружаемым. Загружаемый раздел имеет в своем первом блоке небольшую программу, которая производит загрузку операционной системы. Однако для загрузки определенной системы нужно явно запустить ее загрузочную программу из первого блока. О том, как это происходит, будет рассказано чуть ниже.

Разделы с файловыми системами не должны пересекаться. Это связано с тем, что две разные файловые системы имеют каждая свое представление о размещении файлов, но когда это размещение приходится на одно и то же физическое место на диске, между файловыми системами возникает конфликт. Этот конфликт возникает не сразу, а лишь по мере того, как файлы начинают размещаться в том месте диска, где разделы пересекаются. Поэтому следует внимательно относиться к разделению диска на разделы.

Само по себе пересечение разделов не опасно. Опасно именно размещение нескольких файловых систем на пересекающихся разделах. Разметка диска на разделы еще не означает создания файловых систем. Однако, уже сама попытка создания пустой файловой системы (то есть форматирование), на одном из пересекающихся разделов может привести к возникновению ошибок в файловой системе другого раздела. Все сказанное относится в одинаковой степени ко всем операционным системам, а не только самым популярным.

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

MBR является основным средством загрузки с жесткого диска, поддерживаемым BIOS. Для наглядности представим содержимое загрузочной области в виде схемы:

Все то что находится по смещению 01BEh-01FDh называется таблицей разделов. Вы видите, что в ней четыре раздела. Только один из четырех разделов имеет право быть помеченным как активный, что будет означать, что программа загрузки должна загрузить в память первый сектор именно этого раздела и передать туда управление. Последние два байта MBR должны содержать число 0xAA55. По наличию этой сигнатуры BIOS проверяет, что первый блок был загружен успешно. Сигнатура эта выбрана не случайно. Ее успешная проверка позволяет установить, что все линии данных могут передавать и нули, и единицы. Программа загрузки просматривает таблицу разделов, выбирает из них активный, загружает первый блок этого раздела и передает туда управление.

Давайте посмотрим как устроен дескриптор раздела:

Смещение | Описание
0000h | маркер начальной загрузки
0001h | головка
0002h | cектор и цилиндр
0003h | цилиндр
0004h | системное описание
0005h | головка
0006h | cектор и цилиндр
0007h | цилиндр
0008h-000Bh | смещение секторов
000Ch-000Fh | количество секторов в разделе

*0001h-0003hначалораздела
** 0005h-0007h конец раздела

С точки зрения разделов диска наиболее популярной до недавнего времени была и остается MS-DOS. Она забирает в свое пользование два из четырех разделов: Primary DOS partition, Extended DOS partition. Первый из них, (primary) это обычный досовый диск C:. Второй - это контейнер логических дисков. Они все болтаются там в виде цепочки подразделов, которые так и именуются: D:, E:, ... Логические диски могут иметь и инородные файловые системы, отличные от файловой системы DOS. Однако, как правило, инородность файловой системы связана присутствием еще одной операционной системы, которую, вообще говоря, следовало бы поместить в свой собственный раздел (не extended DOS), но для таких выходок часто оказывается слишком маленькой таблица разделов.

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