Когда 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>
Первый блок величиной 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. Однако такой переход можно и отменить чисто программным путем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.