Нырнем коротенько в историю. 1) шина 20 бит

xKVtor писал(-а):
Кстати, вспомнилось тут, что и раньше в сетапах биоса повсеместно присутствовали пункты, связанные с memory hole. Но тогда речь шла о полуоси (OS/2) -- что-то ей спокойно под границей 16Мб (если не ошибаюсь) не жилось.:) Так что новое -- это хорошо забытое старое. Или что-то очень на него похожее.;)

Нырнем коротенько в историю.
1) шина 20 бит (16+4) - адресация 1 Мб. BIOS в пространстве адресуемой памяти занимает старшие адреса (Top) - сегмент F000:0000, всего 64 Кб.

2) шина 24 бита - адресация 16 Мб. BIOS в пространстве адресуемой памяти занимает старшие адреса. ОS/2 процветает, но архитектура оказалась не живучая.
3) шина 32 бита - адресация 4 Гб. BIOS в пространстве адресуемой памяти занимает старшие адреса c FFFF_0000, стартуя при этом с FFFF_FFF0. Для совместимости в момент старта платформа "думает", что стартует с F000:FFF0. По этому поводу OS/2 "нервничает".
4) шина 36 бит - адресация свыше 4 Гб (в зависимости от чипсета). Теперь "нервничают" все операционные системы по поводу региона памяти, начиная как минимум с FFFF_0000, но добавляется (по младшим адресам "вниз") ACPI ROM (который и не ROM вовсе), а также адресное PCI-пространство. На помощь приходят функции INT15h, предложенные Phoenix Technologies. Gap либо виртуализируется, либо ремепится, что позволяет в сеансе ОС обеспечить непрерывность доступной оперативной памяти средствами BIOS(!).