Гультяев Алексей Константинович
Шрифт:
Рис. 3.3. Физическая структура жесткого диска
Таким образом, общая емкость диска (V) вычисляется как произведение четырех сомножителей: числа цилиндров (С), количества секторов на одной дорожке (S), размера одного сектора (512) и числа головок (H):
V = C х S х 512 х H.
В соответствии с ограничениями BIOS предыдущего поколения и контроллеров жестких дисков для кодирования номера цилиндра выделяется 10 двоичных разрядов, для кодирования номера головки – 4 разряда, и для номера сектора – 6 разрядов.
В результате максимальное адресуемое пространство жесткого диска при использовании трех координат (номер цилиндра, номер головки, номер сектора) ограничено значением 528 Мбайт:
(210 = 1024 цилиндра) х (24 = 16 головок) х (26-1 = 63 сектора) х х 512 байт = 528 Мбайт.
Такой способ адресации получил обозначение CHS (Cylinder, Head, Sector); сейчас он обычно именуется «обычным» режимом адресации – Normal, и под таким именем используется, в частности, в параметрах BIOS.
ПРИМЕЧАНИЕ
Обратите внимание, что первый сектор в адресном пространстве CHS имеет номер 1, то есть CHS-адрес этого сектора – (0, 0, 1).
До появления жестких дисков большой емкости (более 528 Мбайт) проблем с адресацией данных на диске не возникало.
Однако с появлением дисков большего объема система адресации CHS была заменена линейной адресацией – LBA (Logical Block Addressing, адресация логических блоков), в которой используется «сквозная» нумерация секторов (блоков) по всем цилиндрам и головкам:
LBA = (Cylinder х Heads + Head) х Sectors + (Sector – 1).
В приведенной выше формуле использованы следующие обозначения:
Cylinder – номер цилиндра;
Heads – количество головок диска;
Head – номер головки, к которой относится адресуемый блок;
Sectors – количество секторов на дорожке;
Sector – номер адресуемого блока (сектора) на дорожке.
При этом нумерация логических блоков начинается с нуля, то есть логический блок с номером 0 в адресации LBA соответствует первому сектору в адресном пространстве CHS (то есть сектору с адресом (0, 0, 1)).
Таким образом, логический блок – это сектор, пронумерованный в соответствии с адресацией LBA.
ПРИМЕЧАНИЕ
При увеличении номера блока в первую очередь меняется номер сектора, потом номер головки, потом номер цилиндра. Отсюда следует, что цилиндры – это самые большие области смежных блоков данных. По этой причине цилиндры являются границами, по которым выравниваются разделы при их создании «вручную» (точнее, с помощью низкоуровневых редакторов дисков).
Благодаря объединению всех двоичных разрядов адреса в номер логического блока адресация LBA позволила увеличить поддерживаемую емкость дисков до 2 Тбайт, а также более гибко изменять размер кластера в зависимости от размера диска.
Кластер (Cluster) – это минимальный участок памяти на диске, который может быть выделен файловой системой при создании файла. Физически кластер представляет собой несколько смежных секторов, число которых должно быть равно степени 2 (то есть кластер может включать 1, 2, 4, 8, 16, 32 или даже 64 сектора).
ПРИМЕЧАНИЕ ____________________
Кластеры нумеруются в пределах одного логического диска, Первый кластер логического диска имеет номер 0. Для каждого логического диска пользователем может быть задан свой размер кластера. Понятие «логический диск» рассмотрено ниже.
Размер кластера существенно влияет на эффективность использования дискового пространства. Например, если размер кластера составляет 32 Кбайт, это означает, что самый маленький файл (скажем, одна буква «Я») будет занимать на диске 32 Кбайт.
При работе с файловой системой (FAT32 или NTFS) пользователь может на этапе логического форматирования диска выбрать размер кластера с учетом емкости диска, задав соответствующий параметр в программе форматирования. В табл. 3.1 приведены возможные варианты.
Существует и еще один метод адресации дискового пространства – LARGE. Он применяется для тех дисков большого объема, которые не поддерживают режим LBA. Метод LARGE заключается в следующем. Если число цилиндров диска превосходит предельное значение 1024, то выбирается коэффициент К, при делении на который оно становится меньше или равно 1024. Например, если число цилиндров больше 1024 и меньше 2048, то К будет равен 2; если число цилиндров лежит в диапазоне от 2048 до 4096, то Кравен 4, и т. д. (Квыбирается равным степени 2). Число головок диска, наоборот, умножается на выбранный коэффициент К. Это не приведет к выходу за пределы адресного пространства, поскольку появление 32-разрядных операционных систем позволило выделять для нумерации головок 8 разрядов вместо 4 (соответственно, максимальный номер головки может быть равен 28 – 1 = 255).