Открыть сервис

HIMEM.SYS

HIMEM.SYS — это драйвер расширенной памяти (XMS — eXtended Memory Specification) для операционных систем семейства MS-DOS и Windows 9x, разработанный компанией Microsoft. Он обеспечивает доступ к памяти, расположенной за пределами первого мегабайта (640 КБ) адресного пространства процессоров x86, работающих в реальном режиме. HIMEM.SYS является одним из ключевых компонентов для эффективного использования оперативной памяти на компьютерах IBM PC-совместимой архитектуры, выпускавшихся с середины 1980-х годов.

История

Драйвер HIMEM.SYS был впервые представлен в 1988 году вместе с выходом MS-DOS 4.0. Его появление было связано с необходимостью преодоления ограничения архитектуры IBM PC, известного как «граница 640 КБ». В реальном режиме процессора 8086/8088 (и их более поздних совместимых аналогов) первые 640 КБ оперативной памяти были доступны для приложений, а область от 640 КБ до 1 МБ (Upper Memory Area, UMA) была зарезервирована для системных нужд — видеопамяти, ПЗУ BIOS и других устройств. Память свыше 1 МБ (Extended Memory, XMS) была недоступна напрямую в реальном режиме, но могла быть использована через специальные механизмы, такие как защищённый режим процессора 80286 и выше.

HIMEM.SYS стал первым стандартным драйвером, реализующим спецификацию XMS, которая была разработана совместно Microsoft, Lotus, Intel и AST Research. До его появления доступ к расширенной памяти обеспечивался проприетарными драйверами, что создавало проблемы совместимости. HIMEM.SYS унифицировал этот процесс, став обязательным компонентом для многих программ, требовавших больших объёмов памяти, включая операционные системы Windows 3.0 и Windows 3.1.

С выходом MS-DOS 5.0 (1991 год) HIMEM.SYS был значительно улучшен. Он начал поддерживать функцию A20 Gate (управление адресной линией A20, необходимой для доступа к памяти выше 1 МБ) и позволял загружать часть операционной системы в High Memory Area (HMA) — первый 64-килобайтный блок расширенной памяти, что освобождало до 64 КБ в области 640 КБ для приложений.

В последующих версиях MS-DOS (6.0, 6.2, 6.22) и Windows 95/98/Me HIMEM.SYS оставался стандартным драйвером, хотя его функциональность постепенно вытеснялась более современными механизмами управления памятью, встроенными в операционные системы. С переходом на Windows NT (линия, не основанная на MS-DOS) и Windows 2000/XP необходимость в HIMEM.SYS отпала, так как эти системы работали исключительно в защищённом режиме, где управление памятью осуществляется ядром ОС.

Принцип работы

HIMEM.SYS работает в реальном режиме процессора, но использует возможности защищённого режима для переключения между адресными пространствами. Основной механизм — это переключение процессора в защищённый режим, копирование данных в расширенную память и возврат в реальный режим. Этот процесс, известный как «переключение режимов», является ресурсоёмким, но необходимым для доступа к памяти свыше 1 МБ.

Драйвер реализует спецификацию XMS, которая определяет набор функций для управления памятью:

  • Выделение и освобождение блоков памяти — программы могут запрашивать у HIMEM.SYS блоки расширенной памяти (XMS-блоки) определённого размера.
  • Копирование данных — драйвер предоставляет функцию для копирования данных между обычной (conventional) и расширенной памятью.
  • Управление A20 Gate — HIMEM.SYS контролирует адресную линию A20, которая, если не включена, блокирует доступ к памяти выше 1 МБ. Включение A20 Gate позволяет процессору адресовать память до 16 МБ (в реальном режиме) или до 4 ГБ (в защищённом режиме).
  • Доступ к HMA — драйвер может выделить первый 64-килобайтный блок расширенной памяти (HMA) для использования в реальном режиме. Это позволяет загружать в HMA часть операционной системы (например, ядро MS-DOS) или резидентные программы.

Конфигурация и параметры

HIMEM.SYS загружается в файле CONFIG.SYS (в MS-DOS) или в системном реестре (в Windows 9x) с помощью команды DEVICE. Пример строки: `` DEVICE=C:\DOS\HIMEM.SYS `` Драйвер поддерживает несколько параметров командной строки, которые позволяют настроить его работу:

  • /TESTMEM:ON|OFF — включает или отключает тестирование памяти при загрузке. По умолчанию включено в MS-DOS 6.0 и выше.
  • /NUMHANDLES=n — задаёт максимальное количество дескрипторов XMS (по умолчанию 32). Увеличение этого значения может потребоваться для программ, использующих много блоков памяти.
  • /A20CONTROL:ON|OFF — управляет автоматическим включением A20 Gate.
  • /EISA — включает поддержку шины EISA (Extended Industry Standard Architecture).
  • /MACHINE:тип — указывает тип компьютера для корректной работы с A20 Gate. Этот параметр использовался для совместимости с различными BIOS и аппаратными платформами (например, /MACHINE:AT для IBM PC/AT).

Критика и ограничения

Несмотря на широкое распространение, HIMEM.SYS имел ряд недостатков и ограничений:

  • Совместимость с аппаратным обеспечением — на некоторых компьютерах (особенно старых моделях) драйвер мог неправильно определять тип A20 Gate, что приводило к сбоям при загрузке. Для решения этой проблемы требовалось вручную указывать параметр /MACHINE.
  • Производительность — переключение между режимами процессора при каждом обращении к XMS приводило к снижению производительности по сравнению с прямым доступом к памяти в защищённом режиме.
  • Ограничение объёма памяти — в реальном режиме HIMEM.SYS мог адресовать только до 16 МБ расширенной памяти (из-за ограничений A20 Gate). Для работы с памятью свыше 16 МБ требовались дополнительные драйверы, такие как EMM386.EXE, которые эмулировали Expanded Memory (EMS) на основе XMS.
  • Конфликты с другими драйверами — HIMEM.SYS мог конфликтовать с драйверами, которые также управляли памятью, например, с драйверами для мыши или звуковых карт.

Значение и наследие

HIMEM.SYS сыграл ключевую роль в эволюции персональных компьютеров, позволив программам и операционным системам эффективно использовать память, которая в противном случае оставалась бы недоступной. Он стал стандартом для MS-DOS и ранних версий Windows, обеспечив совместимость тысяч приложений. С появлением 32-разрядных операционных систем (Windows NT, Linux) и переходом на защищённый режим работы процессора необходимость в HIMEM.SYS отпала, но его архитектурные решения (спецификация XMS) повлияли на разработку более поздних систем управления памятью.

Источники

  • Microsoft MS-DOS 6.22 User’s Guide (1994)
  • Intel 80286 and 80386 Programmer’s Reference Manuals
  • Спецификация eXtended Memory Specification (XMS) версии 2.0 (1988)
  • Статья «HIMEM.SYS» в технической документации Microsoft (MSDN Library, 1990-е годы)
  • Книга «The MS-DOS Encyclopedia» (1988, Microsoft Press)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →