HIMEM.SYS
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
같이 보기
- EMM386.EXE
- CONFIG.SYS
- XMS
- DOS 메모리 구조
- UMB
- HMA
- HIMEMX.EXE (FreeDOS)