<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://doswiki.oscc.kr/index.php?action=history&amp;feed=atom&amp;title=DOS_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B5%AC%EC%A1%B0</id>
	<title>DOS 메모리 구조 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://doswiki.oscc.kr/index.php?action=history&amp;feed=atom&amp;title=DOS_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B5%AC%EC%A1%B0"/>
	<link rel="alternate" type="text/html" href="https://doswiki.oscc.kr/index.php?title=DOS_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B5%AC%EC%A1%B0&amp;action=history"/>
	<updated>2026-06-25T13:39:08Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://doswiki.oscc.kr/index.php?title=DOS_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B5%AC%EC%A1%B0&amp;diff=71&amp;oldid=prev</id>
		<title>Pc1412: 새 문서: = 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의 근본적 한계 = &#039;&#039;&#039;640KB 장벽&#039;&#039;&#039; * 메모리 종류 : ** {{{1}}} Conven...</title>
		<link rel="alternate" type="text/html" href="https://doswiki.oscc.kr/index.php?title=DOS_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EA%B5%AC%EC%A1%B0&amp;diff=71&amp;oldid=prev"/>
		<updated>2025-11-25T08:22:43Z</updated>

		<summary type="html">&lt;p&gt;새 문서: = 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의 근본적 한계 = &amp;#039;&amp;#039;&amp;#039;640KB 장벽&amp;#039;&amp;#039;&amp;#039; * 메모리 종류 : ** {{{1}}} Conven...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= DOS 메모리 구조 =&lt;br /&gt;
&lt;br /&gt;
본 문서는 IBM PC 호환기종(DOS 1.0~MS-DOS 6.22 기준)의&lt;br /&gt;
Real Mode 메모리 구조를 정리한 기술 문서이다.&lt;br /&gt;
80286/80386/80486/Pentium DOS 환경에서 메모리가 어떻게 배치되고,&lt;br /&gt;
HIMEM.SYS 및 EMM386.EXE가 어떤 식으로 이를 확장하는지 설명한다.&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
* CPU : Real Mode(8088~386) 기준 20비트 주소공간 = 최대 1MB&lt;br /&gt;
* DOS의 근본적 한계 = &amp;#039;&amp;#039;&amp;#039;640KB 장벽&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* 메모리 종류 :&lt;br /&gt;
** {{{1}}} Conventional Memory (0~640KB)&lt;br /&gt;
** {{{2}}} Upper Memory Area (640KB~1MB)&lt;br /&gt;
** {{{3}}} High Memory Area (HMA, 64KB-16 bytes)&lt;br /&gt;
** {{{4}}} XMS (확장 메모리, 1MB 이상)&lt;br /&gt;
** {{{5}}} EMS (EMS 4.0 방식의 배널버퍼 메모리)&lt;br /&gt;
&lt;br /&gt;
DOS 환경은 위 메모리 구조를 조합하여 프로그램과 드라이버를 적재한다.&lt;br /&gt;
&lt;br /&gt;
== 1MB 주소공간 개요 (Real Mode) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 주소 범위 !! 크기 !! 용도&lt;br /&gt;
|-&lt;br /&gt;
| 00000h ~ 9FFFFh || 640KB || &amp;#039;&amp;#039;&amp;#039;Conventional Memory&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| A0000h ~ BFFFFh || 128KB || VGA/Video RAM&lt;br /&gt;
|-&lt;br /&gt;
| C0000h ~ C7FFFh || 32KB || VGA BIOS&lt;br /&gt;
|-&lt;br /&gt;
| C8000h ~ DFFFFh || 약 96KB || Option ROM / 가능 시 UMB&lt;br /&gt;
|-&lt;br /&gt;
| E0000h ~ EFFFFh || 64KB || System BIOS(일부 시스템)&lt;br /&gt;
|-&lt;br /&gt;
| F0000h ~ FFFFFh || 64KB || System BIOS (표준 ROM)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conventional Memory (0~640KB) ==&lt;br /&gt;
IBM PC의 설계에서 가장 핵심적이며,&lt;br /&gt;
DOS 프로그램이 실행되는 기본 메모리이다.&lt;br /&gt;
&lt;br /&gt;
; 구성 요소&lt;br /&gt;
* DOS 커널 (IO.SYS / MSDOS.SYS)&lt;br /&gt;
* COMMAND.COM&lt;br /&gt;
* 장치 드라이버 (ANSI.SYS, HIMEM.SYS 등)&lt;br /&gt;
* TSR 프로그램&lt;br /&gt;
* 실행 중인 EXE/COM&lt;br /&gt;
&lt;br /&gt;
; 특징&lt;br /&gt;
* 대부분의 DOS 프로그램은 이 영역만 사용 가능&lt;br /&gt;
* 640KB가 부족하면 UMB/HMA/XMS/EMS를 활용해 확장&lt;br /&gt;
&lt;br /&gt;
== Upper Memory Area (640KB~1MB) ==&lt;br /&gt;
BIOS, 영상 메모리, Option ROM 등이 배치된 예약 영역.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 범위 !! 구조&lt;br /&gt;
|-&lt;br /&gt;
| A0000h~AFFFFh || VGA Video RAM&lt;br /&gt;
|-&lt;br /&gt;
| B0000h~B7FFFh || MDA/Monochrome RAM&lt;br /&gt;
|-&lt;br /&gt;
| B8000h~BFFFFh || CGA Text RAM&lt;br /&gt;
|-&lt;br /&gt;
| C0000h~C7FFFh || VGA BIOS&lt;br /&gt;
|-&lt;br /&gt;
| C8000h~DFFFFh || Option ROM / UMB 가능 영역&lt;br /&gt;
|-&lt;br /&gt;
| E0000h~FFFFFh || System BIOS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
EMM386.EXE는 C8000h~DFFFFh 같은 빈 공간을 스캔하여  &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;UMB(Upper Memory Block)&amp;#039;&amp;#039;&amp;#039;을 생성한다.&lt;br /&gt;
&lt;br /&gt;
LOADHIGH(LH), DEVICEHIGH 사용 시 이 UMB에 적재된다.&lt;br /&gt;
&lt;br /&gt;
== High Memory Area (HMA) ==&lt;br /&gt;
* 주소: 1MB + 0B ~ 1MB + FFFFh  &lt;br /&gt;
* 크기: 64KB - 16 bytes  &lt;br /&gt;
* 접근: A20 라인 ON일 때만 가능  &lt;br /&gt;
&lt;br /&gt;
HIMEM.SYS가 제공하며 DOS=HIGH로 커널을 HMA로 이동할 수 있다.&lt;br /&gt;
약 45KB의 Conventional Memory 절약 효과가 있다.&lt;br /&gt;
&lt;br /&gt;
== XMS (확장 메모리, 1MB 이상) ==&lt;br /&gt;
XMS는 HIMEM.SYS가 제공하는 확장 메모리 규격이다.&lt;br /&gt;
&lt;br /&gt;
* 주소는 1MB 이상의 RAM&lt;br /&gt;
* 구조상 Linear RAM&lt;br /&gt;
* 프로텍티드 모드 기반 접근&lt;br /&gt;
* DOS 프로그램은 XMS API(INT 2Fh, AX=4310h)로 접근&lt;br /&gt;
&lt;br /&gt;
== EMS (Expanded Memory Specification) ==&lt;br /&gt;
EMS 4.0 방식의 “페이지프레임 기반 뱅크 스위칭 메모리”.&lt;br /&gt;
&lt;br /&gt;
EMM386.EXE가 XMS를 EMS로 변환하여 제공한다.&lt;br /&gt;
&lt;br /&gt;
; 구조&lt;br /&gt;
* EMS 메모리는 실제로 고메모리에 있음(XMS 기반)&lt;br /&gt;
* 64KB 페이지프레임을 Conventional 영역에 매핑&lt;br /&gt;
* 구형 프로그램(1980~90년대) 호환용&lt;br /&gt;
&lt;br /&gt;
; EMS 활성화 방법&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEVICE=HIMEM.SYS&lt;br /&gt;
DEVICE=EMM386.EXE RAM&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UMB 생성 구조 ==&lt;br /&gt;
EMM386.EXE는 386 CPU의 가상 8086(V86) 모드를 이용하여  &lt;br /&gt;
BIOS ROM 사이의 빈 메모리 구간을 UMB로 변환한다.&lt;br /&gt;
&lt;br /&gt;
예:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/X=C800-CBFF   ; 충돌 방지용 제외&lt;br /&gt;
/I=D000-D3FF   ; 직접 포함 지정&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DOS 6.x 표준 CONFIG.SYS 구성 ==&lt;br /&gt;
&lt;br /&gt;
=== UMB만 생성 (최고 호환성) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEVICE=HIMEM.SYS&lt;br /&gt;
DEVICE=EMM386.EXE NOEMS&lt;br /&gt;
DOS=HIGH,UMB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== EMS + UMB 활성화 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEVICE=HIMEM.SYS&lt;br /&gt;
DEVICE=EMM386.EXE RAM&lt;br /&gt;
DOS=HIGH,UMB&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HMA만 사용 (EMM386 사용 안 함) ===&lt;br /&gt;
(286 또는 최소 환경)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DEVICE=HIMEM.SYS&lt;br /&gt;
DOS=HIGH&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 메모리 구조 다이어그램 ==&lt;br /&gt;
&lt;br /&gt;
=== 1MB 아래 영역 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+-------------------------------+  F0000h (BIOS ROM)&lt;br /&gt;
| System BIOS                  |&lt;br /&gt;
+-------------------------------+  E0000h&lt;br /&gt;
| Option ROM / Empty (UMB가능) |&lt;br /&gt;
+-------------------------------+  D0000h&lt;br /&gt;
| Option ROM / Empty (UMB가능) |&lt;br /&gt;
+-------------------------------+  C8000h&lt;br /&gt;
| VGA BIOS                     |&lt;br /&gt;
+-------------------------------+  C0000h&lt;br /&gt;
| Video RAM (VGA/MDA/CGA)      |&lt;br /&gt;
+-------------------------------+  A0000h&lt;br /&gt;
|       Conventional (640KB)    |&lt;br /&gt;
| 0 ~ 640KB                     |&lt;br /&gt;
+-------------------------------+  00000h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1MB 위 영역 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[HMA] 64KB-16 bytes&lt;br /&gt;
-----------------------------&lt;br /&gt;
[XMS] 확장 메모리 (1MB 이상)&lt;br /&gt;
-----------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 메모리 관리자 관계 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 구성 요소 !! 역할&lt;br /&gt;
|-&lt;br /&gt;
| HIMEM.SYS || XMS / HMA / A20 / XMS 핸들 관리&lt;br /&gt;
|-&lt;br /&gt;
| EMM386.EXE || EMS / UMB / VCPI / 페이지프레임&lt;br /&gt;
|-&lt;br /&gt;
| DOS(커널) || Conventional Memory 관리&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 같이 보기 ==&lt;br /&gt;
* [[HIMEM.SYS]]&lt;br /&gt;
* [[EMM386.EXE]]&lt;br /&gt;
* [[CONFIG.SYS]]&lt;br /&gt;
* [[XMS]]&lt;br /&gt;
* [[EMS]]&lt;br /&gt;
* [[UMB]]&lt;br /&gt;
* [[HMA]]&lt;br /&gt;
* [[DOS 메모리 최적화]]&lt;/div&gt;</summary>
		<author><name>Pc1412</name></author>
	</entry>
</feed>