Ниже приведен вывод информации о геометрии диска ноутбука, на котором я пишу этот пост.
C:\Utils>diskpar -i 0
---- Drive 0 Geometry Infomation ----
Cylinders = 7296
TracksPerCylinder = 255
SectorsPerTrack = 63
BytesPerSector = 512
DiskSize = 60011642880 (Bytes) = 57231 (MB)
---- Drive Partition 0 Infomation ----
StatringOffset = 32256
PartitionLength = 60011610624
HiddenSectors = 63
PartitionNumber = 1
PartitionType = 7
End of partition information. Total existing partitions: 1
Обратите внимание, на огромное количество головок (здесь обозначено как TracksPerCylinder). Конечно, таких дисков не существует. Фиктивная геометрия рассчитана исходя из общего количества блоков диска по следующей формуле:
Важно, что при расчетах всегда берутся максимально допустимые значения количества головок и секторов на трек (TracksPerCylinder = 255, SectorsPerTrack = 63). Операционная система получает информацию об общем количестве блоков от самого диска (DiskSize / BytesPerSector = 60011642880 Bytes / 512 Bytes/sec = 117210240 blocks). Далее по формуле можно получить количество цилиндров (117210240 blocks / (255 heads * 63 tracks/cyl) = 7296).
Значения HiddenSectors = 63 и StatringOffset = 32256 (32256 Bytes / 512 Bytes/sec = 63 sec) указывают нам, что раздел 0 начинается с сектора 64. Если бы мы рассматривали файловую систему, расположенную на дисковом массиве, необходимо было бы провести ее выравнивание (file system alignment). Надо не забыть написать, как и почему надо это делать.
Кстати, вы сразу заметили ошибку в выводе diskpar (StatringOffset) :) ?
Так и не понял почему количество головок такое большое
ОтветитьУдалитьУ нас есть 3 параметра, определяющих геометрию диска: количество головок, количество секторов на трек и количество цилиндров. Все это вместе определяет общее число блоков.
ОтветитьУдалитьТеперь нам надо решить обратную задачу. У нас есть реальное количество блоков диска и нужно как-то вычислить его геометрию. Возможных вариантов из 3 параметров много. Следует выбрать из них самый простой. Поэтому фиксируются значения количества головок и секторов в треке и по очевидной формуле вычисляется количество цилиндров. При этом, для того, чтобы число цилиндров оставалось разумно не большим, остальные два параметра задаются максимально возможными значениями 255 и 63.