확장 메모리
Expanded memoryDOS 메모리 관리에서 확장 메모리는 기존 메모리(640KiB)의 한계를 넘어 DOS 프로그램에 추가 메모리를 제공한 뱅크 스위칭 시스템이다.
확장 메모리는 여러 가지 호환되지 않는 기술 변형을 일컫는 용어다.가장 널리 사용되는 변종은 확장 메모리 규격(EMS)으로, Lotus Software, Intel, 마이크로소프트가 공동으로 개발하여 이 규격을 "LIM EMS"라고도 부르기도 하였다. LIM EMS는 몇 가지 버전을 가지고 있었다.첫 번째 널리 구현된 버전은 EMS 3.2로, 확장된 메모리의 최대 8 MiB를 지원했으며, 확장된 메모리의 일부를 매핑하기 위해 주변장치(상단 메모리)와의 통신 전용 주소 공간의 일부를 사용한다.EEMS, an expanded-memory management standard competing with LIM EMS 3.x, was developed by AST Research, Quadram and Ashton-Tate ("AQA"); it could map any area of the lower 1 MiB. EEMS ultimately was incorporated in LIM EMS 4.0, which supported up to 32 MiB of expanded memory and provided some support for DOS multitasking as well.그러나 IBM은 XMA라고 불리는 자체적인 확장 메모리 표준을 만들었다.
확장 메모리 사용은 1980년대 후반부터 1990년대 중반까지 Lotus 1-2-3와 같은 게임과 비즈니스 프로그램에 보편화되었으나, 사용자가 DOS에서 Linux, IBM OS/2, Microsoft Windows와 같은 보호 모드 운영 체제로 전환하면서 사용이 줄어들었다.
배경
IBM PC와 IBM PC/XT의 8088 프로세서는 1메가바이트(MiB 또는 2바이트20)의 메모리를 처리할 수 있다.그것은 인텔 8086의 20비트 외부 주소 버스로부터 이 제한을 물려받았다.PC의 설계자들은 "기존 메모리"라고 불리는 읽기-쓰기 프로그램 메모리(RAM)에 640KiB(655360바이트)의 낮은 주소 공간을 할당했고, 나머지 384KiB의 메모리 공간은 확장 주변 기판의 시스템 BIOS, 비디오 메모리, 메모리 등의 용도로 예약했다.
1984년 도입된 IBM PC AT는 최대 16MiB의 램을 확장 메모리로 다룰 수 있는 80286 칩을 사용했지만 보호 모드에서만 사용할 수 있었다.286 보호 모드(표준 DOS 애플리케이션은 실행될 수 없음)와 호환되는 소프트웨어의 부족은 시장이 다른 솔루션에 대해 여전히 열려 있음을 의미했다.[1]
384KiB의 자유 주소 공간이 허용하는 것보다 훨씬 더 많은 잠재적으로 더 많은 메모리를 맞추기 위해, 주어진 시간에 추가 메모리의 선택된 부분만 접근할 수 있는 은행 교환 방식을 고안했다.원래 페이지 프레임이라 불리는 64KiB(2바이트16)의 단일 메모리 창은 가능했지만, 나중에 이것은 더 유연해졌다.확장된 메모리에 접근하기 위해 프로그램은 특정한 방법으로 작성되어야 했다.하부 RAM과 확장 RAM 사이의 "창"은 확장 RAM 내의 다른 위치로 이동할 수 있다.
뱅크 스위칭 기법을 사용하려는 첫 시도는 Tall Tree Systems에 의해 JRAM 보드로 이루어졌지만,[2] 이것들은 인기를 끌지 못했다.[1] (Tall Tree Systems는 후에 동일한 JRAM 브랜드를 사용하여 EMS 기반 보드를 만들었다.)
확장 메모리 사양(EMS)
Lotus Development, Intel, 마이크로소프트가 협력하여 EMS 표준(일명 LIM EMS)을 개발했다.EMS의 첫 번째 공개 버전인 버전 3.0은 확장된 메모리의 최대 4 MiB에 대한 접근을 허용했다.[citation needed]이것은 규격의 3.2 버전과 함께 8 MiB로 증가되었다.EMS의 최종 버전인 버전 4.0은 확장된 메모리의 최대 양을 32 MiB로 늘렸고 추가 기능을 지원했다.
마이크로소프트는 은행 교체가 비합법적이고 일시적이지만 필요한 미봉책이라고 생각했다.빌 게이츠는 인터뷰에서 확장된 기억력에 대해 "쓰레기야!엉망이잖아!그러나 우리는 그것을 할 것이다"라고 말했다.이 회사들은 1985년 봄 COMDEX에서 이 표준을 출시할 계획이었고, 많은 확장카드와 소프트웨어 회사들이 지원을 발표했다.[3][4]
The first public version of the EMS standard, called EMS 3.0 was released in 1985; EMS 3.0, however, saw almost no hardware implementations before being superseded by EMS 3.2.[1] EMS 3.2 used a 64 KiB region in the upper 384 KiB (upper memory area) divided into four 16 KiB pages, which could be used to map portions of the expanded memory.[1]
결과적으로, EMS 3.2는 AST Research, Quadram, Ashton-Tate의 다른 세 회사 그룹에 의해 개선되었고, 이 회사는 그들 자신의 EMS(Enhanced EMS) 표준을 만들었다.EEMS는 인터럽트나 네트워크나 비디오 카드와 같은 전용 I/O 메모리와 연관되지 않는 한 하위 RAM의 16 KiB 영역을 확장 메모리에 매핑할 수 있도록 허용했다.따라서, 전체 프로그램은 추가 RAM으로 교환될 수 있다. EEMS는 또한 두 세트의 매핑 레지스터에 대한 지원을 추가했다.이 기능들은 DESQview와 같은 초기 DOS 멀티태스커 소프트웨어에서 사용되었다.1987년에 발표된 LIM EMS 4.0 규격에는 EEMS의 사실상 모든 기능이 통합되었다.[1]
LIM EMS 4.0에 추가된 새로운 기능은 EMS 보드가 여러 세트의 페이지 매핑 레지스터(최대 64세트)를 가질 수 있다는 것이었다.이것은 DOS 멀티태스킹의 원시적인 형태를 허용했다.그러나 유의사항은 표준이 보드에 몇 개의 레지스터 세트를 가져야 하는지를 명시하지 않았기 때문에 이 점에서 하드웨어 구현 간에 큰 변동이 있었다는 것이다.[5]
확장 메모리 사양(EMS)은 확장 메모리 사용을 기술하는 사양이다.EMS 기능은 소프트웨어 인터럽트 67h를 통해 액세스할 수 있다.EMS를 사용하는 프로그램은 먼저 장치 이름 EMMXXX0을 가진 장치 드라이버를 확인하여 설치된 확장 메모리 관리자(EMM)의 존재를 설정해야 한다.
확장 메모리 어댑터(XMA)
IBM은 XMA(Expanded Memory Adapter)라고 불리는 그들만의 메모리 표준을 개발했다; 그것을 위한 IBM DOS 드라이버는 XMAEM이었다.SYS. EMS와는 달리, IBM 확장 보드는 확장 메모리 모델과 확장 메모리 둘 다 사용할 수 있다.[6]그러나 XMA 보드에 의해 사용되는 확장 메모리 하드웨어 인터페이스는 EMS와 호환되지 않지만 [7]XMA2EMS이다.SYS 드라이버는 XMA 보드에 EMS 에뮬레이션을 제공했다.[6]XMA 보드는 3270 PC의 1986년(개조) 모델에 처음 도입되었다.[7]
구현
확장 보드
주변 주소 공간에 메모리 윈도우를 삽입하는 것은 원래 컴퓨터의 ISA 확장 버스에 연결된 특정 확장 보드를 통해서만 이루어질 수 있었다.유명한 1980년대 확장 메모리 보드로는 AST RAM 페이지, IBM PS/2 80286 메모리 확장 옵션, AT&T 확장 메모리 어댑터 및 Intel Overboard가 있다.이 기간 RAM 가격, MiB당 최고 수백 달러, 위 브랜드들의 품질과 평판을 고려할 때 확장된 메모리 보드는 매우 비쌌다.
마더보드 칩셋
후에 인텔 80286 기반 컴퓨터의 일부 마더보드 칩셋은 추가 보드, 특히 NEAT 칩셋을 필요로 하지 않는 확장 메모리 체계를 구현했다.일반적으로 소프트웨어 스위치는 확장 메모리로 사용할 메모리와 확장 메모리로 사용할 메모리의 양을 결정했다.
장치 드라이버
확장 메모리 보드는 하드웨어 주변장치로서 그것의 서비스를 수출하는 소프트웨어 장치 드라이버가 필요했다.그런 장치 드라이버를 확장메모리 매니저라고 불렀다.그것의 이름은 가변적이었다; 이전에 언급했던 보드들은 REMM을 사용했다.SYS(AST), PS2EMM.SYS(IBM), AEMM.SYS(AT&T)와 EMM.각각 SYS(Intel).후에 이 표현은 인텔 80386 프로세서가 필요한 소프트웨어 전용 솔루션과 연관되게 되었다. 예를 들어 쿼터덱의 QEMM, Qualitas의 386MAX 또는 MS-DOS, PC DOS 및 DR-DOS의 기본 EMM386 등이 그것이다.
소프트웨어 에뮬레이션
1986년부터 시작된 인텔 80386 프로세서의 내장 메모리 관리 기능은 레거시 리얼 모드 소프트웨어를 실행할 때 주소 공간을 자유롭게 모델링하여 하드웨어 솔루션을 불필요하게 만들었다.확장된 메모리는 소프트웨어에서 시뮬레이션할 수 있다.
최초의 소프트웨어 확장메모리 관리(에뮬레이션) 프로그램은 CEMM으로 1986년 9월 Compaq Deskpro 386의 유틸리티로 이용할 수 있다.인기 있고 기능이 좋은 상업적 해결책은 쿼터덱의 QEMM이었고, 경쟁자는 퀄리타스의 386이었다MAX.기능성은 이후 1989년에 MS-DOS 4.01에, 1990년에는 EMM386으로 DR DOS 5.0에 통합되었다.
일반적으로 소프트웨어 확장 메모리 관리자는 추가 기능을 제공했지만 밀접하게 관련된 기능을 제공했다.특히, 상위 메모리 영역(UMA)의 부분(실제 모드 주소 공간의 상위 384 KiB)을 UMB(Upper Memory Blocks)라고 부르며, 소형 프로그램 로딩(일반적으로 TSR)을 내부에 로딩하는 도구("LOADHI" 또는 "LOADHHI")를 제공했다.
확장 메모리, 확장 메모리 에뮬레이션 및 DOS 확장자 사이의 상호작용은 결국 XMS, 가상 제어 프로그램 인터페이스(VCPI), DOS 보호 모드 인터페이스(DPMI) 및 DOS 보호 모드 서비스(DPMS) 규격에 의해 규제되었다.
구어적으로 LIMulator라고 알려진 특정 에뮬레이션 프로그램은 마더보드나 80386 기능에 전혀 의존하지 않았다.대신, 그들은 확장 메모리 윈도우를 위해 기본 RAM의 64KiB를 예약했고, 응용 프로그램이 페이지 스위치를 요청하면 확장 메모리나 하드 디스크로 데이터를 복사했다.이것은 프로그램적으로 구현이 쉬웠지만 성능은 낮았다.이 기술은 Overst Software의 OverstDisk와 여러 쉐어웨어 프로그램에 의해 제공되었다.
사양
1990년대에 확장된 메모리 사용량이 감소했다.IBM AT Intel 80286은 24비트 주소 공간(16MiB)을 보호 모드에서 지원했으며, 386은 32비트 주소, 즉 RAM의 4기가바이트(232)를 원래 8086의 4096배까지 지원했다.DOS 자체는 보호 모드를 직접 지원하지는 않았지만, 마이크로소프트는 결국 DPMI를 개발했고, 이를 기반으로 여러 DOS 확장자가 발표되었다.Doss와 같은 DOS 프로그램은 DOS/4G와 같은 확장기를 사용하여 DOS API를 사용하는 동안 보호 모드로 실행할 수 있다.1990년대 초 Linux, Windows 9x, Windows NT, OS/2 및 BSD/OS와 같은 새로운 운영 체제는 "즉각" 보호 모드를 지원했다.이와 유사한 개발은 확장 메모리를 구식 개념으로 만들었다.
참고 항목
- 재래식 메모리
- DOS 메모리 관리
- 확장 메모리(XMS)
- 높은 메모리 영역(HMA)
- 상위 메모리 영역(UMA)
- 글로벌 EMM 가져오기 규격(GEMMIS)
- x86 메모리 분할
- 주소 창 확장(AWE)
- PAE(물리적 주소 확장)
참조
- ^ a b c d e Mendelson, Edward (1989-12-12). "A Slot Full of RAM". PC Magazine. Vol. 8, no. 21. Ziff Davis Publishing Co. pp. 169–. Archived from the original on 2020-02-08. Retrieved 2020-02-08.
- ^ "Tall Tree Systems Product Datasheet" (Broschure). Tall Tree Systems. October 1983.
- ^ Machrone, Bill (1985-05-14). "Memory Scheme Breaks 640K". PC Magazine. Vol. 4, no. 10. Ziff Davis Publishing Co. p. 33. Retrieved 2013-10-28.
- ^ "The Most Memorable Tech Flops". PC Magazine. January 2008. pp. 88–89. Retrieved 2020-09-05.
- ^ Rosch, Winn L. (1989-12-12). "EMS 4.0: The Standard That Wasn't". PC Magazine. Vol. 8, no. 21. Ziff Davis Publishing Co. pp. 174–175. Archived from the original on 2020-02-08. Retrieved 2020-02-08.
- ^ a b "A General Tutorial on the Various Forms of Memory". Microsoft. Archived from the original on 2012-10-22.
- ^ a b Welch, Marc J. (1986-04-14). "3270 Demand Not Expected To Rise". InfoWorld. Vol. 8, no. 15. InfoWorld Media Group, Inc. p. 5. ISSN 0199-6649. Archived from the original on 2020-02-08. Retrieved 2020-02-08.
추가 읽기
- "Expanded Memory Specification". Version 4.0. Lotus, Intel, Microsoft. October 1987. 300275-005. Archived from the original on 2020-02-08. Retrieved 2020-02-08.
- Tischer, Michael (1989). PC System Programming for Developers. ISBN 1-55755-036-0.
- Borrett, Lloyd Robert (January–February 1989). "Understanding EMS 4.0". Technical Cornucopia. Archived from the original on 2020-02-08. Retrieved 2020-02-08.