В двух статьях Википедии содержатся полезные сведения: https://en.wikipedia.org/wiki/Master_boot_record и https://en.wikipedia.org/wiki/Logical_block_addressing. Другой полезный источник - Starman's «Все детали многих версий обеих MBR» .
В MBR есть «Записи таблицы разделов» ; и для LBA-совместимых записей они имеют адреса CHS (3 байта) и LBA (4 байта). CHS дает два адреса, один для первого сектора раздела и другой для последнего сектора раздела. А адреса LBA - это адреса LBA первого сектора и общее количество секторов в этом разделе. Таким образом, оба типа адресов не для байтов, а для секторов, и Википедия говорит" Размер сектора, который раньше считался фиксированным, составлял 512 (29) байтов ".
С помощью 4 байтов мы можем закодировать максимальный размер диска до 2 ТБ, так как 4294967295 (от 2 до 32 мощностей минус 1) умножается на 512 байтов на сектор (2147483647,5 килобайт).
LBA-48 не может быть хранится в официально поддерживаемой записи раздела MBR, поскольку 48 бит - это 6 байтов, а MBR (и EBR для 5-го логического раздела) имеют только 4 байта для хранения адресов начального и конечного секторов LBA. LBA-48 используется с GUID GPT - https://en.wikipedia.org/wiki/Logical_block_addressing#LBA48
Текущая 48-битная схема LBA была введена в 2003 году со стандартом ATA-6 , [4] подняв предел адресации до 2 ^ 48 × 512 байт, что в точности равно 128 ПиБ или приблизительно 144,1 ПБ. ... Однако общая таблица разделов Master Boot Record (MBR) в стиле DOS поддерживает только разделы диска размером до 2 ТиБ. Для более крупных разделов это необходимо заменить другой схемой, например, таблицей разделов GUID (GPT), которая имеет тот же 64-разрядный предел, что и текущие расширения INT 13h.
(Существует предложенный несовместимый формат MBR для LBA48 на некоторых случайных вики-подобных сайтах, но он не будет работать с большинством ОС, которые ожидают правильную классификацию c MBR. )
LBA была представлена в 1996 году " в Windows 95B и DOS 7.10 для поддержки дисков размером более 8 ГБ ", как говорится в Википедии . Имеется соответствующий патент IBM, выданный в 1999 году (срок действия которого истек, вероятно, в октябре 2019 года): Функция смещения адреса для жесткого диска, US6415383
Мало что известно о эпохе MBR до LBA, но в DOS 2.0 таблица разделов имела общий размер 64 байта с 4 разделами и 16 байтами на раздел. Это был размер, закодированный в код разбора MBR в DOS2 :
Проверка кода сборки
062C 83C610 ADD SI,+10 ; Checking the next entry...
; (10h = 16 bytes per entry)
Даже ресурс MBR Starman У меня нет информации о причинах , почему 16 байт было выделено для каждой записи таблицы разделов.
Я обнаружил ранее патент AST Research 1990-1992 гг. (теперь присваивается Samsung), Система для разделение жесткого диска с множественным доступом, US5136711A , которое дает макет таблицы разделов в изображении 2 (рисунок 3) с чем-то очень похожим на LBA:
Каждый из сегментов идентификатора раздела 133, 134, 135 и 136 содержит 16 байт дискового пространства, составляющих таблицу 140 разделов (фиг.3), содержащую идентификационную информацию для соответствующего раздела диска.
Таблица 140 разделов была определена в образе как:
- 141 Индикатор загрузки,
- 142 Номер головки,
- 144 Номер сектора,
- номер цилиндра,
- 148 Индекс системы icator,
- 150 номер головки,
- 152 номер сектора,
- номер цилиндра,
- 154 адрес загрузочного сектора,
- 156 сектор число
И в тексте таблицы разделов патента AST 1992, описанной как:
Таблица 140 разделов содержит байт 141 индикатора загрузки, чтобы определить, является ли соответствующий сегмент P4 сегмента загрузочный раздел или не загружаемый раздел. Только один раздел P4, P3, P2 и P1 может быть загружаемым в данный момент. Таблица разделов дополнительно содержит байт 142 номера физической начальной головки, физический стартовый цилиндр и сегмент 144 физического стартового сектора, байт 148 системного индикатора, который идентифицирует тип операционной системы, байт 150 номера физической конечной головки, цилиндр физического конца и физический конечный секторный сектор 152, сегмент 154 адреса загрузочного сектора и сегментный номер 156 сектора, который указывает количество секторов в разделе P4, как хорошо известно в данной области техники.
Итак, в моем Гипотеза, вероятно, поле +8 может использоваться для указания на загрузочный сектор раздела (он может быть размещен не в первом секторе?), а +12 может использоваться для проверки вычислений размера раздела. Но в коде DOS2 не было фактического чтения полей +8 и +12. Они могут быть просто зарезервированы в IBM MBR и повторно использованы в патенте AST для некоторого LBA-подобного использования.
PCMag от 1991 г. ( P C Mag 10 Sep 1991, стр. 410 ) также говорится что 4-байтовые поля уже использовались для адресов LBA-подобных секторов:
Каждая запись в таблице разделов составляет 16 байтов, включая 4 записи для начального сектора и количества секторов. Кроме того, один байт зарезервирован для байта раздела.
То же самое для книги Марка Минаси 1992 года "Руководство по выживанию жесткого диска", по крайней мере, для последнего поля +12 (размер раздела), стр. 279 (там) некоторые фрагменты в книгах Google):
Получить этот номер для исправления загрузочной записи очень просто: оно находится в MBR. Последние четыре байта каждой записи таблицы разделов - это длина раздела в секундах.