EMM386.EXE
EMM386.EXE
EMM386.EXE는 MS-DOS 5.0 이상에서 제공되는 80386 이상 CPU 전용 EMS(Expanded Memory Specification) 에뮬레이터이자 UMB(Upper Memory Block) 생성기이다.
EMM386은 페이지프레임 및 가상 8086 모드를 활용하여 EMS 메모리를 제공하며, HIMEM.SYS와 함께 동작하여 DOS 메모리 구조의 효율을 극대화한다.
개요
- 종류
- 메모리 관리자 / 장치 드라이버
- 필요 CPU
- 80386 이상 (286에서는 동작 불가)
- 기능
- EMS 4.0 호환 메모리 제공 (EMM 에뮬레이션)
- UMB(Upper Memory Block) 생성
- VCPI(가상 제어 프로그램 인터페이스) 제공
- VGA/BIOS ROM Shadow 영역 관리
- 메모리 맵 조정(Exclude / Include)
역할
- EMM386 ≠ HIMEM
- HIMEM = XMS/HMA 관리 + A20 라인 제어
- EMM386 = EMS/UMB/VCPI 제공
둘은 반드시 함께 사용해야 한다.
예:
DEVICE=HIMEM.SYS DEVICE=EMM386.EXE NOEMS DOS=HIGH,UMB
명령 형식
DEVICE=[drive:][path]EMM386.EXE [RAM|NOEMS]
[/FRAME=xxxx]
[/I=range]
[/X=range]
[/HIGHSCAN]
[/NOVCPI]
[/AUTO]
[/VERBOSE]
[/TEST]
모드
RAM
EMS 메모리를 생성한다. UMB도 자동 활성화된다.
ex:
DEVICE=EMM386.EXE RAM
NOEMS
EMS 메모리를 생성하지 않고, UMB만 제공한다. DOS 6.x 최적화에서 가장 널리 쓰인다.
ex:
DEVICE=EMM386.EXE NOEMS DOS=HIGH,UMB
스위치 상세
/FRAME=xxxx
EMS 페이지프레임 주소(16KB x 4 = 64KB)를 지정한다. 기본 위치는 A000~BFFF 사이의 빈 영역.
예:
/FRAME=D000
/I=range (Include)
지정 영역을 UMB 스캔 대상에 포함.
예:
/I=D000-D3FF
/X=range (Exclude)
지정 영역을 스캔에서 제외. 사운드 카드, SCSI BIOS, VGA BIOS 등과 충돌 방지용.
예:
/X=C800-CBFF /X=D000-D7FF
/HIGHSCAN
더 공격적인 UMB 검사 수행. 일부 시스템에서 더 많은 UMB 확보 가능. 단, 불안정성이 증가할 수 있다.
/NOVCPI
VCPI 인터페이스 제공 금지. 일부 DPMI 프로그램과 충돌할 때 사용.
/AUTO
ROM/RAM 자동 매핑 최적화. 대부분의 시스템에서 기본적으로 권장.
/VERBOSE
로드 시 상세 메시지 출력.
/TEST
디버그용 메모리 테스트 수행.
메모리 구조에서의 역할
EMM386은 386 CPU의 가상 8086 모드를 활용하여 확장 메모리를 “EMS 4.0 방식”으로 변환하고, 다음의 기능을 제공한다.
1) EMS 에뮬레이션
- Lotus-Intel-Microsoft LIM EMS 4.0 호환
- 64KB 페이지프레임 구성
- 대부분의 1980~90년대 구형 프로그램 실행 지원
2) UMB(Upper Memory Block) 생성
F000~A000 사이의 빈 영역을 스캔하여 장치 드라이버 / TSR을 상위 메모리에 적재 가능.
LOADHIGH(LH), DEVICEHIGH와 함께 사용.
3) VCPI 제공
DOS 확장기(Phar Lap, DOS/4GW 초기 버전 등)에 필요한 인터페이스 제공.
(DPMI 기반 Win3.x/Win9x의 경우 VCPI는 부차적 역할)
추천 CONFIG.SYS / AUTOEXEC.BAT 조합
386/486 DOS 6.22 최적화(일반용)
DEVICE=HIMEM.SYS DEVICE=EMM386.EXE NOEMS DOS=HIGH,UMB
EMS 필요한 옛 프로그램(예: Wing Commander)
DEVICE=HIMEM.SYS DEVICE=EMM386.EXE RAM DOS=HIGH,UMB
최대 UMB 확보(위험성 있음)
DEVICE=HIMEM.SYS DEVICE=EMM386.EXE NOEMS HIGHSCAN DOS=HIGH,UMB
하드웨어 충돌 있을 때
DEVICE=EMM386.EXE NOEMS X=C800-CFFF X=D000-D7FF
주의 사항
- 286에서는 절대 동작하지 않음 (386 전용 V86 모드 필요)
- EMS=RAM 모드는 일부 Protected Mode 프로그램과 충돌 가능
- Win3.x Enhanced Mode에서 EMM386은 필수 구성 요소
HIMEM과의 관계
| 구성 요소 | 기능 |
|---|---|
| HIMEM.SYS | XMS / A20 / HMA |
| EMM386.EXE | EMS / UMB / VCPI / 페이지프레임 |