HIMEM.SYS

도스박물관
Pc1412 (토론 | 기여)님의 2025년 11월 25일 (화) 17:14 판 (새 문서: = HIMEM.SYS = '''HIMEM.SYS'''는 MS-DOS, PC DOS, Windows 3.x 환경에서 사용되는 공식 XMS(Extended Memory Specification) 메모리 관리자이다. CPU의 A20 라인을 제어하여 HMA(High Memory Area)에 접근할 수 있도록 하며, XMS 규격에 따라 확장 메모리를 할당·관리하는 역할을 담당한다. HIMEM은 EMM386.EXE와 함께 동작하여 DOS 환경에서 효율적인 메모리 활용을 가능하게 한다. (단, UMB는 HIMEM이 아니라 ''...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동검색으로 이동

HIMEM.SYS

HIMEM.SYS는 MS-DOS, PC DOS, Windows 3.x 환경에서 사용되는 공식 XMS(Extended Memory Specification) 메모리 관리자이다. CPU의 A20 라인을 제어하여 HMA(High Memory Area)에 접근할 수 있도록 하며, XMS 규격에 따라 확장 메모리를 할당·관리하는 역할을 담당한다.

HIMEM은 EMM386.EXE와 함께 동작하여 DOS 환경에서 효율적인 메모리 활용을 가능하게 한다. (단, UMB는 HIMEM이 아니라 EMM386.EXE가 생성한다.)

본 문서는 MS-DOS 6.2 / 6.22 정품 HIMEM.SYS 설명서(cp437)를 기반으로 교정·재작성한 기술 문서이다.

개요

종류
장치 드라이버
확장자
.SYS
기능
  • XMS(확장 메모리) 관리
  • A20 라인 제어
  • HMA 제공
  • XMS 핸들 관리
  • INT 15h 방식 메모리 호환(구 프로그램용)
  • (참고) UMB는 HIMEM이 아닌 EMM386이 생성함

HIMEM.SYS는 DOS 부팅 시 CONFIG.SYS의 DEVICE 명령으로 로드한다.

DEVICE=HIMEM.SYS

역할 상세

  • A20 라인을 제어하여 CPU가 1MB 이상 메모리를 사용할 수 있게 함
  • DOS=HIGH 를 통해 DOS 커널을 HMA로 이동 가능
  • XMS 2.0 규격 기반 (일부 버전은 XMS 3.0 기능 부분 지원)
  • XMS 블록(EMB) 할당/해제
  • Windows 3.x 386 Enhanced Mode에서는 직접적인 동작 일부가 무시됨(XMS 관리자 교체)

스위치

다음 스위치는 MS-DOS 6.x 정식 himem.txt 기준이며, 모든 옵션은 선택 사항이다.

DEVICE=[drive:][path]HIMEM.SYS [/A20CONTROL:ON|OFF]
                                [/CPUCLOCK:ON|OFF]
                                [/EISA]
                                [/HMAMIN=n]
                                [/INT15=xxxx]
                                [/NUMHANDLES=n]
                                [/MACHINE:xxxx]
                                [/SHADOWRAM:ON|OFF]
                                [/TESTMEM:ON|OFF]
                                [/VERBOSE]

/A20CONTROL:ON|OFF

HIMEM이 A20 라인의 제어권을 강제로 가져올지 지정한다. 기본값은 ON.

/CPUCLOCK:ON|OFF

일부 구형 시스템에서 HIMEM 로드 시 클럭 속도 변화가 발생할 때 사용. ON으로 설정하면 문제를 고칠 수 있으나 HIMEM 동작이 약간 느려진다. 기본값은 OFF.

/EISA

EISA 시스템에서 16MB 이상 메모리를 올바르게 인식하기 위해 사용. 일반 AT/386/486에서는 자동 처리되므로 필요 없음.

/HMAMIN=n

HMA를 요청한 프로그램이 최소 nKB 이상 필요할 때만 HMA를 할당. 0~63KB 지정 가능. 기본값은 0. Windows 3.x 386 Enhanced Mode에서는 무시됨.

/INT15=xxxx

INT 15h AH=87h 방식으로 확장 메모리를 요청하는 구형 프로그램과의 호환을 위해 xxxx KB 만큼 메모리를 예약. 값은 64~65535KB 지정 가능. 기본값 0.

/NUMHANDLES=n

동시에 유지할 수 있는 XMS 핸들의 최대 개수를 지정. 1~128, 기본값 32. 각 핸들당 6바이트 오버헤드. Windows 3.x 386 Enhanced Mode에서는 무시됨.

/MACHINE:xxxx

특정 BIOS/컴퓨터 타입에서 A20 동작을 강제 지정할 때 사용. HIMEM이 자동 감지를 실패하는 시스템에서 유용.

MACHINE 코드 목록

기종
1 at, IBM AT 호환
2 ps2, IBM PS/2
3 ptlcascade, Phoenix Cascade BIOS
4 hpvectra, HP Vectra (A & A+)
5 att6300plus, AT&T 6300 Plus
6 acer1100, Acer 1100
7 toshiba, Toshiba 1600 & 1200XE
8 wyse, Wyse 12.5 MHz 286
9 tulip, Tulip SX
10 zenith, Zenith ZBIOS
11 at1, IBM AT (alternative delay)
12 at2, IBM AT (alternative delay)
12 css, CSS Labs
13 at3, IBM AT (alternative delay)
13 philips
14 fasthp, HP Vectra
15 ibm7552, IBM 7552 Industrial Computer
16 bullmicral, Bull Micral 60
17 dell, Dell XBIOS

/SHADOWRAM:ON|OFF

일부 BIOS는 부팅 시 ROM 코드를 RAM으로 복사(Shadow RAM)하여 속도를 높인다. HIMEM은 특정 시스템(특히 2MB 이하)의 경우 shadow RAM을 disable하여 추가 확장 메모리를 확보할 수 있다.

/TESTMEM:ON|OFF

부팅 시 HIMEM이 확장 메모리 테스트를 수행할지 지정한다. 기본값은 ON. OFF로 설정하면 부팅이 더 빨라진다.

/VERBOSE (/V)

HIMEM 로드 시 상태 메시지를 출력한다. ALT 키를 누른 채 부팅해도 동일한 효과.

HIMEM과 EMM386 관계

  • HIMEM = XMS / A20 / HMA
  • EMM386 = EMS / UMB / VCPI

둘은 함께 사용해야 DOS 메모리 관리가 완성된다.

예시:

DEVICE=HIMEM.SYS
DEVICE=EMM386.EXE NOEMS
DOS=HIGH,UMB

버전 역사 요약

HIMEM.SYS 버전은 XMS 버전과 완전히 일치하지 않으며, 운영체제 배포판마다 다르게 포함되었다.

주요 버전
  • Windows/286 2.1 → 1.1
  • Windows/386 2.1 → 2.04
  • MS-DOS 5.0 → 2.77
  • Windows 3.1 → 3.07
  • MS-DOS 6.0 → 3.09
  • MS-DOS 6.2/6.22 → 3.10
  • Windows 95/98 → 3.95

같이 보기