HIMEM.SYS — драйвер дополнительной (extended memory) и HMA-памяти для операционной системы MS-DOS, обеспечивающий поддержку дополнительной памяти (extended или expanded).

HIMEM.SYS был введён в состав MS-DOS 5.0 для возможности загрузки ядра операционной системы DOS в High Memory Area с целью увеличения размера доступной основной области памяти путём указания загрузки DOS=HIGH в CONFIG.SYS.

HIMEM.SYS предоставляет доступ к оперативной памяти за пределами первого мегабайта пространства и потому драйвер необходим системам MS Windows9x/ME для загрузки графической части операционных систем. В FreeDOS соответствующий файл называется HIMEM.EXE и может загружаться из конфигурационных файлов FreeDOS с именами FDCONFIG.SYS или CONFIG.SYS.

Расширенное управление памятью править

При использовании HIMEM.SYS становится возможным размещение в дополнительной (extended или expanded memory) области памяти части ядра MS-DOS, служебных таблиц системы и буфера ввода-вывода. Туда же можно загружать и COMMAND.COM. Если персональный компьютер сделан на микропроцессоре 80386, то также можно освободить основную память от большинства резидентных драйверов.

Изменение организации доступа к памяти в Windows NT резко ограничило применение менеджеров памяти, в том числе и HIMEM.SYS.

Использование команды править

Для загрузки HIMEM.SYS под MS-DOS, в файл CONFIG.SYS (или CONFIG.NT для систем на основе Windows NT) добавляется строка:

(на 80286) (на 80386 и далее)
DOS=HIGH DOS=HIGH,UMB
device=(drive:)(path)HIMEM.SYS device=(drive:)(path)HIMEM.SYS
DEVICE=EMM386.EXE RAM
DEVICEHIGH= ...

где (drive:) и (path) — соответственно имя диска и путь к каталогу, где находится файл HIMEM.SYS.

Кроме того, для 80386 допускается команда LOADHIGH (LH).

Необязательные параметры драйвера HIMEM.SYS править

Параметр Объяснение
/A20CONTROL:ON По умолчанию: OFF, то есть DOS управляет А20 только если другая программа не занимается тем же.
/CPUCLOCK:ON Этот параметр рекомендуется указывать, если в присутствии HIMEM.SYS часы замедляют работу.
/HMAMIN=n Если драйвер использует меньше (n) Кб памяти, он не будет вызван. 0<=n<=63.
/INT15=n Число кБ, резервируемое в дополнительной памяти для программ типа Paradox, QEMM и аналогичных.
/MACHINE:код ЭВМ (AT, PS2 и т. д.) Таблица кодов приводится в документации к MS-DOS 5.00. От кода зависит, какой обработчик А20 используется.
/NUMHANDLES=n Это максимальное число обработчиков доп. памяти. Требуется по 6 байт на блок. 1<=n<=128.
/SHADOWRAM:OFF Не копировать ROM-BIOS в RAM (OFF экономит память, но замедляет работу). По умолчанию: ON.

Необязательные параметры драйвера EMM386.EXE (в CONFIG.SYS)

Параметр Объяснение
память - в кБ по умолчанию 256.
Mкод - код базового начального адреса EMS:

1,2,3,4 (C000,C400,C800,CC00) 5,6,7,8 (D000,D400,D800,DC00) 9 (E000) 10,11,12,13 (8000,8400,8800,8C00) 14 (9000)

FRAME=адрес  — аналогично, явное задание базы EMS
/Pадрес - то же самое
/Pn=адрес - адрес сегмента страницы EMS

n=0 | 1 | 2 | 3 | 254 | 255

/X=нач-кон - не использовать этот участок (оба адреса — шестнадцатеричные числа)
B=адрес  — нач. адрес для Bank switching (по умолчанию — 4000)
L=n  — оставить (n) кБ как extended memory
A=n  — число альтернативных регистров, от 0 до 254, по умолчанию 7
H=n  — число обработчиков, от 2 до 255, по умолчанию 64
RAM или NOEMS - занять часть верхней памяти (640кБ-1МБ)

Функциональность править

Пример карты памяти MS-DOS после загрузки HIMEM.SYS

 Максимально допустимый размер программы:  639,056 (624K)
 Наибольший свободный блок верхней памяти: 143,232 (140K)
 Резидентная часть MS-DOS загружена в сегмент HMA.
 Тип памяти           Размер        Занято      Свободно
 ----------------  -----------   -----------   -----------
 Обычная               655,360        16,288       639,072
 Верхняя               158,208        14,976       143,232
 Зарезервировано             0             0             0
 Память XMS         32,282,112       275,968    32,006,144
 ----------------  -----------   -----------   -----------
 Всего памяти:      33,095,680       307,232    32,788,448
 Ниже 1 МБ:            813,568        31,264       782,304
 Имя            Размер         Обычная память     Верхняя память
 --------  ----------------   ----------------   ----------------
 SYSTEM      18,464   (18K)     10,656   (10K)      7,808    (8K)
 HIMEM        1,168    (1K)      1,168    (1K)          0    (0K)
 EMM386       4,256    (4K)      4,256    (4K)          0    (0K)
 COMMAND      7,168    (7K)          0    (0K)      7,168    (7K)
 Свободно   782,304  (764K)    639,072  (624K)    143,232  (140K)

Примечания править

  • Programmer’s Technical Reference for MS-DOS and the IBM PC
  • Руководство пользователя
  • Справочное руководство программиста

См. также править