2

Я нашел множество веб-сайтов и книг, объясняющих, как работает управление памятью на процессорах 8086 и более поздних x86 в реальном режиме. Я понимаю, я думаю, как два 16-битных значения, адрес сегмента и смещение объединяются, чтобы получить линейный 20-битный физический адрес (сдвинуть сегмент на четыре бита влево, добавить смещение; сегменты составляют 64 КБ и начинать каждые 16 байтов).

Но я не смог найти хороших веб-сайтов или книг, в которых объяснялось бы, как работает управление памятью в защищенном режиме, в частности различия между 80286 и 80386.

Может кто-нибудь указать мне хороший веб-сайт или книгу (или объяснить это прямо здесь)?

(Для дополнительного кредита, т.е. upvote, как это работает в длинном режиме?)

2 ответа2

3

http://www.ddj.com/184409207 Доктор Доббс опубликовал несколько статей еще в 93 и 94 об этом, и между 286 и 386 не слишком много различий в обращении с памятью. Основа в том, что вы не можете выполнять манипуляции с сегментом: регистры смещения, потому что базовая область памяти и длина теперь являются частью селектора, который вы называете дескриптором.

Вы устанавливаете селектор N с базовым адресом X длиной M. Когда этот селектор активирован (помните синтаксис сборки CS:?) этот диапазон памяти используется (выгружается и т. д.). Селектор N (16-битный дескриптор) относится к этой структуре данных.

В защищенном режиме модели с плоской памятью код, данные и стек устанавливаются с одинаковыми адресами памяти (и длиной 4 ГБ). Эта ссылка охватывает основы довольно хорошо.

1

Для реального режима нет элемента управления памятью, просто умножьте регистр сегмента на 16 и добавьте смещение, затем поместите этот результат в 21 бит (да 21 бит, потому что 0xFFFF * 0x10+0xFFFF = 0xFFFF0 * 0xFFFF = 0x1FFFEF или 1_1111_1111_1111_1110_1111b, значение 21 бит) по адресу автобус.

Для длинного режима сегментация существует, но дескрипторы имеют основание 0 и предел 0xFFFFFFFFFFFFFFFF(16EB), таким образом, это плоский режим, пейджинг вокруг и аналогичен пейджингу PAE, но таблица указателей каталога страниц расширена с 4 записей до 512 записей и уровня страницы. 4 Таблица с 512 записями, каждая из которых указывает на отдельную таблицу указателей каталога страниц.

А вот некоторые сайты, которые объясняют это более подробно:http://en.wikipedia.org/wiki/Real_mode для реального режима и http://en.wikipedia.org/wiki/Long_mode для режима ling

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .