Преобразование CHS в LBA — (дисковое хранилище)

До LBA у вас было просто физическое сопоставление диска, которое изначально на старой машине, совместимой с IBM-PC, выглядело примерно так:

  • Cylinder Number : (10-bits)
    • 0-1024 (1024 = 2^10)
  • Head Number : (8-bits)
    • 0-256 (256 = 2^8)
  • Sector Number : (6-bits)
    • 0 is reserved typically for the "boot sector" (c-0,h-0,s-0)
    • 1-64 (63 = 2^6 - 1) *0 зарезервировано

Всего битов адреса CHS: 24 бита


Раньше средний размер (файл|блок|сектор) составлял 512 байт.

Пример из википедии:

512(bytes) × 63(sectors) x 256(heads) × 1024(cylinders) = 8064 MiB (yields what is known as 8 GiB limit) 

Что меня смущает, так это то, что на самом деле означает head, когда он упоминается как heads-per-cylinder в формуле LBA. Для меня это не имеет смысла, потому что, насколько я знаю, голова — это head, и если это не съемный носитель, каждая пластина имеет две из них (верхняя и нижняя) для каждой из ее поверхностей.

введите здесь описание изображения

На мой взгляд, это было бы больше, поскольку они назывались heads-per-disk или heads-per-surface, поскольку цилиндр проходит через весь диск (несколько пластин).

введите здесь описание изображения


Адресация логических блоков:

Формула: A = (c ⋅ Nheads + h) ⋅ Nsectors + (s − 1)

  • A - Адрес логического блока
  • Nheads - Количество головок на диске heads-per-disk
  • Nsectors - Количество секторов на дорожке sectors-per-track
  • c,h,s - номер цилиндра,головки,сектора 24-bits total (10+8+6)

Глядя на первый пример на здесь:

For geometry 1020 16 63 of a disk with 1028160 sectors CHS 3 2 1 is LBA  3150=(3× 16+2)× 63

Геометрия:

  • Номер цилиндра - 1020 (0-1024)
  • Начальный номер - 16 (0-256)
  • Номер сектора - 63 (1-64)

Как эти геометрические числа CHS, отображаемые в кортеж CHS (3,2,1), будут использоваться в этой формуле?


person Jordan Davis    schedule 18.09.2015    source источник


Ответы (1)


Я не думаю, что головы - это число, которое следует воспринимать слишком буквально. Я разобрал несколько, чтобы спасти неодимовые магниты, и видел только один диск, за исключением больших 5-1/4-дюймовых приводов. И 2 головы. И цилиндры начинаются с 0, но головки и сектора начинаются с 1. Некоторые ранние версии Windows могли работать только с 255 головками, поэтому с числами можно играть.

Краткий ответ: умножьте цилиндр # на головку # на сектор #, и получится близко к LBA. Я попытался вставить сюда список fdisk OpenBSD, но его ширина составляет целых 80 символов, и веб-страница его не воспримет.

person Alan Corey    schedule 25.11.2015