G.3. Драйвер дополнительной памяти EMM386.EXE

Драйвер Emm386.exe осуществляет поддержку работы расширенной памяти (спецификация XMS), эмуляции дополнительной памяти (спецификация EMS) и поддержку загрузки программ и драйверов в область старших адресов (UMB) на компьютерах с процессором i80836 и выше. Этот драйвер обеспечивает:

1. управление выделением расширенной памяти для программ, работающих под управлением MS-DOS;

2. эмуляцию дополнительной памяти (EMS) в расширенной (смотри разделы "Терминология" и "Предыстория");

3. работу микропроцессора i80386 в защищенном режиме и режиме эмуляции микропроцессора i8086 (смотри раздел "Режимы работы микропроцессоров Intel);

4. загрузку резидентных программ и драйверов устройств в области старших блоков памяти (upper memory block, UMB).

Драйвер Emm386 устанавливается командой Device в файле Config.sys. Строка. инициализирующая этот драйвер, должна располагаться обязательно после строки инициализации драйвера HIMEM.SYS. Формат этой команды следующий:

DEVICE=<диск>:\<путь>\EMM386.EXE [<опции>],

где <диск>:\<путь> - описание полного пути доступа к файлу Emm386.exe. Обычно этот файл находится в той же директории, что и файл HIMEM.SYS (смотри описание путей для этого файла в разделе "Драйвер расширенной памяти HIMEM.SYS"). Этот драйвер присутствует в операционных системах MS-DOS версий 5.0 - 6.22, а также Microsoft Windows 95/98. В Windows NT установка этого драйвера (как и драйвера HIMEM.SYS) не предусмотрена. В этой операционной системе вместо этих драйверов используются другие драйверы расширенной и дополнительной памяти, работающие на уровне ядра (смотри глоссарий) этой операционной системы. В Windows 95/98 драйверы HIMEM.SYS и EMM386.EXE устанавливаются только для поддержки работы устаревших программ в сеансе MS-DOS или эмуляции MS-DOS (смотри "Руководство пользователя операционной системой Windows 95"). Собственные драйверы Windows 95/98 (и частично Windows 3.xx) поддержки расширенной и дополнительной памяти для своих приложений также работают на уровне ядра этих операционных систем.

Драйвер дополнительной памяти Emm386 по умолчанию настроен на поддержку эмуляции дополнительной памяти стандарта EMS LIM 4.00 (минимум 256 Кбайт дополнительной памяти, максимум - вся расширенная память; имеется четыре страницы дополнительной памяти по 400h байт, расположенных последовательно, адрес первой страницы - D0000h) и поддержку четырех блоков старшей памяти (Смотри раздел "Опции драйвера EMM386 по умолчанию). Однако часто, особенно на старых или новейших моделях компьютеров, необходимо указать в строке описания команды в файле Config.sys хотя бы одной опции. Эти опции приведены ниже.

-----------------------------------------------------------

Наиболее часто указываются следующие опции (или ключи) этой команды - ON, OFF, AUTO, NOEMS, HIGHSCAN.

Ключи ON/OFF/AUTO управляют расширенной памятью. Используйте эти ключи с осторожностью! Дело в том, что обычно область страниц дополнительной памяти EMS LIM расположены последовательно в адресном пространстве D0000h-Dffffh. Так исторически сложилось, что именно это пространство адресов использовалось в микропроцессоре i8086 для обращения к дополнительной памяти. Но у современных компьютеров в этом диапазоне адресов может находиться область дополнительного ПЗУ. В частности, здесь располагается BIOS поддержки универсальной шины (universal serial bus, USB). Обращение драйвера Emm386 по этим адресам может привести к серьезному сбою в системе, в результате чего компьютер перестанет загружаться. Именно поэтому перед указанием этих ключей необходимо с помощью других опций переназначить адрес кадра страниц дополнительной памяти в область, не содержащей ПЗУ (смотри разделы "Классификация памяти" этой части выпуска и "Настройка чипсета" в IV части данного выпуска).

В качестве альтернативы можно вообще запретить эмуляцию дополнительной памяти этим драйвером, оставив возможность загрузки резидентных программ и драйверов устройств в старшую память. Это можно осуществить с помощью ключа NOEMS, Более того, часто для удовлетворительной работы драйвера Emm386 под управлением Windows 95/98 необходимо указывать только этот ключ! (Автор оставляет это высказывание на своей совести).

Ключ HIGHSCAN в MS-DOS v. 6.0 и выше служит для эффективного управления размещением блоков старшей памяти (UMB) и окон дополнительной памяти в случае, когда такое управление, осуществляемое драйвером Emm386 по умолчанию, не эффективно. Этот ключ нельзя применять в операционных системах Microsoft Windows 95/98, хотя его использование в MS-DOS позволяет избежать множества проблем с распределением памяти.

Назад | Содержание | Вперед