Запоминающие устройства ЭВМ, страница 27

Когда CPU обращается к области памяти, входящей в окно (адрес памяти оена ниже 1 Мб), аппаратно происходит обращение к соответствующим страницам дополнительной памяти на плате расширения. Посредством механизма адресации, реализуемого драйвером EMS, стало возможным обращаться к 8 Мб (стандарт LIM 3.2), затем к 32 Мб (стандарт LIM 4.0) и т.д. дополнительной памяти, которая конструктивно располагалась на отдельной плате (карте расширения). После появления Intel 80386 такая отдельная карта расширения стала не обязательна, а потом и не нужна. В дальнейшем EMS стало возможным эмулировать с помощью соответствующих драйверов. Чтобы использовать EMS-память необходимо выполнение двух условий:

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

2)  необходим специальный «менеджер» (Expanded Memory Manager, EMM), который организует страницы памяти и управляет ими.

Ранее для старых материнских плат драйвер управления памятью поставлялся на отдельной дискете. В настоящее время этот драйвер входит в стандартные поставки DOS b Windows, всякий раз он соответствует последнему  стандарту LIM и традиционно именуется  EMM386.EXE. Этот драйвер позволяет программно эмулировать дополнительную (Expanded) память в расширенной (Extended) памяти. В CONFIG.SYS этот драйвер определяется, как правило, так:

                        Device = C:\DOS\EMM386.EXE xxxx

или

                        Device = C:\Windows\EMM386.EXE xxxx

Параметр обозначенный xxxx определяет в килобайтах величину эмулируемой Expanded-памяти.

            Командная строка

                        C:\DOS\EMM386.EXE 1024

файла CONFIG.SYS резервирует 1 Мб дополнительной памяти, что можно проверить, например, с помощью утилиты SysInfo, входящей в пакет Norton Utilities. Справку о распределении памяти можно с помощью команды MEM.

            Эмулировать дополнительную память необходимо только в том случае, если выполняются соответствующие программы. Такие программы как, например, AutoCad или Windows, нуждаются скорее в памяти XMS, о которой речь далее. В таком случае драйвер EMM386.EXE служит для идентификации и управления блоками верхней памяти (UMB) и его надо применять всякий раз, записав в CONFIG.SYS командную строку:

                        Device = C:\DOS\EMM386.EXE NoEms.

Здесь параметр NoEms означает, что в области памяти выше 1 Мб под дополнительную память не надо выделять ни одного байта (важное достоинство Windows).

<83>

 1.6.4. НМА.

Первый блок величиной 64 Кб непосредственно выше границы 1 Мб оперативной памяти обозначают НМА (High Memory Area). Своему существованию эта область целиком обязана несколько "ущербной" эмуляции процессора 8088 (и 8086) процессором 80286. Дело состоит в следующем. Вся стандартная память, помимо того, что может быть представлена в виде 16 непересекающихся блоков размером 64Кб каждая (с «порядковыми номерами» 0—F), также может быть представлена и в виде перекрываемых областей по 64 Кб каждая, называемых сегментами, которые, вообще говоря, могут начинаться через каждые 16 байт.

Максимальный полный адрес в виде

 сегмент: смещение,

по которому может обратиться процессор 8088/8086, — это FFFFh:000Fh (20 адресных линий). Если увеличить это значение хотя бы на единицу, то произойдет циклический перенос (Wrap around) и значение адреса станет 0000h:0000h. Для CPU 80286 и последующих поколений процессоров в общем случае этого не произойдет, так как адресная шина этих процессоров имеет больше 20 разрядов. Но, разумеется, адрес памяти при этом превысит границу 1 Мб. Чтобы исправить эту ошибку, фирма IBM предусмотрела на материнских платах PC специальные аппаратные средства, заставляющие процессоры после 80286 выполнять переход на низшие адреса, как это было при работе процессора 8088/8086. Однако такой переход можно и отменить  чисто программным путем.