Логическое распределение оперативной памяти в реальном режиме.

Несмотря на то что в реальном режиме доступен 1Мб оперативной памяти, собственно для загрузки программ выделены первые 640 Кб адресуемого пространства, получившие название стандартной памяти (Conventional memory). Оставшиеся 384 Кб зарезервированы для системного использования и носят название верхний блок памяти (UMB - Upper Memory Block).

Замечание: Слово англ. Upper обычно переводят на русский как верхний. Но и слово англ. High переводится как верхний. С этим связано множество коллизий при переводе названий Upper Memory Block и High Memory Area. В результате, в русскоязычной литературе продолжают использоваться оригинальные англоязычные написания — UMB и HMA

Рассмотрим логическую организацию памяти более детально (рисунок 20)


Рисунок 20. Логическая организация памяти.

Стандартная память

Стандартная оперативная память начинается с адреса 00000 и заканчивается адресом 9FFFF.

Первые 1024 байта оперативной памяти занимает таблица векторов прерываний (занимает 1 Кбайт – 256 элементов по 4 байта). Вектора прерываний - это адреса сервисных программ, входящих в состав операционной системы и BIOS. Каждому прерыванию может соответствовать программа обработки этого прерывания, адрес этой программы это и есть адрес вектор или просто вектор прерывания. Номер прерывания является индексом для таблицы векторов прерываний, а ее элементы - вектора прерываний (4 байта) - представляют собой 16-битные селекторы и 16-битные смещения точек входа в процедуры обработчиков. (рис. 21

Рисунок 21 Таблица векторов прерываний в реальном режиме

Далее следует область данных операционной системы, которая занимает 768 байтов (буфер клавиатуры, счётчик таймера и другая внутренняя информация), после области буферов располагается область для загрузки операционной системы. Система загружается в стандартную оперативная память не полностью, а только частично (ядро), еще выше загружаются драйверы устройств.

Далее в основной области памяти (около 600 Kб) могут располагаться резидентные программы, т.е. программы, которые всегда остаются в памяти. Выше до адреса A000h:0000h все принадлежит только программам и данным.

Верхний блок памяти

Над стандартной оперативной памятью располагается верхняя память (UMB), которая располагается по адресам в диапазоне A0000h—FFFFFh (от 640 Кб до 1 Мб), ее размер составляет 384 Кб. Здесь находится информация, которая служит для сопряжения прикладных программ с различными устройствами.

Сначала в нижней области UMB располагается область памяти видеоадаптера, которая находится в пределах адресов от A000h:0000h до C000h:0000h и занимает 128 Кб. Конструктивно она располагается в видеоадаптере, а логически помещена в адресное пространство памяти компьютера. Фактически это область, через которую можно получить доступ к видеопамяти, где хранится изображение. Обращение к видеопамяти производится через «окно» размером 64 Кб, адрес которого приходится на начало блока A000h:0000h.

В последних 64 Кб верхнего блока памяти выше адреса F000h:0000h располагается ROM BIOS. Здесь, например, находится информация, внесенная в CMOS Setup при конфигурировании PC.

Между памятью видеоадаптера и ROM BIOS находятся несколько свободных блоков, которые могут быть использованы различным образом.

Дополнительная память (EMS)

Основной проблемой при использовании реального режима является недостаток места в стандартной памяти.

Механизм избавления от этого недостатка следующий. Почти всегда в области памяти UMB остается свободное место, на этом базируется спецификация отображаемой (дополнительной) памяти (EMS Expanded Memory Specification), эта спецификация позволяет использовать память для прикладных программ свыше стандартных 640 Кб. Для этого используется стандарт, основанный на переключении блоков (страниц) памяти. Он использует окно размером 64 Кб, которое выделяется в незанятой области UMB, между видеобуфером и ROM-BIOS. Это окно разбито на 16-Кбайтные страницы. С помощью специального драйвера строятся «отображения» четырех произвольных физических страниц в логические из дополнительной (Expanded) памяти, которая ранее располагалась на специальной карте расширения. Поэтому эту память часто называют отображаемой памятью.

Все процессоры начиная с i80368 могут эмулировать расширенную память (старше 1Мб) как дополнительную и отдельная карта уже не нужна.

Когда процессор обращается к области памяти, входящей в окно (адрес памяти которого располагается в UMB), аппаратно происходит обращение к соответствующим страницам дополнительной памяти, т.е. к выбранной странице старше 1 мегабайта.

Используя этот механизм можно задействовать области UMB и видеопамяти. Обычно в UMB переносятся из стандартной оперативной памяти части ядра DOS и драйверы.

Наши рекомендации