문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 EMS (문단 편집) == 확장 메모리 == Expanded Memory Specification [[IBM PC]] 및 [[IBM PC XT|XT]] 시절 1MB 이상의 메모리를 사용하기 위한 규격이다. [[인텔 8086 시리즈|8088]] CPU는 구조적인 한계로 램을 1MB 이상 사용할 수 없었기 때문에[* 메모리 번지 지정에 20비트를 이용하였다. 2^20=1M이므로 메모리의 한계가 1MB. 때문에 도스시절에는 1MB 중 640kB까지가 메인 메모리였고 나머지는 시스템 영역으로 남겨 두었다. 이후 램이 아무리 많아도 도스에서는 기존 프로그램과 호환성을 유지하기 위해 다 뜯어고칠 수 없었기 때문에 메인 메모리는 최대 640kB로 고정되었다.] 그 이상의 메모리를 이용하기 위해 나온 규격이다. 기본적인 방법은 메인 메모리 밖 시스템 영역 중 일부 영역에 1MB 상위 메모리를 바꿔치기해서 사용하는 것. EMS가 현역으로 쓰일 당시에는 EMS 메모리 카드를 메인보드에 부착하여 사용했다. EMS 카드에 설치된 메모리는 16KB 단위로 나뉘어 관리되었는데, 이것을 페이지라고 한다. 예를 들어 1MB 카드에는 64개의 페이지(16*64=1024)가 설정된다. DOS에서 작동하는 EMS 메모리 드라이버는 이 페이지 중 일부를 CPU가 관리할 수 있는 메모리 주소 영역인 640~1,024KB 사이의 UMA(Upper Memory Area)에 매핑하는데, 이로써 CPU가 EMS 카드에 설치된 메모리를 참조할 수 있게 된다. 주소 영역에 매핑되는 페이지 수는 일반적으로 4개였으므로 CPU가 EMS 카드의 메모리를 한번에 참조할 수 있는 크기는 64KB였다. 만약 매핑되어있지 않은 페이지를 CPU가 참조하려고 하면, EMS 메모리 드라이버는 그에 맞춰 해당 페이지를 메모리 주소 영역에 새로 매핑하는 과정을 수행했다. 이 과정에서 [[오버헤드]]가 발생하여 메모리 참조 속도가 다소 느렸다. 80286이나 그 이상의 CPU에서는 1MB 상위 메모리를 [[XMS]]를 이용해서 더 쉽게 처리할 수 있었기 때문에 갈수록 사용이 줄어들었지만, 기존 프로그램 활용이나 EMS를 꿋꿋이 활용하는 프로그램이 계속 나온 관계로, 당시에는 멀티부팅은 필수였다. 일부 도스 게임을 실행할 시에는 EMM386 등을 이용해서 메모리를 EMS로 넘겨줘야만 실행이 가능한 게임이 있는가 하면 XMS로만 넘겨도 되는 게임도 있었고 아예 EMM386을 띄우지 말아야 하는 게임도 있는 등 제각각이었다. XMS과 EMS를 비교할 때, XMS가 우위에 있다. XMS는 CPU가 직접 참조할 수 있으므로 오버헤드가 없다. EMS는 드라이버의 중개를 통해 간접적으로 참조하므로 오버헤드가 발생하여 XMS보다 느리다. 이 문제는 UMA에 더 많은 페이지를 매핑하는 것으로 어느 정도 해소할 수 있지만 완전한 해결책은 아니다.[* 예를 들어 페이지가 4개일 때는 64KB 단위로 메모리 주소 영역에 매핑하지만, 페이지가 8개일 때는 128KB 단위로 메모리 주소 영역에 매핑하므로 EMS 메모리 드라이버가 매핑해야 할 총 횟수가 줄어든다.] 단, 만약 모든 EMS 메모리를 UMA에 매핑해두고 쓸 수 있다면 이론적으로 속도는 XMS과 동일하다. 그 경우에, EMS 메모리의 크기는 최대 192KB(페이지 12개)로 제한된다. UMA 영역이 고작 384KB에 불과하고, 또 그 중 일부는 바이오스와 비디오 메모리가 매핑되어야 하기 때문이다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기