Если 32-разрядная операционная система, работающая с моделью сегментированной памяти, будет ли она по-прежнему иметь ограничение 4 ГБ ?
Я читал Руководство разработчика по семейству процессоров Intel Pentium , в котором говорится, что при использовании модели с сегментированной памятью возможно отображение до 64 ТБ памяти.
В сегментированной модели памяти
организация, логический адрес
пространство состоит из целых 16 383
сегменты до 4 гигабайт каждый, или
в общей сложности 2 ^ 46 байт (64
терабайт). Процессор отображает это 64
терабайтное логическое адресное пространство на
физическое адресное пространство
механизм трансляции адресов
описано в главе 11. Применение
программисты могут игнорировать детали
это отображение. Преимущество
Сегментированная модель состоит в том, что смещения в пределах
каждое адресное пространство отдельно
проверил и доступ к каждому
сегмент может быть индивидуально
под контролем.
Это не сложный вопрос. Я просто хочу убедиться, что я правильно понял текст. Если бы Windows или любая другая ОС работали в сегментированной модели, а не в плоской модели, было бы ограничение памяти 64 ТБ?
Обновление:
Системная документация Intel 3-2 3a.
http://pdos.csail.mit.edu/6.828/2005/readings/i386/c05.htm
Сегментный регистр НЕ должен рассматриваться как обычный смысл в реальном режиме. Сегментный регистр действует как SELECTOR для таблицы глобальных дескрипторов.
В защищенном режиме вы используете логический адрес в форме A: B для адресации памяти. Как и в реальном режиме, A является частью сегмента, а B является смещением в этом сегменте. Регистры в> защищенном режиме ограничены 32 битами. 32 бита могут представлять любое целое число от 0 до 4 Гб.
Поскольку B может принимать любое значение от 0 до 4 ГБ, наши сегменты теперь имеют максимальный размер 4 ГБ (то же самое, что и в реальном режиме).
Теперь о разнице. В защищенном режиме А не является абсолютным значением для сегмента. В защищенном режиме А является селектором. Селектор представляет смещение в системной таблице, называемой Глобальной таблицей дескрипторов (GDT). GDT содержит список дескрипторов. Каждый из этих дескрипторов содержит информацию, которая описывает характеристики сегмента.
Сегментный селектор обеспечивает дополнительную безопасность, которую невозможно достичь с помощью подкачки.
Оба эти метода [Сегментация и пейджинг] имеют свои преимущества, но пейджинг гораздо лучше. Сегментация, хотя и остается пригодной для использования, быстро устареет как метод защиты памяти и виртуальной памяти. Фактически, для архитектуры x86-64 требуется плоская модель памяти (один сегмент с основанием 0 и пределом 0xFFFFFFFF) для правильной работы некоторых инструкций.
Однако сегментация полностью встроена в архитектуру x86. Это невозможно обойти. Итак, здесь мы покажем вам, как настроить собственную таблицу глобальных дескрипторов - список дескрипторов сегментов.
Как упоминалось ранее, мы собираемся попытаться настроить модель с плоской памятью. Окно сегмента должно начинаться с 0x00000000 и расширяться до 0xFFFFFFFF (конец памяти). Однако есть одна вещь, которую сегментирование может сделать, что подкачка не может, и это установить уровень вызова.
http://www.jamesmolloy.co.uk/tutorial_html/4.-The%20GDT%20and%20IDT.html
Например, в GDT перечислены различные пользователи, их уровни доступа и области доступа к памяти:
Образец таблицы GDT
GDT[0] = {.base=0, .limit=0, .type=0};
// Selector 0x00 cannot be used
GDT[1] = {.base=0, .limit=0xffffffff, .type=0x9A};
// Selector 0x08 will be our code
GDT[2] = {.base=0, .limit=0xffffffff, .type=0x92};
// Selector 0x10 will be our data
GDT[3] = {.base=&myTss, .limit=sizeof(myTss), .type=0x89};
// You can use LTR(0x18)
http://wiki.osdev.org/GDT_Tutorial#What_should_i_put_in_my_GDT.3F
Пейджинговая часть - это то, что отображается на физическую память. (PAE) обеспечивает дополнительную память объемом до 64 ГБ.
Итак, вкратце. Ответ: нет, вы не можете иметь более 4 ГБ логической памяти. Я считаю претензию на 64 ТБ опечаткой в Руководстве разработчика по семейству процессоров Intel Pentium .