Управление памятью (сегментация и разбиение на страницы) в 80286 и 80386: как это работает?
Я обнаружил множество веб-сайтов и книг, объясняющих, как работает управление памятью на процессорах 8086 и более поздних x86 в реальном режиме. Я понимаю, я думаю, как два 16-битных значения, адрес сегмента и смещение объединяются для получения линейного 20-битного физического адреса (сдвиг сегмента на четыре бита влево, добавление смещения; сегменты составляют 64 КБ и начинаются каждые 16 байтов).
Но я не смог найти хороших веб-сайтов или книг, которые объясняли бы, как работает управление памятью в защищенном режиме, в частности различия между 80286 и 80386.
Может кто-нибудь указать мне хороший веб-сайт или книгу (или объяснить это прямо здесь)?
(Для дополнительного кредита, т.е. upvote, как это работает в длинном режиме?)
2 ответа
http://www.ddj.com/184409207 Доктор Доббс опубликовал несколько статей еще в 93 и 94 об этом, и между 286 и 386 не слишком много различий в обращении с памятью. Основа в том, что вы не можете выполнять манипуляции с сегментом: регистры смещения, потому что базовая область памяти и длина теперь являются частью селектора, который вы называете дескриптором.
Вы устанавливаете селектор N с базовым адресом X длиной M. Когда этот селектор активирован (помните синтаксис CS: сборка?), Этот диапазон памяти используется (выгружается и т. Д.). Селектор N (16-битный дескриптор) относится к этой структуре данных.
В защищенном режиме модели с плоской памятью код, данные и стек устанавливаются с одинаковыми адресами памяти (и длиной 4 ГБ). Эта ссылка охватывает основы довольно хорошо.
Для реального режима нет элемента управления памятью, просто умножьте регистр сегмента на 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