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

Логическое распределение оперативной памяти определяется не только при­меняемой операционной системой, но и особенностями аппаратной реализа­ции IBM-совместимых PC. Знание строения ОЗУ необходимо для программ­ной оптимизации системы.

Можно выделить пять важнейших логических областей оперативной памяти:

 Стандартная оперативная память (Conventional Memory);

 ЕМS-память (Expanded Memory Specification) – дополнительная память;

 UMA (Upper Memory Area) – верхняя память;

 HMA (High Memory Area);

 XMS (Extended Memory Specification) – расширенная память

Стандартная оперативная память

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

В то время как внутри PC обычно все выражается в двоичной системе счисле­ния (0 или 1), для адресации памяти применяется шестнадцатеричная, харак­теризующаяся наличием символа “h” после значения.

Стандартная память начинается от адреса 0000:0000 и про­должается до адреса А000:0000, занимая 640Кбайт. Этот невысокий верхний предел был установлен процес­сорами 8088 и 8086. Эти процессоры имели 20-разрядную адресную шину и поэтому могли адресовать только 1 Мбайт памяти (220=l 048 576 байт). В пределах этой памяти выше уровня 640 Кбайт фирмой IBM были зарезер­вированы 384 Кбайта для выполнения внутренних функций, на которых мы остановимся ниже.

В стандартной памяти расположены таблица векторов прерываний, область данных BIOS, операционная система.

Таблица векторов прерываний

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

Область данных BIOS

Вслед за таблицей прерываний расположена область данных BIOS объемом 768 Байт. Здесь размещены, например, счетчик таймера, буфер клавиатуры и другая внутренняя информация.

Операционная система

Далее в стандартной оперативной памяти расположена опера­ционная систе­ма. Конечно же, она загружается в RAM не полностью, а только частично (ядро). Ядро ОС не имеет постоянного адреса памяти. Его местоположение и размер занимаемой им памяти зависят от операционной системы.

Основная область памяти

Далее до адреса A000h:0000h все принадлежит только программам и данным. Этот адрес известен как граница 640 Кбайт, с которой успешно справляются мно­гие PC с процессором выше 80286.

UMA

Верхняя память – участок памяти от 640Кб до 1 Мб.

Здесь находится информация, которая служит для сопряжения прикладных программ с раз­личными картами расширений, уста­новленными в PC. И поскольку иногда карты расширения, например, видеокарту, называют адаптером (Adapter), эту область памяти коротко называют сегментом адаптера или, поскольку речь идет об области памяти с более высокими адресами, UMA (Upper Memory Area). Эта верхняя память (Upper Memory) располагается по адресам от A0000h до FFFFFh (от 640 Кбайт до 1 Мбайт), ее размер составляет 384 Кбайт.

Рассматриваемая область памяти не однородна. В UMA размешается видеопа­мять и ПЗУ BIOS, а также могут находиться модули постоянной и оператив­ной памяти, конструктивно расположенные на картах расширения, подклю­ченных к PC. Поэтому среди этих блоков некоторые являются зарезервиро­ванными (пользователь не может их исполь­зовать), другие, напротив, свобод­ны. Свободные блоки, поскольку они находятся в верхней памяти, также называют UMB (Upper Memory Block).

EMS

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

Для того чтобы преодолеть этот барьер, фирмы Lotus, Intel и Microsoft (отсюда название LIM) создали стандарт, который основывается на так называемом переключении банков (Bank Switchings), или блоков (страниц), памяти. В об­ласти UMB между видеобуфером и системным ROM BIOS выделяется неза­нятое «окно» (page frame) размером 64 Кбайт, разделенное на 4 логические страницы по 16 Кбайт. С помощью специального драйвера, например ЕММ386.ЕХЕ, строятся «ото­бражения» до четырех произвольных физических страниц из дополнительной (Expanded) памяти, расположенной на специаль­ной карте расширения, в логические. Поэтому эту память часто называют отображаемой памятью. При необходимости обращения к данным, располо­женным в дополнительной памяти, с помощью драйвера выбирается соответ­ствующее ранее построенное «отображение» физических страниц в логичес­кие. Когда процессор обращается к области памяти, входящей в «окно» (адрес памяти которого ниже 1 Мбайт), аппаратно происходит обращение к соответствую­щим страницам дополнительной памяти на плате расширения. Таким обра­зом, посредством адресации, реализуемой драйвером EMS, можно обращать­ся к 8 Мбайт (стандарт LIM 3.2) или к 32 Мбайт (стандарт LIM 4.0) дополнительной памяти, которая конструктивно расположена на отдельной карте расширения. На PC с процессорами 80386 и выше такая отдельная карта не нужна. EMS здесь может эмулироваться с помощью соответствующих драй­веров.

Для того чтобы использовать EMS-память, необходимо выполнение двух условий:

 прикладные программы должны уметь обращаться к драйверу EMS-па­мяти;

 необходим специальный менеджер памяти (Expanded Memory Manager), со­кращенно EMM, который организует страницы и управляет ими. Ранее, для старых материнских плат, соответствующий драйвер поставлялся на отдельной дискете. В настоящее время этот драйвер входит в стандарт­ные поставки DOS и Windows, в этом случае он соответствует последне­му стандарту LIM и представляет собой файл ЕММ386.ЕХЕ. Этот драй­вер позволяет программно эмулировать дополнительную (Expanded) па­мять в расширенной (Extended) памяти.

НМА

Первый блок величиной 64 Кбайта непосредственно выше границы 1 Мбайт оперативной памяти обозначают как НМА (High Memory Area). Своему сущест­вованию эта область целиком обязана несколько «ущербной» эмуляции процес­сора 8088 процессором 80286. Дело состоит в следующем. Вся стандартная па­мять, помимо того, что может быть представлена в виде 16 неперекрываемых блоков размером 64 Кбайта каждая (0–F), также может быть представлена и в виде перекрываемых 64 Кбайтных областей, называемых сегментами, которые, вообще говоря, могут начинаться через каждые 16 байт. Максимальный пол­ный адрес в виде сегмент: смещение, по которому может обратиться процессор 8088, – это FFFF:000Fh (20 адресных линий). Если увеличить это значение хотя бы на единицу, то произойдет циклический перенос (wrap around) и значе­ние адреса станет 0000:0000. Для процессора 80286 и выше в общем случае этого не случится, так как адресная шина этих процессоров больше 20 разрядов, но адрес памяти при этом превысит границу 1 Мбайт. Чтобы исправить эту ошибку, фир­ма IBM предусматривает на материнских платах PC специальные аппаратные средства, «заставляющие» процессор 80286 выполнять переход на низшие адре­са, как это было при работе процессора 8088. Однако такой переход может быть отменен чисто программным путем. Таким образом, PC с процессором не ниже 80286 в реальном режиме может дополнительно адресовать память в пределах FFFF:0010-FFFF:FFFFh, т.е. практически целый сегмент размером 64 Кбайт минус 16 байт. Особенно важным для понимания является тот факт, что область НМА доступна, по сути, в реальном режиме работы процессора.

XMS

В 1982 году появилась возможность использования расширенной памяти.

Расширенная память – часть оперативной памяти в компьютерах с микропроцессорами Intel-80286, расположенная выше первого мегабайта.

XMS (eXtended Memory Specification) обозначает всю память выше границы 1 Мбайт, включая также НМА.

Чтобы иметь доступ к этой памяти, необходим специальный драйвер, с помо­щью которого данные пересылаются из стандартной памяти в расширенную и обратно. Выполнение программ, размещенных в расширенной памяти, не предусмотрено. Драйвер, реализующий XMS, переводит процессор в защищенный режим, т. е. режим, в котором можно адресовать всю память.

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