EMM386.EXE

도스박물관
Pc1412 (토론 | 기여)님의 2025년 11월 25일 (화) 17:20 판
둘러보기로 이동검색으로 이동

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 / 페이지프레임

같이 보기