EMM386.EXE: 두 판 사이의 차이
잔글 Pc1412님이 Emm386.exe 문서를 넘겨주기를 만들지 않고 EMM386.EXE 문서로 이동했습니다 |
편집 요약 없음 |
||
| 1번째 줄: | 1번째 줄: | ||
= | = 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 제공 | ||
* | |||
* | |||
둘은 반드시 함께 사용해야 한다. | |||
예: | |||
<pre> | |||
DEVICE=HIMEM.SYS | |||
DEVICE=EMM386.EXE NOEMS | |||
DOS=HIGH,UMB | |||
</pre> | |||
== 명령 형식 == | |||
<pre> | |||
DEVICE=[drive:][path]EMM386.EXE [RAM|NOEMS] | |||
[/FRAME=xxxx] | |||
[/I=range] | |||
[/X=range] | |||
[/HIGHSCAN] | |||
[/NOVCPI] | |||
[/AUTO] | |||
[/VERBOSE] | |||
[/TEST] | |||
</pre> | |||
== 모드 == | |||
=== RAM === | |||
EMS 메모리를 생성한다. | |||
UMB도 자동 활성화된다. | |||
ex: | |||
<pre> | |||
DEVICE=EMM386.EXE RAM | |||
</pre> | |||
=== NOEMS === | |||
EMS 메모리를 생성하지 않고, | |||
'''UMB만 제공'''한다. | |||
DOS 6.x 최적화에서 가장 널리 쓰인다. | |||
= | ex: | ||
= | <pre> | ||
DEVICE=EMM386.EXE NOEMS | |||
DOS=HIGH,UMB | |||
</pre> | |||
== | == 스위치 상세 == | ||
== | === /FRAME=xxxx === | ||
EMS 페이지프레임 주소(16KB x 4 = 64KB)를 지정한다. | |||
기본 위치는 A000~BFFF 사이의 빈 영역. | |||
예: | |||
= | <pre> | ||
/FRAME=D000 | |||
</pre> | |||
== | === /I=range (Include) === | ||
지정 영역을 UMB 스캔 대상에 포함. | |||
예: | |||
<pre> | |||
/I=D000-D3FF | |||
</pre> | |||
=== /X=range (Exclude) === | |||
지정 영역을 스캔에서 제외. | |||
사운드 카드, SCSI BIOS, VGA BIOS 등과 충돌 방지용. | |||
== | 예: | ||
<pre> | |||
/X=C800-CBFF | |||
/X=D000-D7FF | |||
</pre> | |||
=== /HIGHSCAN === | |||
더 공격적인 UMB 검사 수행. | |||
일부 시스템에서 더 많은 UMB 확보 가능. | |||
단, 불안정성이 증가할 수 있다. | |||
=== /NOVCPI === | |||
VCPI 인터페이스 제공 금지. | |||
일부 DPMI 프로그램과 충돌할 때 사용. | |||
= | === /AUTO === | ||
ROM/RAM 자동 매핑 최적화. | |||
대부분의 시스템에서 기본적으로 권장. | |||
== | === /VERBOSE === | ||
로드 시 상세 메시지 출력. | |||
== | === /TEST === | ||
디버그용 메모리 테스트 수행. | |||
== | == 메모리 구조에서의 역할 == | ||
EMM386은 386 CPU의 가상 8086 모드를 활용하여 확장 메모리를 “EMS 4.0 방식”으로 변환하고, | |||
다음의 기능을 제공한다. | |||
== | === 1) EMS 에뮬레이션 === | ||
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 최적화(일반용) === | ||
<pre> | |||
DEVICE=HIMEM.SYS | |||
DEVICE=EMM386.EXE NOEMS | |||
DOS=HIGH,UMB | |||
</pre> | |||
== | === EMS 필요한 옛 프로그램(예: Wing Commander) === | ||
<pre> | |||
DEVICE=HIMEM.SYS | |||
DEVICE=EMM386.EXE RAM | |||
DOS=HIGH,UMB | |||
</pre> | |||
== | === 최대 UMB 확보(위험성 있음) === | ||
<pre> | |||
DEVICE=HIMEM.SYS | |||
DEVICE=EMM386.EXE NOEMS HIGHSCAN | |||
DOS=HIGH,UMB | |||
</pre> | |||
= | === 하드웨어 충돌 있을 때 === | ||
== | <pre> | ||
DEVICE=EMM386.EXE NOEMS X=C800-CFFF X=D000-D7FF | |||
</pre> | |||
== | == 주의 사항 == | ||
* 286에서는 절대 동작하지 않음 (386 전용 V86 모드 필요) | |||
* EMS=RAM 모드는 일부 Protected Mode 프로그램과 충돌 가능 | |||
* Win3.x Enhanced Mode에서 EMM386은 필수 구성 요소 | |||
== | == HIMEM과의 관계 == | ||
{| class="wikitable" | |||
! 구성 요소 !! 기능 | |||
|- | |||
| HIMEM.SYS || XMS / A20 / HMA | |||
|- | |||
| EMM386.EXE || EMS / UMB / VCPI / 페이지프레임 | |||
|} | |||
= | == 같이 보기 == | ||
* [[HIMEM.SYS]] | * [[HIMEM.SYS]] | ||
* [[CONFIG.SYS]] | * [[CONFIG.SYS]] | ||
* [[DOS 메모리 구조]] | * [[DOS 메모리 구조]] | ||
* [[ | * [[EMS]] | ||
* [[ | * [[XMS]] | ||
* [[UMB]] | |||
[[ | |||
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 / 페이지프레임 |