Файл EMM386.EXE

Обеспечивает доступ к старшим областям памяти и использует дополнительную память для моделирования расширенной памяти. Этот драйвер устройства должен загружаться командой DEVICE в файле CONFIG.SYS и может использоваться только на компьютерах с процессором 80386 или старше. EMM386 позволяет также загружать драйверы устройств и программы в блоки старшей памяти (UMB).


     DEVICE=[диск:][маршрут]EMM386.EXE [ON OFF AUTO] [память]

            [MIN=размер] [W=ON W=OFF] [Mx FRAME=адрес /Pmmmm]

            [Pn=адрес] [X=mmmm-nnnn] [I=mmmm-nnnn] [B=адрес]

            [L=минXMS] [A=алт_рег] [H=описатели] [D=nnn]

            [RAM=mmmm-nnnn] [NOEMS] [NOVCPI] [HIGHSCAN] [VERBOSE]

            [WIN=mmmm-nnnn] [NOHI] [ROM=mmmm-nnnn] [NOMOVEXBDA]

            [ALTBOOT]

Параметр [диск:][маршрут] задает расположение файла EMM386.EXE.

[ON OFF AUTO] активизирует драйвер устройства EMM386 (при установке в ON), приостанавливает его (OFF), либо переводит в авторежим (AUTO). Авторежим разрешает поддержку расширенной памяти и блоков старшей памяти только при соответствующих вызовах в программе. По умолчанию задается ON. Используйте команду EMM386 для изменения этого значения после запуска EMM386.

Параметр "память" задает максимальный объем дополнительной памяти (в килобайтах), для которой вы хотите обеспечить интерфейс EMS/VCPI (Virtual Control Program Interface). Этот объем добавляется к памяти, используемой для самих UMB и EMM386. Допускается указывать значения в диапазоне от 64 до 32768 или величины объема доступной после запуска EMM386 расширенной памяти (в зависимости от того, что меньше). По умолчанию используется значение, равное объему свободной расширенной памяти. Если вы задаете параметр NOEMS, то по умолчанию используется значение 0. EMM386 округляет это значение до ближайшего кратного 16.

MIN=размер задает минимальный объем обеспечиваемой EMM386 памяти EMS/VCPI в килобайтах (если он доступен). EMM386 резервирует это количество дополнительной памяти для использования в качестве памяти EMS/VCPI при загрузке EMM386 командой DEVICE=EMM386.EXE в файле CONFIG.SYS. Если при запросе программой памяти EMS/VCPI доступно достаточно памяти XMS, EMM386 должен иметь возможность обеспечить дополнительную память EMS/VCPI (до объема, заданного параметром MEMORY). Значения лежат в диапазоне от 0 до значения, указанного в параметре MEMORY. По умолчанию это 256. Если вы задали параметр NOEMS, то по умолчанию используется значение 0. Если MIN превышает значение MEMORY, то EMM386 использует значение, заданное в MIN.

W=ON W=OFF разрешает или запрещает поддержку сопроцессора Weitek. Установка по умолчанию - W=OFF.

Параметр Mx задает адрес страничного кадра. Допустимые значения x лежат в диапазоне от 1 до 14. Каждое значение и соответствующий ему базовый адрес показаны ниже:


        1  -> C000h   6  -> D400h   11 -> 8400h

        2  -> C400h   7  -> D800h   12 -> 8800h

        3  -> C800h   8  -> DC00h   13 -> 8C00h

        4  -> CC00h   9  -> E000h   14 -> 9000h

        5  -> D000h   10 -> 8000h

Значения в диапазоне от 10 до 14 следует использовать только на компьютерах с не менее 512К памяти.

FRAME=адрес непосредственно задает сегмент страничного кадра. Чтобы задать для страничного кадра конкретный адрес базы сегмента используйте параметр FRAME и задайте нужный адрес. Для адресов допускаются значения в диапазоне от 8000h до 9000h и с C000h по E000h (с шагом увеличения 400h). Чтобы обеспечить расширенную память и запретить страничный кадр, вы можете задать FRAME=NONE; однако, это может повлиять на работу некоторых программ, требующих расширенной памяти.

/Pmmmm задает адрес страничного кадра. Допустимые для mmmm находятся в диапазоне от 8000h до 9000h и от C000h до E000h (с шагом увеличения 400h).

Pn=адрес задает адрес сегмента конкретной страницы, где n это номер страницы задаваемой страницы, а "адрес" - нужный адрес сегмента. Допустимые значения n - от 0 до 255. Допустимые значения адреса - от 8000h до 9000h и от C000h до E000h (с шагом увеличения 400h). Адреса для страниц с 0 по 3 должны быть смежными (это обеспечивает совместимость с версией 3.2 спецификации расширенной памяти LIM EMS. Если вы используете параметр Mx, FRAME или /Pmmmm, то не можете задавать для /Pmmmm адреса с 0 по 3.

X=mmmm-nnnn предотвращает использование EMM386 для страницы EMS или UMB конкретного диапазона сегментных адресов. Допустимые адреса для mmmm и nnnn лежат в диапазоне от A000h до FFFFh и округляются до ближайшей 4-килобайтовой границы. Если два диапазона перекрываются, параметр X имеет более высокий приоритет, чем I.

Параметр I=mmmm-nnnn задает диапазон сегментных адресов, используемых для страницы EMS или блоков UMB. Допустимые для mmmm и nnnn значения лежат в диапазоне от A000h до FFFFh и округляются до ближайшей 4-килобайтовой границы. Если два диапазона перекрываются, параметр X имеет более высокий приоритет, чем I.

Параметр B=адрес задает младший сегментный адрес, доступный для "банкирования" EMS (свопинга 16-килобайтовых страниц). Допустимые значения - от 1000h до 4000h. По умолчанию используется значение 4000h.

l=минXMS, обеспечивает, что заданный (в килобайтах) объем дополнительной памяти (по умолчанию - 0) будет доступен после загрузки EMM386.

Параметр A=алт_рег задает, сколько альтернативных наборов регистров (используемых для многозадачной работы) вы хотите выделить для EMM386. Допускаются значения от 0 до 254 (по умолчанию 7). Каждый альтернативный регистр добавляет к объему памяти EMM386 около 200 байт.

H=описатели задает, сколько описателей может использовать EMM386. Допускаются значения от 2 до 255 (по умолчанию - 64).

Параметр D=nnn определяет, сколько килобайт памяти следует зарезервировать для буферизации прямого доступа к памяти (DMA). Это значение должно отражать наибольший обмен DMA во время активности EMM386 (без учета DMA гибкого диска). Допускаются значения с 16 по 256 (по умолчанию 16).

Параметр RAM=mmmm-nnnn задает адреса сегментов, используемых UMB, и разрешает поддержку EMS. Если вы не задаете этот диапазон, EMM386 использует для создания блоков UMB и страничного кадра для EMS все доступное пространство.

Параметр NOEMS обеспечивает доступ к областям старшей памяти, но предотвращает доступ к расширенной памяти.

NOVCPI запрещает поддержку приложений VCPI. Этот параметр должен использоваться с параметром NOEMS. Если вы зададите NOVCPI без параметра NOEMS, EMM386 не запрещает поддержку VCPI. Если вы зададите оба параметра EMM386 игнорирует параметры MEMORY и MIN. Запрет поддержки приложений VCPI уменьшает объем выделенной дополнительной памяти.

Параметр HIGHSCAN определяет, что EMM386 использует для определения доступности старшей памяти для окон UMB или EMS некоторые дополнительные проверки. На отдельных компьютерах этот параметр может не действовать или приводить к тому, что EMM386 будет идентифицировать старшую память как доступную, когда она таковой не является. В результате система может "зависнуть".

VERBOSE указывает EMM386 на вывод при загрузке сообщений о состоянии и сообщений об ошибках. По умолчанию EMM386 выводит сообщения только в том случае, если обнаруживает ошибку. VERBOSE можно сократить до V.

WIN=mmmm-nnnn резервирует заданный диапазон адресов сегментов не для EMM386, а для Windows. Для mmmm и nnnn допускаются значения от A000h до FFFFh, которые округляются до ближайшей 4-килобайтовой границы. Если диапазоны перекрываются, параметр X имеет больший приоритет, чем WIN. Параметр WIN имеет больший приоритет, чем параметры RAM, ROM и I (в случае перекрытия их диапазонов).

[NOHI] предотвращает загрузку EMM386 в старшую область памяти. Обычно часть EMM386 загружается в старшую память. Задание этого параметра уменьшает объем доступной обычной памяти и увеличивает объем доступной для UMB старшей памяти.

[ROM=mmmm-nnnn] задает диапазон адресов, используемый EMM386, для теневой памяти RAM (ОЗУ), используемой как ROM (ПЗУ). (О теневой памяти рассказывается ниже в описании HIMEM.SYS.) Для mmmm и nnnn допускаются значения от A000h до FFFFh (которые округляются до ближайшей 4-килобайтовой границы). Указание этого параметра может увеличить скорость работы вашей системы (если она еще не имеет теневой оперативной памяти).

[NOMOVEXBDA] запрещает перемещение EMM386 расширенных данных BIOS из обычной памяти в старшую.

Параметр [ALTBOOT] задает использование драйвером EMM386 для перезапуска компьютера при нажатии CTRL+ALT+DEL альтернативного обработчика. Указывайте этот параметр только в том случае, если ваш компьютер "зависает" или при другом необычном поведении при нажатии CTRL+ALT+DEL с загруженным EMM386.

Преобразуя память XMS в память EMS/VCPI, EMM386 обеспечивает память EMS/VCPI использующих ее программ. При загрузке EMM386 резервирует для использования в качестве EMS/VCPI объем памяти, заданные параметром MIN (по умолчанию - 256К). После резервирования данного объема XMS она всегда будет доступной как память EMS/VCPI и не будет доступна, как память XMS. EMM386 может преобразовывать в EMS/VCPI дополнительный объем памяти XMS (до объема, заданного в параметре MEMORY). Когда она больше не требуется как память EMS/VCPI, EMM386 возвращает дополнительный объем обратно в память XMS.

Если вы задали MIN=0, EMM386 не резервирует XMS для использования в качестве памяти EMS/VCPI. Вместо этого она конвертирует память XMS в память EMS/VCPI только когда ее запрашивает программа. Это освобождает память XMS, когда память EMS/VCPI не требуется. Однако, EMM386 не сможет предоставить запрошенный объем памяти EMS/VCPI, если программы распределили во время запроса всю память XMS.

Перед командой DEVICE для EMM386.EXE вы должны включить в файл CONFIG.SYS команду DEVICE для драйвера HIMEM.SYS.

Если вы не хотите использовать EMM386 для обеспечения доступа к старшей памяти, то параметры в командной строке DEVICE указывать не нужно. EMM386 обычно правильно работает со значениями по умолчанию. Однако в некоторых случаях желательно управлять характером использования памяти EMM386. Помните, что параметры EMM386.EXE следует использовать аккуратно, иначе ваша система не будет работать.

Кроме доступа к расширенной памяти EMM386 обеспечивает доступ к старшей памяти, которую вы можете использовать для загрузки отдельных программ и драйверов устройств. Для обеспечения доступа к старшей памяти укажите параметры RAM или NOEMS. Чтобы дать MS-DOS доступ к старшей памяти, но не к расширенной, используйте параметр NOEMS. Для доступа и к старшей области памяти, и к расширенной памяти укажите параметр RAM. Он обеспечивает доступ для работы драйверов и программ к меньшему объему старшей памяти, чем NOEMS. В любом случае вы должны включить в файл CONFIG.SYS команду DOS=UMB. Команду для EMM386.EXE должна предшествовать другим командам DEVICEHIGH.

Если EMM386 используется с Windows 3.1, то параметр I, X, NOEMS, Mx, Pnnnn и FRAME имеют больший приоритет, чем установки EMMINCLUDE, EMMEXCLUDE и EMMPAGEFRAME в файле Windows SYSTEM.INI file. Изменения этих установок в SYSTEM.INI после загрузки EMM386 не действуют.

При наличии у жесткого диска интерфейсов SCSI или ESDI вам может потребоваться добавить в CONFIG.SYS перед всеми операторами DEVICEHIGH и операторами, загружающими использующие расширенную память устанавливаемые драйверу устройств, строку:


     device=smartdrv.exe /double_buffer

Этот оператор позволяет контроллеру SCSI или EDSI передавать информацию программам, использующим старшую или расширенную память.

Приведем пример. Чтобы EMM386 выделял максимум 4096K памяти и гарантированно - 256K памяти (по умолчанию), и если он расположен в каталоге sys на диске C, добавьте в CONFIG.SYS строку:


    device=c:\sys\emm386.exe 4096

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