3.1 Вычисление физического (исполнительного) адреса в виртуальном режиме
Память компьютера может быть поделена на один или несколько сегментов различной длины, которые могут подкачиваться с диска или использоваться совместно несколькими программами. Память может также делится на одну или несколько 4-х Килобайтовых страниц. Сегментация и страничная организация могут использоваться совместно, обеспечивая преимущества обоих методов. Эти методы являются взаимодополняющими. Сегментирование удобно для прикладных программистов, работающих с логическими адресами, тогда как страничная адресация – для системных программистов, управляющих физической памятью.
МП 286+ имеют три типа адресов:
ЛОГИЧЕСКИЙ (виртуальный);
ИСПОЛНИТЕЛЬНЫЙ (линеаризованный);
ФИЗИЧЕСКИЙ.
ЛОГИЧЕСКИЙ (ВИРТУАЛЬНЫЙ) АДРЕС включает селектор и смещение. СЕЛЕКТОР – содержимое сегментного регистра. СМЕЩЕНИЕ – это эффективный адрес – ЕА, т.е. сумма базы, индекса и смещения. Каждая задача может оперировать с 16 К (214 – 1) селекторами сегментов, каждый из которых может быть размером 4 ГБайт (232 Байт), создавая тем самым общее пространство 246 Байт (64 ТБайт) для задачи. Для МП I80286 размер сегмента может быть до 64 КБайта (216 Байт), а общее виртуальное пространство одной задачи может достигать 1 ГБайт (230 Байт).
С появлением 64-битовых расширений размер виртуальной памяти увеличился до 264 Байт.
Блок сегментации транслирует ЛОГИЧЕСКИЕ АДРЕСА в ИСПОЛНИТЕЛЬНЫЕ. Блок страничной адресации преобразует исполнительные адреса в физические. Если блок страничной адресации не используется (бит 31 в регистре управления CR0 сброшен: PG = 0), то исполнительный адрес является физическим. ФИЗИЧЕСКИМ называется АДРЕС НА КОНТАКТАХ ШИНЫ АДРЕСА ПРОЦЕССОРА. У МП I80286 отсутствует блок страничной адресации, поэтому исполнительный адрес является физическим.
Основное отличие режима РА от ВА заключается в том, как логический адрес преобразуется в исполнительный. В РРА блок сегментации сдвигает селектор на 4 бита влево и добавляет результирующее смещение (эффективный адрес – ЕА).
При работе в РЕЖИМЕ ВИРТУАЛЬНОГО ПРОЦЕССОРА I8086 (VM 86) в качестве базового адреса также используется селектор, сдвинутый влево на 4 разряда. Формируемый в этом режиме эффективный адрес (внутрисегментное смещение) имеет 16 разрядов.
В ВИРТУАЛЬНОМ РЕЖИМЕ 32-х или 48-ми битовый указатель называется ВИРТУАЛЬНЫМ АДРЕСОМ. Он, как и ЛОГИЧЕСКИЙ АДРЕС в реальном режиме, состоит из 16-ти битового СЕЛЕКТОРА и СМЕЩЕНИЯ, длиной 16 или 32 бита. По-прежнему СЕЛЕКТОР определяет НАЧАЛЬНЫЙ (БАЗОВЫЙ) АДРЕС СЕГМЕНТА, к которому для получения физического адреса прибавляется СМЕЩЕНИЕ.
16-ти битовый СЕЛЕКТОР виртуального адреса (загружаемый в соответствующий сегментный регистр) состоит из трех полей (рис. 3.3):
RPL – ЗАПРАШИВАЕМЫЙ УРОВЕНЬ ПРИВИЛЕГИЙ – используется операционной системой для решения проблем защиты информации;
TI – ИНДИКАТОР ТАБЛИЦЫ – выбирает глобальную дескрипторную таблицу (GDT), если ТI = 0; эта единственная таблица GDT разделяется всеми задачами; если ТI = 1, то используется локальная дескрипторная таблица (LDT), причем каждая задача имеет свою LDT;
13-ти битовое поле ИНДЕКСА содержит индекс (смещение или адрес) внутри выбранной таблицы.
ПОЛЕ ИНДЕКСА в селекторе служит индексом (смещением) выбранной таблицы. Каждый элемент таблицы называется ДЕСКРИПТОРОМ. Дескрипторы имеют длину 8 байт (64 бита). Поэтому адреса каждого дескриптора кратны 8 (содержат три нуля в младших битах). Таблица (GDT или LDT) может занимать в памяти полный сегмент размером до 64 КБайта.
Полученный из выбранного дескриптора 24-х битовый (для процессора I80286) или 32-х битовый (для МП 386+) БАЗОВЫЙ АДРЕС без сдвига суммируется с 16-ти или 32‑х битовым смещением, в результате чего получается 24-х битовый физический адрес ячейки памяти (для МП I80286) или 32-х битовый линейный адрес (для процессоров 386+) (см. рис, 3.3).
Так как имеющаяся в конкретном компьютере память обычно меньше, чем необходимая память для программ, в тех ситуациях, когда памяти компьютера не хватает, приходится привлекать методы организации ВИРТУАЛЬНОЙ ПАМЯТИ и внешние запоминающие устройства (дисковые накопители).
В любой момент времени в основной памяти компьютера находятся только несколько сегментов задачи. ОПЕРАЦИОННАЯ CИСТЕМА должна пересылать сегменты с диска в память, когда они потребуются, и возвращать их на диск, освобождая память, когда сегменты долго не используются.