Форум программистов, компьютерный форум, киберфорум
Носители информации
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/30: Рейтинг темы: голосов - 30, средняя оценка - 4.90
Pashkanin
22 / 22 / 5
Регистрация: 19.02.2014
Сообщений: 114
Завершенные тесты: 1
1

Таблица MBR, расчет CHS и LBA

25.05.2017, 00:24. Просмотров 6181. Ответов 8

Цитата Сообщение от ru.wikipedia.org
Координаты начала и конца раздела в CHS-формате (цилиндр, головка, сектор). CHS не позволяет выполнять адресацию более чем к 7,8 ГБ данных, и для адресации к разделам, находящимся за пределами 7,8 ГБ, используется LBA-адресация.
сектор размером 512 байт это стандарт какой-то?

Добавлено через 1 час 43 минуты
ну допустим, сектор равен 512 байт, а смещение рассчитывается от 0-го сектора, тогда максимальная длина 1-го раздела будет FF FF FF FF - ровно 3 ГиБ, а смещение 2-го раздела будет некуда записывать, т.к. под него отводятся те же 4 байта. Что делать с цилиндрами и головками?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2017, 00:24
Ответы с готовыми решениями:

CHS -> LBA
Здравствуйте! Че то я совсем запутался:( Кто то может объяснить мне что я не так считаю? Вот...

LBA и CHS
Здравствуйте пишу загрузчик, встал такой вопрос, как по таблице разделов узнать работаем мы с...

Victoria 5. отключил MBR OFF, после повторного включения MBR ON и перегрузки остается MBR OFF. В системе - unlocated
Приветствую Вас :) Такая беда: - работаю с идешкой PHPStorm. После одной запары стала...

Таблица разделов MBR
Подскажите пожалуйста! Суть в том, что устанавливая операционную систему windows 7 х64.вылетела...

8
vxg
Модератор
3306 / 2098 / 332
Регистрация: 13.01.2012
Сообщений: 8,152
25.05.2017, 06:34 2
Pashkanin, что-то с математикой не то: FF FF FF FF (количество СЕКТРОВ) * 512 = ~ 2 ТБ вроде... с цилиндрами можете делать что угодно если диск физически имеет другое строение - даже на жестких дисках это в каком то смысле условные цифры так как там изменяется геометрия от расположения дорожки
0
Pashkanin
22 / 22 / 5
Регистрация: 19.02.2014
Сообщений: 114
Завершенные тесты: 1
25.05.2017, 11:25  [ТС] 3
Цитата Сообщение от vxg Посмотреть сообщение
FF FF FF FF (количество СЕКТРОВ) * 512 = ~ 2 ТБ
все верно, где-то я обсчитался...
Цитата Сообщение от vxg Посмотреть сообщение
с цилиндрами можете делать что угодно если диск физически имеет другое строение
ясен пень, это логический адрес, иначе, количество секторов = 256*256*256-1(точнее, 256*64*1024-1), это меньше 8ГиБ.

мне интересно, откуда берутся значения "всего секторов", "всего головок", "всего цилиндров", они статичные, берется максимальное значение чтоли? т.е. 255, 63, 1023?
для рассчета lba требуются значения "всего головок" и "секторов на дорожке"(это максимальное значение для 3-го байта из таблиц? т.е 63?), где их взять?

в подтверждение того, что "всего секторов", "всего головок", "всего цилиндров" статичны, я создал 2 файла размером 64 и 256 МиБ, утилитой fdisk создал в них таблицу mbr и первичный раздел(primary, not extended) максимальной длины.
64МиБ
00boot(00/80h)...
32dначало раздела - головка(0010 0000)20h
33dначало раздела - сектор(10 0001)21h
00начало раздела - цилиндр(00 0000 0000)
83hтип раздела linux...
40dконец раздела - головка(0010 1000)28h
32dконец раздела - сектор(10 000)20h
8dконец раздела - цилиндр(00 0000 1000)8h
00 08 00 00hсмещение первого сектора0x800
00 f8 01 00hколичество секторов раздела0x1f800
256 МиБ
00boot(00/80h)...
32dначало раздела - головка(0010 0000)20h
33dначало раздела - сектор(10 0001)21h
00начало раздела - цилиндр(00 0000 0000)
83hтип раздела linux...
97dконец раздела - головка(0110 0001)61h
1dконец раздела - сектор(00 0001)01h
32dконец раздела - цилиндр(00 0010 0000)20h
00 08 00 00hсмещение первого сектора0x800
00 e8 07 00hколичество секторов раздела0x7e800

Добавлено через 7 минут
2,3,4 байты в таблицах одинаковые, а значит, от длины диска они не зависят
0
vxg
Модератор
3306 / 2098 / 332
Регистрация: 13.01.2012
Сообщений: 8,152
25.05.2017, 11:28 4
Pashkanin, если пойти по ссылкам из вики можно прочитать такое вот
Для IDE-накопителей существуют несколько режимов трансляции:
CHS (Cylinder-Head-Sector) - при этом геометрия диска считается такой, какой он её сообщает компьютеру. Не обольщайтесь - у большинства накопителей реальная геометрия совсем не такая. Однако контроллер, входящий в состав жёсткого диска, производит необходимые преобразования самостоятельно, и то, как он это делает, для нас несущественно. При этом максимальное количество цилиндров - 1024 (от 0 до 1023), дорожек - 16 (от 0 до 15), секторов - 63 (от 1 до 63), а максимальный объём диска, доступный в данной трансляции без применения специальных программ - 504 Мбайт. При дисковых операциях адрес сектора передается BIOS компьютера контроллеру жёсткого диска без изменения.
LBA (Logical Block Addressing) - при этом режиме трансляции используется не та геометрия диска, которую он сообщает BIOS компьютера. Производится приведение к формату, когда количество цилиндров не превышает 1024, а количество секторов на дорожку равно 63. Приведённое количество дорожек при этом зависит от BIOS компьютера и объёма жёсткого диска и может быть равно 16, 64 , 128 или 255, последние версии BIOS как правило используют приведение к 255 (0-254) дорожкам независимо от объёма накопителя. При обращении к диску переданные в LBA-трансляции номер цилиндра, головки и сектора пересчитываются в абсолютный номер сектора, и именно он передаётся BIOS компьютера контроллеру жёсткого диска для выполнения операции. При объёме накопителя свыше 8 Гбайт количество цилиндров получается более 1024, потому на компьютерах, которые не поддерживают работу расширенного режима Int 13h, без установки специального программного обеспечения пространство за границами 8 Гбайт недоступно (независимо от режима трансляции). Иногда, впрочем, помогает обновление BIOS компьютера.
LARGE, или ECHS (Extended CHS) - при этом режиме трансляции производится приведение числа цилиндров к значению менее 1024 за счёт кратного увеличения количества дорожек. Приведённое количество дорожек строго кратно реальному количество секторов на дорожку не изменяется. Впрочем, у большинства современных накопителей количество секторов на дорожку (по уверениям контроллера накопителя) равно 63. Максимально доступный объём на компьютерах, которые не поддерживают работу расширенного режима Int 13h, зависит от реального количества дорожек, но не более 8 Гбайт (например, если диск имеет 16 дорожек, то в LARGE трансляции их может быть 16, 32, 48… 240, но не 255, т.к. 255 не кратно 16, а максимальный доступный объём - 1024 * 240 * 63 * 512 / (10243) = 7.38 Гб).
При использовании трансляции LBA или LARGE за счёт округления до целых значений несколько секторов в конце накопителя могут "выпасть" из описанного пространства и стать недоступными. Впрочем, потери обычно невелики.
на вопрос - что же будет что же будет если у нас диск больше думаю ответ такой - GPT
0
Pashkanin
22 / 22 / 5
Регистрация: 19.02.2014
Сообщений: 114
Завершенные тесты: 1
25.05.2017, 11:29  [ТС] 5
будет ли биос видел раздел, если не заполнять c, h, s? Как может повести себя контроллер диска?
0
vxg
Модератор
3306 / 2098 / 332
Регистрация: 13.01.2012
Сообщений: 8,152
25.05.2017, 11:44 6
Pashkanin, а вообще - английская версия вики дает больше информации вроде https://en.wikipedia.org/wiki/Master_boot_record#PTE

Добавлено через 53 секунды
Цитата Сообщение от Pashkanin Посмотреть сообщение
будет ли биос видел раздел, если не заполнять c, h, s? Как может повести себя контроллер диска?
если читать цитату то создается впечатление что заполнять его нужно в любом случае причем таким образом что бы получались правильные адреса даже если геометрия не соответствует фактической

Добавлено через 11 минут
Думаю ценный совет куда копать может дать Убежденный
0
Pashkanin
22 / 22 / 5
Регистрация: 19.02.2014
Сообщений: 114
Завершенные тесты: 1
25.05.2017, 11:51  [ТС] 7
Цитата Сообщение от vxg Посмотреть сообщение
последние версии BIOS как правило используют приведение к 255 (0-254)
а на инглийской вики(по твоей же ссылке) написано, что последние 2 бита зарезервированы под номер цилиндра(9-10 биты)

переформулирую вопрос.
результат который мне нужен - как это происходит в дебиане, скачиваю образ gparted.iso, добавляю пару нулей(dd if=/dev/zero bs=5000000 count=1|pv>>gparted.iso), открываю этот образ в gparted(обычном) , создаю раздел в свободном пространстве(скорей всего, fat32 с lba, но надо проверить), и его видят и винда, и линукс.
В образе меняются только байты, отвечающие за 3-й раздел(тот, который создал), которые до этого были пустыми. Образ остается загрузочным.

За максимальные значения C, H, S, берутся значения, не зависящие от длины диска(длина, само собой, ограничивается до десятка ГБ, а то и меньше).

Что для этого нужно?
0
Pashkanin
22 / 22 / 5
Регистрация: 19.02.2014
Сообщений: 114
Завершенные тесты: 1
25.05.2017, 15:15  [ТС] 8
уже довольно-таки долго с этим ковыряюсь, а толку ноль. Нашел только пару дурацких калькуляторов, вроде http://www.deathwombat.com/diskgeometry.html и кучу древних блогов, толи списанных с вики и дополненных, толи вики по ним пополнялась...
Собственно, вопрос
СмещениеДлинаОписание
00h1Признак активности раздела
01h1Начало раздела — головка
02h1Начало раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
03h1Начало раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
04h1Код типа раздела
05h1Конец раздела — головка
06h1Конец раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
07h1Конец раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
08h4Смещение первого сектора
0Ch4Количество секторов раздела

Как все это чудо заполняется?
Допустим, возьму я сектор размером 512, объем жесткого известен, а значит, и количество секторов. Откуда головки и цилиндры брать?

Добавлено через 13 часов 22 минуты
Цитата Сообщение от Pashkanin Посмотреть сообщение
переформулирую вопрос.
результат который мне нужен - как это происходит в дебиане, скачиваю образ gparted.iso, добавляю пару нулей(dd if=/dev/zero bs=5000000 count=1|pv>>gparted.iso), открываю этот образ в gparted(обычном) , создаю раздел в свободном пространстве(скорей всего, fat32 с lba, но надо проверить), и его видят и винда, и линукс.
В образе меняются только байты, отвечающие за 3-й раздел(тот, который создал), которые до этого были пустыми. Образ остается загрузочным.
За максимальные значения C, H, S, берутся значения, не зависящие от длины диска(длина, само собой, ограничивается до десятка ГБ, а то и меньше).
Что для этого нужно? какие именно берутся значения CHS
Редактор MBR
0
Tau_0
X-Factor
Эксперт Hardware
3160 / 2092 / 182
Регистрация: 16.11.2011
Сообщений: 5,840
27.05.2017, 23:23 9
Цитата Сообщение от Pashkanin Посмотреть сообщение
Откуда головки и цилиндры брать?
На современных OS и хардах про C/H/S разметку лет 20 как забыли...
Но если хочется начать с азов то рекомендую MBR/EBR Partition Tables

Это очень серьёзный ресурс. С наскока взять его не получится, но за годик, если вдумчиво побродить по нему вверх<->вниз и вправо<->влево, знаний у Вас по-настоящему прибавится...

ЗЫ Там и для линуксоидов много чего полезного есть, хотя основной упор сделан на Windows...
2
27.05.2017, 23:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2017, 23:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка при установке "На выбранном диске находится таблица MBR-разделов"
Проблема такая: сделал я загрузочную флешку и начал установку Windows 10 на ноутбук Lenovo G500....

Ошибка: "Установка Windows на данный диск невозможна. На выбранном диске находится таблица MBR-разделов..."
В связи с вот этими обстоятельствами решил переустановить Виндовс 10 с 32-х разрядной на 64-х...

Сводная таблица + расчёт динамики по периодам
Добрый день форумчане! Вот такая не хитрая задачка. Есть &quot;Общая таблица&quot; из неё необходимо...

Показать координаты 1-го основного раздела жесткого диска в CHS виде
Мне нужно показать координаты 1-го основного раздела жесткого диска в CHS виде. Код чтения сектора...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.