맨위로가기

기본 메모리

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

기본 메모리는 IBM PC 호환 기종의 초기 아키텍처적 제약으로 인해 발생한 640KB 메모리 제한을 의미한다. 이는 인텔 8088 CPU의 20비트 주소 지정 능력으로 인해 1MB의 메모리만 사용 가능했고, 640KB 미만의 메모리는 RAM, 나머지 384KB는 시스템 및 주변 장치에 할당되었기 때문이다. 이로 인해 DOS 환경에서 메모리 부족 문제가 발생했고, 다양한 메모리 관리 기술과 DOS 확장기, 그리고 오늘날의 가상 메모리 기술 발전의 계기가 되었다.

더 읽어볼만한 페이지

  • 기억 장치 - EPROM
    EPROM은 자외선을 사용하여 내용을 지울 수 있는 읽기 전용 메모리이며, MOSFET의 부유 게이트를 사용하여 데이터를 저장하고, 펌웨어 업데이트가 용이하여 소량 생산에 사용되었으나 EEPROM과 플래시 메모리에 의해 대체되었다.
  • 기억 장치 - 정적 램
    정적 램(SRAM)은 전원이 공급되는 동안 데이터를 저장하며, 갱신 회로가 필요 없고 빠른 접근 속도를 가지는 휘발성 메모리 유형이다.
기본 메모리

2. 역사적 배경

'''640 KB 장벽''' (640 키비바이트 장벽)은 IBM PC 호환 기종에서 나타나는 메모리 제약 현상이다.

인텔 8088 CPU는 20개의 주소 라인을 사용하여 최대 1024KB(1MB)의 메모리 주소를 지정할 수 있었다.[1][2] 그러나 IBM PC 설계 당시, 640KB 이상의 주소 공간은 비디오 메모리 등 하드웨어에 할당되었다. 이로 인해 MS-DOS 및 대부분의 응용 프로그램들은 640KB 이하의 메모리만 사용할 수 있게 되었고, 이를 '640KB 장벽'이라 부르게 되었다.

1981년 IBM PC가 처음 출시될 당시, 640KB는 매우 큰 메모리 용량으로 여겨졌다. 당시 널리 사용되던 애플 II+는 64KB 메모리만 탑재했고, 확장도 쉽지 않았다. IBM은 PC 아키텍처가 장기간 시장을 지배할 것이라고 예상하지 못했다.

이후 인텔 286 프로세서가 등장하여 최대 16MB 메모리 사용이 가능해졌지만, 하위 호환성을 위해 640KB 장벽은 유지되었다. 오늘날에도 윈도우 기반 PC에서 중첩 확장 메모리는 640KB와 1024KB 사이에 빈 공간을 가지고 있으며, 페이징가상 메모리 기술을 통해 응용 프로그램에는 이 문제가 드러나지 않는다.

2. 1. IBM PC의 등장

1980년대 초, IBM PC의 등장은 개인용 컴퓨터 시장에 큰 영향을 미쳤다. 당시 애플 II+와 같은 마이크로컴퓨터는 일반적으로 64KB 메모리를 가지고 있었고 확장이 쉽지 않았다.[1][2] 이와 비교하면, IBM PC는 최대 640KB까지 메모리 확장이 가능하여 훨씬 더 많은 작업을 처리할 수 있었다.

IBM PC, PC/XT, 3270 PC, PCjr 메모리 블록[1][2]
0-block1st 64 KB일반 사용자 메모리 → 64 KB (로우 메모리 영역)
1-block2nd 64 KB일반 사용자 메모리 → 128 KB
2-block3rd 64 KB일반 사용자 메모리 → 192 KB
3-block4th 64 KB일반 사용자 메모리 → 256 KB
4-block5th 64 KB일반 사용자 메모리 → 320 KB
5-block6th 64 KB일반 사용자 메모리 → 384 KB
6-block7th 64 KB일반 사용자 메모리 → 448 KB
7-block8th 64 KB일반 사용자 메모리 → 512 KB
8-block9th 64 KB일반 사용자 메모리 → 576 KB
9-block10th 64 KB일반 사용자 메모리 → 640 KB
A-block11th 64 KB확장 비디오 메모리(EGA)
B-block12th 64 KB표준 비디오 메모리 (MDA/CGA)
C-block13th 64 KBROM 확장 (XT, EGA, 3270 PC)
D-block14th 64 KB기타 용도 (PCjr 카트리지, LIM EMS)
E-block15th 64 KB기타 용도 (PCjr 카트리지, LIM EMS)
F-block16th 64 KB시스템 ROM-BIOS 및 ROM-BASIC



IBM PC는 인텔 8088 CPU의 아키텍처 제한으로 인해 1024KB(1MB)까지만 주소를 지정할 수 있었다. IBM은 이 중 640KB를 사용자 메모리로, 나머지를 비디오 메모리 등 하드웨어에 할당했다. 이러한 설계는 MS-DOS와 대부분의 프로그램에서 640KB 이상의 메모리를 사용하기 어렵게 만드는 '640KB 장벽'을 낳았다.

1981년 PC가 공개되었을 당시, 640KB는 매우 큰 용량으로 여겨졌다. 그러나 IBM은 PC 아키텍처가 이렇게 오랫동안 시장을 지배할 것이라고 예상하지 못했다. 이후 인텔 286 프로세서가 최대 16MB 메모리를 지원했지만, 호환성 유지를 위해 640KB 장벽은 유지되었다. 현대의 윈도 기반 PC에서도 중첩 확장 메모리는 여전히 640KB와 1024KB 사이에 구멍이 존재하며, 페이징가상 메모리를 통해 응용 프로그램에는 보이지 않게 처리된다.

2. 2. 인텔 8088 프로세서의 한계

인텔 8088 CPU는 20개의 주소 라인을 제공하여 1024 키비바이트(1 메비바이트)의 메모리 주소를 지정할 수 있었다.[1][2] 그러나 IBM 개인용 컴퓨터 설계에서 컬러 그래픽스 어댑터 메모리 맵을 640 키비바이트 위치와 그 이상의 다른 하드웨어에 할당하였다. 이로 인해 임의의 데이터를 위한 주소 공간에 구멍이 생겼고, MS-DOS 및 대부분의 프로그램은 이 구멍을 피해야 했다.

1981년 개인용 컴퓨터가 처음 출시될 당시에는 640 키비바이트가 일반 사용자에게 충분한 메모리 용량으로 여겨졌다. 당시 가장 인기 있던 애플 II+는 64 키비바이트 메모리만 가지고 있었고, 확장이 어려웠다. IBM은 개인용 컴퓨터 아키텍처가 시장에서 오랫동안 지속될 것이라고 예상하지 못했다.

이후 최대 16 메비바이트 메모리를 사용할 수 있는 인텔 286 프로세서가 등장했지만, 구형 운영 체제와의 호환성을 위해 640 키비바이트 장벽은 유지되었다. 286이 호환성 모드에 있는 한 1 메비바이트 장벽도 남아 있었다. 오늘날에도 MS-DOS가 실행되는 환경에서는 IBM 개인용 컴퓨터 호환성이 유지되며, 최신 윈도 기반 개인용 컴퓨터에서도 중첩 확장 메모리는 여전히 640 키비바이트와 1024 키비바이트 사이에 구멍이 있다. 다만, 페이징가상 메모리 덕분에 응용 프로그램에는 보이지 않는다.

3. 기술적 원인

인텔 8088 CPU는 20개의 주소 라인을 가지고 있어 1MB (1024km2)의 메모리를 주소 지정할 수 있었다. IBM PC 설계에서는 이 중 하위 640KB를 일반 사용자 메모리(기본 메모리)로 할당하고, 나머지 384KB를 상위 메모리 영역(UMA)으로 지정하여 시스템 용도로 예약했다.[1][2]

초기 IBM PC 설계자들은 640KB의 기본 메모리가 일반 사용자에게 충분할 것이라고 예상했다. 당시 가장 인기 있었던 애플 II+ 마이크로컴퓨터는 64km2 메모리만 가지고 있었고, 쉽게 확장할 수도 없었다. 하지만, 새로운 PC들이 더 많은 메모리를 탑재하면서 640KB는 부족하게 되었고, 이는 640KB 장벽 문제를 야기했다.

메모리 맵은 64km2 단위의 블록 16개로 구성되어 있다.[1][2] 0번 블록부터 9번 블록까지는 기본 메모리, A번 블록은 확장 비디오 메모리(EGA), B번 블록은 표준 비디오 메모리(MDA/CGA), C번 블록은 ROM 확장, D번과 E번 블록은 기타 용도(PCjr 카트리지, LIM EMS), F번 블록은 시스템 ROM-BIOS 및 ROM-BASIC에 사용되었다.[1][2]

IBM PC, PC/XT, 3270 PC, PCjr 메모리 블록[1][2]
블록크기용도
0-9 블록640,000일반 사용자 메모리 (기본 메모리)
A-블록64,000확장 비디오 메모리 (EGA)
B-블록64,000표준 비디오 메모리 (MDA/CGA)
C-블록64,000ROM 확장 (XT, EGA, 3270 PC)
D-블록64,000기타 용도 (PCjr 카트리지, LIM EMS)
E-블록64,000기타 용도 (PCjr 카트리지, LIM EMS)
F-블록64,000시스템 ROM-BIOS 및 ROM-BASIC



이러한 메모리 맵 구조는 인텔 8088 CPU의 20개 주소 라인에 기반한 1MB 주소 공간을 활용한 것이다. 상위 메모리 영역(UMA)은 시스템 ROM-BIOS, 비디오 메모리, 기타 하드웨어 장치를 위한 공간으로 예약되어 사용자 프로그램이 사용할 수 있는 연속적인 메모리 공간에 '구멍'을 만들었다.

이후 인텔 80286 프로세서가 도입되면서 최대 16MB의 메모리를 사용할 수 있게 되었지만, 하위 호환성을 위해 1MB 장벽은 유지되었다. 현대 PC에서도 640KB와 1024KB 사이 영역은 여전히 예약되어 있지만, 가상 메모리를 사용하는 운영 체제에서는 이러한 물리적 주소 제한이 응용 프로그램에 직접적으로 보이지 않는다.

3. 1. 메모리 맵과 주소 공간

IBM PC의 메모리 맵은 0-블록부터 F-블록까지 16개의 64KB 블록으로 구성되어 있으며, 총 1MB (1024KB)의 주소 공간을 가진다.[1][2] 이 중 처음 640KB (0-블록부터 9-블록까지)는 일반 사용자 메모리로 사용되며, '기본 메모리'라고 불린다. 640KB 이후의 384KB (A-블록부터 F-블록까지)는 시스템 용도로 예약되어 있으며, 상위 메모리 영역(UMA)이라고 불린다.

IBM PC, PC/XT, 3270 PC, PCjr 메모리 블록[1][2]
블록크기용도
0-9 블록640,000일반 사용자 메모리 (기본 메모리)
A-블록64,000확장 비디오 메모리 (EGA)
B-블록64,000표준 비디오 메모리 (MDA/CGA)
C-블록64,000ROM 확장 (XT, EGA, 3270 PC)
D-블록64,000기타 용도 (PCjr 카트리지, LIM EMS)
E-블록64,000기타 용도 (PCjr 카트리지, LIM EMS)
F-블록64,000시스템 ROM-BIOS 및 ROM-BASIC



이러한 메모리 맵 구조는 인텔 8088 CPU가 20개의 주소 라인을 가져 1MB의 주소 지정이 가능한것에 기반한다. IBM PC 설계 당시에는 640,000의 사용자 메모리가 충분하다고 여겨졌지만, 기술 발전과 함께 메모리 요구량이 증가하면서 640KB 장벽은 문제가 되었다.

640KB 이후의 상위 메모리 영역(UMA)은 시스템 ROM-BIOS, 확장 비디오 메모리, 기타 하드웨어 장치를 위한 공간으로 예약되었다. 이러한 설계로 인해 사용자 프로그램이 사용할 수 있는 연속적인 메모리 공간에 '구멍'이 생기게 되었고, 이는 소프트웨어 개발 및 호환성에 어려움을 초래했다.

이후 인텔 80286 프로세서가 도입되면서 최대 16MB의 메모리를 사용할 수 있게 되었지만, 하위 호환성을 위해 1MB 장벽은 유지되었다. 현대의 PC에서도 640KB와 1024KB 사이의 영역은 여전히 예약되어 있지만, 가상 메모리를 사용하는 운영 체제에서는 이러한 물리적 주소 제한이 응용 프로그램에 직접적으로 드러나지 않는다.

3. 2. 기존 메모리, 상위 메모리 영역

IBM PC에서 사용된 인텔 8088 CPU는 20개의 주소 라인을 제공하여 1MB (1024KB)의 메모리 주소를 지정할 수 있었다. 이 중 하위 640KB는 RAM으로, 기존 메모리 영역이라고 불렀다. 기존 메모리 영역의 첫 64KB는 로우 메모리 또는 낮은 메모리 영역이라고 한다. 나머지 384KB는 상위 메모리 영역(UMA) 이라고 불리며, 시스템 사용 및 선택적 장치를 위해 예약되었다.[1][2]

상위 메모리 영역(UMA)은 ROM BIOS, 추가 읽기 전용 메모리, 하드 디스크 드라이브 및 비디오 어댑터용 BIOS 확장, 비디오 어댑터 메모리 및 기타 메모리 맵 입출력 장치에 사용되었다. 원래 IBM PC의 설계는 CGA 메모리 맵을 UMA에 배치했다.[1][2]

더 많은 RAM의 필요성이 커지면서, 사용되지 않는 상위 메모리 영역에 RAM을 매핑하여 사용 가능한 공간을 활용하게 되었다. 이로 인해 임의의 데이터에 사용할 수 있는 주소 집합에 "구멍"이 생겼고, 이 공간은 나중에 상위 메모리 블록(UMBs)으로 사용되었다.

IBM PC, PC/XT, 3270 PC 및 PCjr 메모리 블록[1][2]
주소 범위크기용도
00000h-9FFFFh640KB일반 사용자 메모리 (기존 메모리 영역)
A0000h-AFFFFh64KB확장 비디오 메모리 (EGA)
B0000h-BFFFFh64KB표준 비디오 메모리 (MDA/CGA)
C0000h-CFFFFh64KBROM 확장 (XT, EGA, 3270 PC)
D0000h-DFFFFh64KB기타 용도 (PCjr 카트리지, LIM EMS)
E0000h-EFFFFh64KB기타 용도 (PCjr 카트리지, LIM EMS)
F0000h-FFFFFh64KB시스템 ROM-BIOS 및 ROM-BASIC



640KB 장벽은 IBM PC 호환 기종의 아키텍처적 제한으로, 이후 인텔 80286 프로세서에서도 호환성을 위해 유지되었다. 80286이 실 모드로 실행되는 동안에는 1MB 장벽이 유지되었으며, 이는 도스(DOS)가 실 모드를 필요로 하고 20비트 이상의 주소가 불가능한 방식으로 세그먼트 및 오프셋 레지스터를 사용했기 때문이다. 가상 메모리를 사용하는 최신 운영 체제에서는 이러한 제한이 보이지 않는다.

4. 640KB 장벽의 영향

'''640 KB 장벽''' (640 키비바이트 장벽)은 IBM 개인용 컴퓨터(PC) 호환 기종에서 나타난 메모리 제약 현상이다.

인텔 8088 CPU는 20개의 주소 라인을 통해 최대 1024KB (1MB)의 메모리 주소를 지정할 수 있었다. 그러나 IBM PC 설계에서 640KB 이상의 주소는 다른 하드웨어에 할당되어, 실제 사용 가능한 메모리는 640KB로 제한되었다.[1][2]

IBM PC, PC/XT, 3270 PC, PCjr 메모리 블록[1][2]
영역크기설명
0-block ~ 9-block64KB x 10일반 사용자 메모리 (총 640KB)
A-block64KB확장 비디오 메모리 (EGA)
B-block64KB표준 비디오 메모리 (MDA/CGA)
C-block64KBROM 확장 (XT, EGA, 3270 PC)
D-block64KB기타 용도 (PCjr 카트리지, LIM EMS)
E-block64KB기타 용도 (PCjr 카트리지, LIM EMS)
F-block64KB시스템 ROM-BIOS 및 ROM-BASIC



1981년 PC 출시 당시에는 640KB가 충분해 보였지만, 더 많은 메모리를 탑재한 PC가 등장하면서 문제가 되었다. IBM은 PC 아키텍처가 오랫동안 지속될 것을 예상하지 못했다.

이 제한은 인텔 286 프로세서가 등장하기 전까지 PC 설계에 남아있었다. 286은 최대 16MB 메모리를 지원했지만, 호환성 모드에서는 1MB 장벽이 유지되었다. 오늘날에도 최신 윈도 기반 PC에서 중첩 확장 메모리는 640KB와 1024KB 사이에 구멍이 있지만, 페이징가상 메모리 덕분에 응용 프로그램에는 보이지 않는다.

4. 1. 소프트웨어 개발의 제약

인텔 8088 CPU의 아키텍처 제한으로 인해 IBM PC는 1024KB (1MB)까지만 메모리 주소를 지정할 수 있었다. IBM PC 설계에서 640KB 이상의 주소는 컬러 그래픽스 어댑터 메모리 맵 등 다른 하드웨어에 할당되었다. 이로 인해 임의의 데이터를 저장하는 데 사용되는 주소 공간에 '구멍'이 생겼고, MS-DOS나 대부분의 MS-DOS 프로그램들은 이 구멍을 피해서는 제대로 작동하기 어려웠다.[1][2]

1981년 PC가 출시될 당시에는 640KB가 일반 사용자에게 충분한 메모리 용량으로 여겨졌다. 그러나 시간이 지나면서 더 많은 메모리를 탑재한 PC가 등장했고, 640KB는 제약이 되었다. IBM이나 다른 회사들은 PC 아키텍처가 이렇게 오랫동안 시장에서 지속될 것이라고 예상하지 못했다.

이러한 640KB 제한은 최대 16MB의 메모리를 사용할 수 있는 인텔 286 프로세서가 등장하기 전까지 PC 설계의 일부로 남아있었다. 그러나 286이 호환성 모드에 있는 한 1MB 장벽은 여전히 존재했다. 오늘날에도 MS-DOS가 실행되는 최신 윈도 기반 PC에서도 중첩 확장 메모리는 여전히 640KB와 1024KB 사이에 구멍이 있다. 다만, 페이징가상 메모리 덕분에 응용 프로그램에는 보이지 않는다.

대부분의 표준 DOS용 프로그램은 640KB 이상의 메모리가 반드시 필요하지는 않았다. 하지만, 표준 DOS 소프트웨어 외에 상주 프로그램(TSR)이라고 불리는 드라이버 소프트웨어와 유틸리티를 함께 사용하는 경우가 많았다. 이러한 드라이버와 유틸리티는 일반적으로 [기본 메모리]의 일부를 영구적으로 사용하여 표준 DOS 프로그램이 사용할 수 있는 메모리 총량을 줄였다.

[기본 메모리]를 사용하는 일반적인 DOS 드라이버와 TSR에는 다음이 포함된다.

  • ANSI.SYS - 컬러 텍스트 및 다양한 텍스트 해상도 지원
  • ASPIxDOS.SYS, ASPIDISK.SYS, ASPICD.SYS - SCSI 드라이브와 CD-ROM 작동에 필요
  • DOSKEY.EXE - 이전 DOS 명령 호출 기능
  • LSL.EXE, E100BODI.EXE (또는 기타 네트워크 드라이버), IPXODI.EXE, NETX.EXE - NetWare 파일 서버 접근에 필요
  • MOUSE.EXE - DOS 프로그램에서 마우스 지원
  • MSCDEX.EXE - CD-ROM 드라이브 접근 및 드라이브 문자 지원, 별도 드라이버 필요
  • SBCONFIG.EXE - Sound Blaster 16 오디오 장치 지원 (다른 사운드 카드는 다른 드라이버 사용)
  • SMARTDRV.EXE - 디스크 캐시 설치 (640KB 이상 메모리 할당 가능, [기본 메모리] 일부 필요)


이러한 드라이버와 TSR 중 상당수는 시스템의 모든 기능을 제대로 작동시키는 데 필수적이었다. 그러나 특정 표준 DOS 프로그램을 실행하기 위해 드라이버나 TSR을 메모리에서 제거해야 하는 경우도 있었다. 제거할 수 없는 드라이버의 경우, 최신 DOS 버전에는 시작 메뉴 기능을 통해 다양한 드라이버 및 TSR 그룹을 선택하여 로드할 수 있었다.

4. 2. 사용자 경험의 제한

초창기 IBM 개인용 컴퓨터는 인텔 8088 CPU의 아키텍처 제한으로 인해 1024 키비바이트(1 메비바이트)까지만 메모리 주소를 지정할 수 있었다. 그러나 실제 설계에서는 컬러 그래픽스 어댑터 메모리 맵 등을 640 키비바이트 이상의 위치에 배치하여, 640 키비바이트 이하의 메모리만 사용 가능한 영역으로 남게 되었다. 이를 '640 킬로바이트의 장벽'이라고 불렀다.[1][2]

1981년 개인용 컴퓨터가 처음 등장했을 때는 640 키비바이트가 매우 큰 용량으로 여겨졌지만, 시간이 지나면서 더 많은 메모리를 필요로 하는 프로그램들이 등장하면서 문제가 되었다. 사용자들은 제한된 기본 메모리 때문에 드라이버 및 상주 프로그램(TSR)과의 충돌, 메모리 부족 등의 불편을 겪어야 했다.

특히, 다음과 같은 DOS용 드라이버와 TSR 프로그램들이 기본 메모리를 차지하면서 문제를 심화시켰다.

  • ANSI.SYS: 컬러 텍스트 및 다양한 텍스트 해상도 지원
  • ASPIxDOS.SYS, ASPIDISK.SYS, ASPICD.SYS: Adaptec SCSI 드라이브와 CD-ROM 작동 지원
  • DOSKEY.EXE: 이전 DOS 명령어 호출 기능
  • LSL.EXE, E100BODI.EXE (또는 기타 네트워크 드라이버), IPXODI.EXE, NETX.EXE: NetWare 파일 서버 드라이브 접근 지원
  • MOUSE.EXE: DOS 프로그램에서 마우스 지원
  • MSCDEX.EXE: CD-ROM 드라이브 접근 및 드라이브 문자 지원
  • SBCONFIG.EXE: Sound Blaster 16 오디오 장치 지원
  • SMARTDRV.EXE: 디스크 캐시 설치 (기본 메모리의 일부를 필요로 함)


이러한 드라이버와 TSR은 시스템의 기능을 제대로 사용하기 위해 필수적인 경우가 많았지만, 기본 메모리를 차지하여 일반 DOS 프로그램을 실행할 공간을 부족하게 만들었다. 사용자들은 특정 프로그램을 실행하기 위해 드라이버나 TSR을 일시적으로 제거해야 하는 불편을 겪어야 했다. 이후 최신 DOS 버전에서는 시작 메뉴 기능을 통해 다양한 드라이버 및 TSR 그룹을 선택하여 로드할 수 있도록 개선되었지만, 근본적인 문제는 해결되지 않았다.

5. 640KB 장벽 극복을 위한 노력

640KB 장벽을 극복하기 위한 다양한 기술적 시도가 있었다.


  • 하드웨어적 방법:
  • 초기 IBM XT 컴퓨터에서는 비디오 메모리 주소 범위에 추가 RAM을 설치하여 MDA를 사용할 경우 640KB 장벽을 704KB까지, 컬러 그래픽스 어댑터(CGA)를 사용할 경우 736KB까지 확장할 수 있었다.
  • All Computers의 ''AllCard'', ''Chargecard'', MicroWay의 ECM과 같은 메모리 관리 유닛(MMU)은 일반 메모리를 A0000–EFFFF (16진수) 주소 범위에 매핑하여 DOS 프로그램에 최대 952KB를 제공했다. 그러나 Lotus 1-2-3과 같이 비디오 메모리에 직접 접근하는 프로그램은 패치가 필요했고, 이는 하드웨어 호환성을 희생해야 했다.
  • 콘솔 리디렉션을 사용하면 출력을 덤 터미널로 보내고 입력을 다른 컴퓨터에서 받아, 비디오 카드 없이 총 960KB의 연속적인 DOS 메모리를 사용할 수 있었다.
  • SCP의 S-100 버스 시스템, 빅터 9000/시리우스 1, Apricot PC 등 일부 DOS 호환 비-IBM 호환 컴퓨터들은 더 많은 연속적인 DOS 메모리를 지원했다.

  • 소프트웨어적 방법:
  • 386 기반 시스템에서는 DOS 메모리 관리자를 사용하여 비디오 메모리 주소 범위에 추가 RAM을 설치하는 것과 비슷한 효과를 얻을 수 있었다.
  • DR DOS 5.0, MS-DOS 5.0과 같은 운영 체제에서는 상위 메모리 영역(UMA)의 상위 메모리 블록(UMB)을 활용하여 장치 드라이버와 TSR 프로그램을 로드함으로써 응용 프로그램이 사용할 수 있는 일반 메모리(640KB 이하)를 확보할 수 있었다. 이는 하드웨어 변경 없이 응용 프로그램 호환성을 유지하는 방법이었다.[1][2]

5. 1. 메모리 관리 기술

인텔 8088 CPU의 아키텍처 제한으로 인해 IBM PC는 1024KB (1MB)의 메모리 주소 공간을 가졌다. 그러나 IBM PC 설계에서 640KB 위치 위에 컬러 그래픽스 어댑터(CGA) 메모리 맵과 다른 하드웨어를 배치하면서 640KB 장벽이 생겨났다.[1][2] 이로 인해, MS-DOS와 대부분의 프로그램은 640KB 이하의 메모리만 사용할 수 있었다.

초기 IBM XT 컴퓨터에서는 비디오 메모리 주소 범위에 추가 RAM을 설치하여 640KB 장벽을 MDA의 시작 부분까지 올려 704KB (MDA/HGC 사용) 또는 736KB (CGA 사용)로 만들 수 있었다. 386 기반 시스템에서는 DOS 메모리 관리자를 사용하여 비슷한 효과를 얻을 수 있었다.

All Computers의 ''AllCard'', ''Chargecard'', MicroWay의 ECM과 같은 메모리 관리 유닛은 일반 메모리를 A0000–EFFFF (16진수) 주소 범위에 매핑하여 DOS 프로그램에 최대 952KB를 제공했다. 그러나 Lotus 1-2-3과 같이 비디오 메모리에 직접 접근하는 프로그램은 패치가 필요했고, 이는 하드웨어 호환성을 희생해야 했다.

콘솔 리디렉션을 사용하면 출력을 덤 터미널로 보내고 입력을 다른 컴퓨터에서 받아, 비디오 카드 없이 총 960KB의 연속적인 DOS 메모리를 사용할 수 있었다.

SCP의 S-100 버스 시스템, 빅터 9000/시리우스 1, Apricot PC 등 일부 DOS 호환 비-IBM 호환 컴퓨터들은 더 많은 연속적인 DOS 메모리를 지원했다.

5. 2. DOS 확장기

인텔 8088 CPU의 아키텍처 제한으로 인해 초기 IBM 개인용 컴퓨터는 1024 키비바이트(1 메비바이트)의 메모리만 사용할 수 있었다. 그러나 IBM 개인용 컴퓨터 설계 상 컬러 그래픽스 어댑터 메모리 맵이 640 키비바이트 위치와 더 높은 위치의 다른 하드웨어에 놓이면서, 실제 사용 가능한 메모리는 640 킬로바이트로 제한되었다. 이를 '640 킬로바이트의 장벽'이라고 불렀다.[1][2]

1981년 개인용 컴퓨터가 처음 공개되었을 당시에는 640 키비바이트가 일반 사용자에게 충분한 메모리 용량으로 여겨졌다. 당시 가장 인기 있었던 애플 II+ 마이크로컴퓨터는 64 키비바이트 메모리를 가지고 있었고 확장이 어려웠기 때문이다. 그러나 시간이 지나면서 더 많은 메모리를 설치할 수 있는 새로운 개인용 컴퓨터들이 등장하면서 640 키비바이트 장벽은 문제가 되었다.

이후 최대 16 메비바이트 메모리를 사용할 수 있는 인텔 286 프로세서가 등장했지만, 구형 운영 체제와의 호환성을 위해 640 키비바이트 장벽은 유지되었다. 현대의 윈도 기반 개인용 컴퓨터에서도 중첩 확장 메모리는 여전히 640 키비바이트와 1024 키비바이트 사이에 구멍이 있지만, 페이징가상 메모리 덕분에 응용 프로그램에는 보이지 않는다.

5. 3. 상위 메모리 블록(UMB) 활용

DR DOS 5.0, MS-DOS 5.0과 같은 운영 체제에서는 상위 메모리 영역(UMA)의 상위 메모리 블록(UMB)을 활용하여 장치 드라이버와 TSR 프로그램을 로드함으로써 응용 프로그램이 사용할 수 있는 일반 메모리(640KB 이하)를 확보할 수 있었다. 이는 하드웨어 변경 없이 응용 프로그램 호환성을 유지하는 방법이었다.[1][2]

CONFIG.SYS 파일에서 `DEVICEHIGH=` 지시어를 사용하여 드라이버를 상위 메모리에 로드하고, AUTOEXEC.BAT 파일에서 `LOADHIGH` (`LH` 또는 `HILOAD`) 지시어를 사용하여 TSR을 상위 메모리에 로드할 수 있었다. 작업이 실패하면 드라이버나 TSR은 자동으로 일반 메모리에 로드되었다.

아래는 사용 예시이다.

CONFIG.SYS에서 ANSI.SYS를 UMB에 로드하고 EMS 지원을 하지 않도록 설정:



DEVICE=C:\DOS\HIMEM.SYS

DEVICE=C:\DOS\EMM386.EXE NOEMS

DEVICEHIGH=C:\DOS\ANSI.SYS



AUTOEXEC.BAT에서 MOUSE, DOSKEY, SMARTDRV를 가능하면 UMB에 로드:



LH C:\DOS\MOUSE.EXE

LH C:\DOS\DOSKEY.EXE

LH C:\DOS\SMARTDRV.EXE



DOS 버전 5.0 이상에서는 `DOS=HIGH` 명령을 통해 시스템 핵심 코드를 상위 메모리 영역(HMA)으로 이동하여 메모리를 추가로 확보할 수 있었다.

하드웨어 확장 보드가 ROM 주소 지정을 위해 상위 메모리 영역을 사용했기 때문에, UMB의 크기와 위치는 컴퓨터마다 달랐다. 드라이버와 TSR을 상위 메모리에 로드할 때, 프로그램이 들어갈 수 있는 블록을 찾을 때까지 시도하거나, 실패하면 일반 메모리로 로드했다.

드라이버 및 TSR은 로드 순서에 따라 사용 메모리 양이 달라졌다. MS-DOS 6.0에서는 `MEMMAKER`를 통해 이 과정을 자동화했지만, 수동 최적화만큼 효율을 보이지는 못했다.

일부 타사에서는 여러 표준 DOS 드라이버 및 TSR의 기능을 결합한 소형 다기능 드라이버를 작성하여 메모리 사용량을 최소화하기도 했다.

6. 현대 운영체제에서의 변화

현대의 운영 체제와 32비트 컴퓨터에서는 기본 메모리와 중첩 확장 메모리(EMS)의 구분이 그리 중요하지 않다. 그 까닭은 모든 메모리가 보호 모드에서 공통적으로 접근될 수 있기 때문이다. 대부분의 사용자들은 개인용 컴퓨터의 발전 역사 속에 있던 640KB의 PC 메모리에 대해 잘 알지 못한다.[1]

6. 1. 보호 모드와 가상 메모리

현대의 운영 체제와 32비트 컴퓨터에서는 기본 메모리와 중첩 확장 메모리(EMS)의 구분이 그리 중요하지 않다. 그 까닭은 모든 메모리가 보호 모드에서 공통적으로 접근될 수 있기 때문이다. 대부분의 사용자들은 개인용 컴퓨터의 발전 역사 속에 있던 640KB의 PC 메모리에 대해 잘 알지 못한다.

7. 한국 PC 환경에 미친 영향

(참조할 원본 소스가 주어지지 않았으므로, 이전 출력을 수정할 수 없습니다.)

참조

[1] 서적 Inside the IBM PC, Revised and Enlarged Brady 1986
[2] 특허 Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com