DOS 메모리 구조

도스박물관
Pc1412 (토론 | 기여)님의 2025년 11월 25일 (화) 17:22 판 (새 문서: = DOS 메모리 구조 = 본 문서는 IBM PC 호환기종(DOS 1.0~MS-DOS 6.22 기준)의 Real Mode 메모리 구조를 정리한 기술 문서이다. 80286/80386/80486/Pentium DOS 환경에서 메모리가 어떻게 배치되고, HIMEM.SYS 및 EMM386.EXE가 어떤 식으로 이를 확장하는지 설명한다. == 개요 == * CPU : Real Mode(8088~386) 기준 20비트 주소공간 = 최대 1MB * DOS의 근본적 한계 = '''640KB 장벽''' * 메모리 종류 : ** {{{1}}} Conven...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동검색으로 이동

DOS 메모리 구조

본 문서는 IBM PC 호환기종(DOS 1.0~MS-DOS 6.22 기준)의 Real Mode 메모리 구조를 정리한 기술 문서이다. 80286/80386/80486/Pentium DOS 환경에서 메모리가 어떻게 배치되고, HIMEM.SYS 및 EMM386.EXE가 어떤 식으로 이를 확장하는지 설명한다.

개요

  • CPU : Real Mode(8088~386) 기준 20비트 주소공간 = 최대 1MB
  • DOS의 근본적 한계 = 640KB 장벽
  • 메모리 종류 :
    • {{{1}}} Conventional Memory (0~640KB)
    • {{{2}}} Upper Memory Area (640KB~1MB)
    • {{{3}}} High Memory Area (HMA, 64KB-16 bytes)
    • {{{4}}} XMS (확장 메모리, 1MB 이상)
    • {{{5}}} EMS (EMS 4.0 방식의 배널버퍼 메모리)

DOS 환경은 위 메모리 구조를 조합하여 프로그램과 드라이버를 적재한다.

1MB 주소공간 개요 (Real Mode)

주소 범위 크기 용도
00000h ~ 9FFFFh 640KB Conventional Memory
A0000h ~ BFFFFh 128KB VGA/Video RAM
C0000h ~ C7FFFh 32KB VGA BIOS
C8000h ~ DFFFFh 약 96KB Option ROM / 가능 시 UMB
E0000h ~ EFFFFh 64KB System BIOS(일부 시스템)
F0000h ~ FFFFFh 64KB System BIOS (표준 ROM)

Conventional Memory (0~640KB)

IBM PC의 설계에서 가장 핵심적이며, DOS 프로그램이 실행되는 기본 메모리이다.

구성 요소
  • DOS 커널 (IO.SYS / MSDOS.SYS)
  • COMMAND.COM
  • 장치 드라이버 (ANSI.SYS, HIMEM.SYS 등)
  • TSR 프로그램
  • 실행 중인 EXE/COM
특징
  • 대부분의 DOS 프로그램은 이 영역만 사용 가능
  • 640KB가 부족하면 UMB/HMA/XMS/EMS를 활용해 확장

Upper Memory Area (640KB~1MB)

BIOS, 영상 메모리, Option ROM 등이 배치된 예약 영역.

범위 구조
A0000h~AFFFFh VGA Video RAM
B0000h~B7FFFh MDA/Monochrome RAM
B8000h~BFFFFh CGA Text RAM
C0000h~C7FFFh VGA BIOS
C8000h~DFFFFh Option ROM / UMB 가능 영역
E0000h~FFFFFh System BIOS

EMM386.EXE는 C8000h~DFFFFh 같은 빈 공간을 스캔하여 UMB(Upper Memory Block)을 생성한다.

LOADHIGH(LH), DEVICEHIGH 사용 시 이 UMB에 적재된다.

High Memory Area (HMA)

  • 주소: 1MB + 0B ~ 1MB + FFFFh
  • 크기: 64KB - 16 bytes
  • 접근: A20 라인 ON일 때만 가능

HIMEM.SYS가 제공하며 DOS=HIGH로 커널을 HMA로 이동할 수 있다. 약 45KB의 Conventional Memory 절약 효과가 있다.

XMS (확장 메모리, 1MB 이상)

XMS는 HIMEM.SYS가 제공하는 확장 메모리 규격이다.

  • 주소는 1MB 이상의 RAM
  • 구조상 Linear RAM
  • 프로텍티드 모드 기반 접근
  • DOS 프로그램은 XMS API(INT 2Fh, AX=4310h)로 접근

EMS (Expanded Memory Specification)

EMS 4.0 방식의 “페이지프레임 기반 뱅크 스위칭 메모리”.

EMM386.EXE가 XMS를 EMS로 변환하여 제공한다.

구조
  • EMS 메모리는 실제로 고메모리에 있음(XMS 기반)
  • 64KB 페이지프레임을 Conventional 영역에 매핑
  • 구형 프로그램(1980~90년대) 호환용
EMS 활성화 방법
DEVICE=HIMEM.SYS
DEVICE=EMM386.EXE RAM

UMB 생성 구조

EMM386.EXE는 386 CPU의 가상 8086(V86) 모드를 이용하여 BIOS ROM 사이의 빈 메모리 구간을 UMB로 변환한다.

예:

/X=C800-CBFF   ; 충돌 방지용 제외
/I=D000-D3FF   ; 직접 포함 지정

DOS 6.x 표준 CONFIG.SYS 구성

UMB만 생성 (최고 호환성)

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

EMS + UMB 활성화

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

HMA만 사용 (EMM386 사용 안 함)

(286 또는 최소 환경)

DEVICE=HIMEM.SYS
DOS=HIGH

메모리 구조 다이어그램

1MB 아래 영역

+-------------------------------+  F0000h (BIOS ROM)
| System BIOS                  |
+-------------------------------+  E0000h
| Option ROM / Empty (UMB가능) |
+-------------------------------+  D0000h
| Option ROM / Empty (UMB가능) |
+-------------------------------+  C8000h
| VGA BIOS                     |
+-------------------------------+  C0000h
| Video RAM (VGA/MDA/CGA)      |
+-------------------------------+  A0000h
|       Conventional (640KB)    |
| 0 ~ 640KB                     |
+-------------------------------+  00000h

1MB 위 영역

[HMA] 64KB-16 bytes
-----------------------------
[XMS] 확장 메모리 (1MB 이상)
-----------------------------

메모리 관리자 관계

구성 요소 역할
HIMEM.SYS XMS / HMA / A20 / XMS 핸들 관리
EMM386.EXE EMS / UMB / VCPI / 페이지프레임
DOS(커널) Conventional Memory 관리

같이 보기