메모리를 모르고서, PC를 잘 쓴다고 장담하지 마라. 속빈 강정같은 컴퓨터 사용자나 자신있게 할 소리다. 메모리 다루기가 능숙해야 비로서 효율적인 컴퓨터 활용에 눈을 떠 간다고 할 수 있다. ‘메모리Memory‘는 정보를 기억해 두었다가 컴퓨터 작동에 필요할 때 그 정보를 제공하는 일차 저장장치이다. 램과 롬 등이 이에 속한다. 그러나, 흔히 메모리라고 말하는 것은 플로피 디스켓이나 하드 디스크와 같은 2차 저장매체에서 읽어들인 정보를 잠시 보관했다가 중앙처리장치로 전달하는 역할을 하는 램RAM이다. 프로그램이 복잡해지고 기능을 다양하게 제공할수록, 필요한 램의 양도 늘어난다.
기본메모리와 상위 메모리
메가바이트(MB : MegaByte)라는 단위를 사용하는 램은 각 바이트마다 해당 ‘번지address‘가 있다. 이 번지는 집 주소를 표시하는 번지처럼, 컴퓨터 내에서 각 바이트가 자리한 곳을 표시한다. 메모리의 첫번째 메가바이트는 기본Conventional 메모리와 상위Upper 메모리로 나뉘어져 있다. 1MB를 기준으로 기본 메모리는 640KB, 그 나머지인 384KB가 상위 메모리이다. 1MB는 거의 1천 바이트와 맞먹는 양이다. 상위 메모리(예약 메모리라고 하기도 한다) 384KB는 비디오 디스플레이 정보와 같은 내용을 저장해 두는 공간이다. 이 영역에 이미 저장되어 있는 몇몇 내용들의 점유공간을 뺀 나머지 빈 공간은 상위 메모리 블럭(UMB : Upper Memory Blocks)이라고 부른다. 상위 메모리 블럭은 꽤 유용한 공간이다. 작은 프로그램이나 정보를 상위 메모리 블럭에 저장해 둘 수 있어 값비싼 기본 메모리 640KB를 알뜰하게 아껴가며 사용할 수 있게 해 준다. 상위 메모리 블럭에 저장할 수 있는 것을 예로 들면, 디바이스 드라이버(마우스나 프린터 같은 장비와 시스템간의 의사소통을 가능케 하는 작은 프로그램들)나 메모리 관리자같은 것들이 있다. 기본 메모리 사용에 관심을 기울여야 하는 이유는 이 공간이 도스와 도스 프로그램을 실행하는 공간인 탓이다. 게다가 이 공간은 어떤 기종이든지 640KB(XT의 경우 512KB인 시스템도 있지만)로 한정되어 더욱 신경을 써야 한다. 메모리 부족으로 허덕이는 요즘 사용자들의 곤란은 빈약한 기본 메모리 한계를 고려한다면 일어날 수 밖에 없는 당연한 일이다.
어찌할 수 없는 640KB 장벽
그렇다면, 왜 640KB인가? PC 메모리의 처음 디자인은 8088 마이크로프로세서는 1MB 램까지 액세스하도록 되어 있었다. 이 메모리는 64K단위로 조각조각 나 있다. 기본적인 메모리 구성은 <그림 1>과 같다. 각각 64KB짜리 16개열로 구성되어 있다. 16열의 이름은 각각 1부터 9, 그 다음은 A에서 F이다. IBM은 메모리 열을 10개로 디자인했다. 64K단위로 10줄이니까 10 x 64KB = 640KB, 기본 메모리가 640KB가 뒷 배경에는 이런 비밀이 있었다. 그러나, 기본메모리 640KB가 그 때도 천덕꾸러기였던 것은 아니다. 시대가 변하고 세월이 흐르면서 어찌할 수 없는 구닥다리가 되었을 따름이다. 처음 이 디자인이 선보인 1980년초만 해도 당시 유행하던 중앙처리장치 CP/M보다 열배가 나은 성능을 보여주었다. 당시로서는 대단한 성과였다. 나머지 부분인 384K를 상위 메모리 영역으로 구성한 것도 이 때이다. 마이크로소프트 도스팀 책임자인 러셀 스톡데일씨는 “PC아키텍처가 결정되던 때로 거슬러 올라가보자. 원래 PC는 1MB까지 어드레스할 수 있었다. 640KB에서 메모리를 자른 것은 당시 디자이너들이 임의로 내린 결정이나 다름없었다”고 밝혔다. 결국 당시 수준과 비교해서 640KB 정도면 모든 것이 가능할 것이라고 내다본 것이다. 그러나, 컴퓨터는 내일이 어떨지 예측키 어려울 정도로 급속한 발전을 거듭해 왔다. 640K는 금방 한계에 부딪쳤다. 획기적으로 평가받던 이 디자인도 이제는 앞으로 급속히 내달려야 하는 PC의 발목을 붙잡는 신세로 전락했다. 640K의 한계를 더욱 백일하에 드러낸 것은 새로 등장한 강력한 마이크로프로세서 신제품들이다. 16램까지 어드레스할 수 있는 80286, 4096MB나 4기가바이트램까지 가능한 80386은 640KB로 감당하기는 역부족이었다. 해결책은 없는듯 했다. 그러나 궁하면 통하는 법. 도스 응용 프로그램에 더욱 많은 메모리를 확실하게 제공하는 중첩확장 메모리의 등장은 이것저것 처리하느라 숨가쁜 640KB를 한시름 놓게 했다. 중첩확장 메모리는 꿈을 현실화시킨 메모리이다. 기본 메모리처럼 프로그램을 실행시키는데 쓸 수 없다는 약점이 있지만, 이것만도 정말 하느님이었다. 그 이후로 더욱 나은 해결책인 연속확장 메모리도 등장하고 있다. 그러나, 이런 복잡한 메모리 구조는 사용자들이 메모리를 이해하는 데 장애가 되어왔다. 해결책으로는 꽤 괜찮은 착상이었지만, 사용자들이 메모리를 이해하는데는 장애물이 되고 있다. 메모리 이해는 연속확장와 중첩확장를 아는데 있다고 해도 과언이 아니다.
저물어가는 중첩확장(겹쳐늘린-Expanded) 메모리
기본 메모리나 연속확장 메모리와는 달리, XT나 286기종은 중첩확장 메모리 보드를 따로 구입해야 중첩확장 메모리를 이용할 수 있다. 이런 보드에는 중첩확장 메모리 관리자가 있다. 386SX이상의 CPU 사용자들은 보드를 따로 사지 않아도 된다. 도스안에 있는 ‘EMM386’과 같은 중첩확장 메모리 에뮬레이터를 이용하면 보드를 사용하는 것과 같은 효과를 얻을 수 있다. 연속확장 메모리의 한 비트를 빌려다가 중첩확장 메모리인 척 하고 사용하는 것이다. 중첩확장 메모리는 EMSExtended Memory Sepcification에 맞춰 다루면 된다. EMS는 로터스, 인텔, 마이크로소프트가 개발한 메모리로서 표준은 LIM 4.0 EMS이다. 버전 4.0은 PC에서 32MB까지 중첩확장 메모리를 허용한다. 중첩확장 메모리는 PC 메모리의 기본 구성은 아니다. 페이지 프레임이라고 불리우는 특별한 영역을 통해 접근할 수 있다. 이는 16K 페이지 4개를 포함하는 상위 메모리의 64KB이다. 각 페이지는 중첩확장 메모리에 복사하거나 읽어들일 수 있는 메모리를 포함하고 있다(그림 2).
【그림 2】EMM386과 같은 중첩확장 메모리 에뮬레이터는 중첩확장 메모리를 연속확장 메모리처럼 사용하게 해 준다. 중첩확장 메모리는 페이지 프레임이라는 64KB 상위 메모리 영역에서 한번에 16KB씩 전달한다.
페이지 프레임과 중첩확장 메모리 관리는 EMS 디바이스 드라이버가 한다. 자동으로 설치되는 Himem.sys와 달리, EMM386은 Config.sys파일 안에 사용자가 직접 설치해야 한다. 메모리 사용의 획기적인 해결책이라고 중첩확장 메모리에 쏟아지던 환호는 점차 사그라들고 있다. 화무십일홍이라고 세상에 아무리 좋은 것도 한순간이듯 지금은 이 메모리를 지원하는 응용 소프트웨어도 줄어들고 있다. 16KB 페이지로 32MB 메모리를 바라본다는 건 역시 답답한 노릇이었기 때문이다. 그래서 등장하는 주인공은 익스텐디드Extended 메모리, 즉 연속확장 메모리이다. 메모리 정복을 행하는 길은 멀고 험하다.
연속확장(이어늘린-Extended) 메모리
연속확장 메모리는 메모리 이해에 혼동을 불러온 주범이다. 80286이상 기종의 주 메모리를 말할 때는 지금까지 알던 것과 달리 1MB를 넘는 제품들이 꽤 보인다. 그것이 바로 ‘연속확장 메모리’가 가져온 도움이면서 혼동이다. 메모리를 추가한다는 것은 연속확장 메모리를 추가한다는 뜻이다. 그래서, 메모리가 4MB인 PC라면 기본메모리 640KB, 상위 메모리 384KB, 나머지 3MB 메모리가 연속확장 메모리가 되는 것이다. 물론, 연속확장 메모리 역시 기본 메모리처럼 프로그램을 실행시키지 못하는 것은 중첩확장 메모리와 같다. 8088, 8086 사용자는 이런 추가 메모리를 사용할 수 없다. XT CPU는 그것에 접근할 수 있게 만들어져 있지 않기 때문이다. 286 이상 기종의 CPU만 연속확장 메모리의 딱 한 비트를 어드레스할 수 있는 능력이 있다(286은 16MB 메모리까지 어드레스할 수 있다). 그러나, 그렇게 할 수 있는 능력과 실제 상황이 언제나 같은 것은 아니다. 16MB까지 메모리에 어드레스할 수 있어도 마더보드상의 물리적인 메모리(흔히 주 메모리로 표시한다) 영향권에서 벗어날 수는 없다. 16MB 메모리까지 어드레스하는 CPU라도 시스템의 물리적 메모리가 4MB라면 사용자는 단지 4MB만을 가지고 있다는 말이다. 연속확장 메모리가 작동하려면 연속확장 메모리가 작동하는 프로텍티드 모드로 PC가 바뀌어야 한다. 기본 메모리는 리얼 모드에서 작동하지만, 연속확장 메모리는 프로텍티드 모드에서 작동한다. 오늘날 새롭게 등장하는 프로그램들은 대부분 연속확장 메모리를 지원한다. 마이크로소프트 윈도우도 도스 연속확장 프로그램이다. 윈도우를 지원하는 응용 프로그램들이 모두 연속확장 메모리 지원 프로그램인 건 당연한 이야기다. 연속확장 메모리는 ‘연속확장 메모리 관리자’가 있어야 한다. 이 프로그램은 교통경찰관과 같다. 연속확장 메모리의 같은 부분을 동시에 사용하지 않도록 정리해 준다. MS-DOS나 윈도우에 있는 ‘Himem.sys’ 파일이 바로 연속확장 메모리 관리자 프로그램이다. 연속확장 메모리를 알려면 상위 메모리 영역(HMA : High Memory Area)에 대해서도 자세히 알아야 한다. 상위 메모리 영역은 연속확장 메모리의 처음 64KB를 가리킨다. 상위 메모리 영역을 잘 사용하는 방법 중 하나는 도스의 부분을 그 영역에 로드해 놓는 것이다. 기본 메모리 점유를 절약하는 방법이다. 시스템에 연속확장 메모리가 설치되어 있고, 사용하는 도스가 버전 5.0 이상 제품이라면 도스는 자동으로 상위 메모리 영역에 로드된다. 이 상태는 C:\>type config.sys를 입력해 확인할 수 있다. 도스가 상위 메모리 영역에 로드된 상태라면, Config.sys 파일에 DOS=high라는 명령이 들어있다.
메모리 관리에 결정적인 CONFIG.SYS 파일의 예
컴퓨터를 키고, 부팅되면 도스는 우선 Config.sys 파일부터 검사한다. 이는 특별한 디바이스 드라이버나 시스템 셋팅 요건이 들어있는가를 살피기 위함이다. 전형적인 Config.sys 파일은 마우스를 작동시키는 명령, 연속확장 메모리 관리자 인스톨 내용, 디스크 캐싱 프로그램 로드 등의 내용들을 담고 있다. 주의를 기울일 부분은 버퍼BUFFERS 정의문이다. 버퍼는 작지만 하드디스크 액세스 숫자를 줄여서 처리 속도상의 이득을 가져온다. 크기는 섹터 하나만큼이다. 이상적인 버퍼 수는 경우마다 다르지만, ‘BUFFERS=20’ 정도면 어느 시스템이든 수용할만한 표준이다. 특별한 비용을 쓰지 않고 속도를 향상시킬 수 있는 기술이다. Config.sys 파일의 현재 상태를 점검한다. 단, 버퍼 수를 증가하면 프로그램을 위한 여유 공간이 줄어든다는 점도 기억해야 한다. 각 버퍼는 512바이트를 차지한다. 즉, 버퍼수를 20으로 설정하면 그 때문에 메모리를 10K를 점령하게 된다. Config.sys 파일에 디바이스 드라이버를 배치하는 순서는 다음과 같다.
1. HIMEM.SYS
2. EMS 관리 소프트웨어, EMS 보드가 있을 때
3. XMS 지원 디바이스 드라이버
4. EMM386.EXE
5. HMA 지원 디바이스 드라이버
가장 일반적인 Config.sys 파일의 예를 하나 들어보자(도스 5.0 기준).
C:\>copy con config.sys
buffers=20
files=30
device=c:\dos\himem.sys
dos=high,umb
device=c:\dos\emm386/sys 2048
devicehigh=c:\dos\ansi.sys
devicehigh=c:\mouse.sys
다음 달에는
하드웨어하면 바늘가는데 실처럼 떠오르는 단어, 소프트웨어. 다음 달에는 소프트웨어에 관해 살피고자 한다. 소프트웨어란 무엇이며 제작 과정은 어떻게 되는지, 구입은 어떻게 할 수 있는지 등등을 챙길 계획이다.
★ 메모리에 관해 더욱 자세한 내용을 공부하고자 원하는 사용자를 위해 지난 마이컴에 실렸던 부분을 알려드립니다.
91년 8월호 특별부록 – 완벽! 메모리 관리 가이드
92년 9월 특집 – 메모리의 새로운 발견
문
메모리를 추가하고자 하는 이유는 무엇인가?
답
1. 용량이 큰 프로그램을 쓸 때 메모리 걱정하지 않고 사용할 수 있는가.
2. 램상주 프로그램을 사용하고 싶어하는가.
3. 프로그램 여럿을 동시에 사용할 필요가 있는가
이 세 가지 요건을 먼저 고려해 사용자가 필요로 하는 메모리 한계를 결정해야 한다.
문
PC는 1MB를 지원하도록 디자인했다고 들었는데, 요즘 광고에 보면 메모리가 2메가, 3메가라는 말을 자주 한다. 어떤 내용이 맞는가?
답
도스는 본래 1MB를 지원하도록 설계되었다. 그러나, 컴퓨터 사용 환경의 발전으로 더욱 많은 메모리를 필요로 했다. 그래서 메모리 한계를 뛰어넘는 연속확장 메모리가 등장한 것이다. 메모리가 2MB라면 기본 메모리 1MB에 연속확장 메모리 1MB로 구성된 제품을 말하는 것이다.
문
만약 도스가 사용하지 않을 때 연속확장 메모리는 어떻게 활용하는 것이 좋은가?
답
연속확장 메모리가 도스를 지원하지 않을 때는 가상 디스크나 램 디스크, 디스크 캐시(디스크에 저장된 내용을 자주 액세스해야 할 경우 정보를 보관해 두도록 따로 마련한 메모리 구역), 프린터 스풀러(데이터 파일이 프린터에 피드할 수 있도록 조작해 주는 역할 담당) 등으로 사용할 수 있다.
문
내가 필요로 하는 메모리는 얼마나 되는가?
답
사용자 나름이다. 정답은 없다는 말이다. 사용자가 사용할 응용 소프트웨어의 종류와 작업 형태에 따라 결정될 것이다.
MEM 명령은 MS-DOS 5.0에서 처음 제공되었다. <그림 3>은 도스 6.0이 제공하는 MEM 명령으로 얻을 수 있는 정보이다. 컴퓨터의 현재 램 정보는 도스 프롬프트 상태에서 ‘C:\>MEM’이라고 입력하면 볼 수 있다. 버전 5.0을 실행시키면 다섯줄의 정보가 나타나고 6.0을 실행시키면 <그림 3>처럼 나타난다. 그러나, 지금 보인 예와 똑같은 형태가 아니라고 해서 놀랄 필요는 없다. 시스템마다 각각의 상황이 모두 다르기 때문이다. 표에 들어있는 내용물을 하나하나 살펴보자. 첫번째 줄을 보자. 현재 사용중인 시스템의 기본 메모리를 표시한다. 예에서 보여주는 기본 메모리는 638KB이고, 빈 공간은 566KB이다. 기본 메모리는 언제나 640KB를 기준으로 한다는 것은 이미 설명한 대로다. 표에서 ‘사용한 메모리used‘라고 표시한 부분은 디바이스 드라이버나 메모리 상주 프로그램등이 이미 점유하고 있는 부분을 말한다. 항상 메모리에 상주하는 프로그램이기 때문에 메모리 상주 프로그램과 디바이스 드라이버를 많이 사용하면 할수록 다른 프로그램을 위한 공간이 줄어드는 것은 당연한 이야기다. 그 다음의 ‘여유 공간free‘은 더욱 주의를 기울여야 할 항목이다. 빈 공간이 얼마나 되느냐에 따라 원하는 프로그램을 실행할 공간이 점점 줄어들기 때문이다. 그러나, 진짜 문제는 실행하려는 프로그램에 필요한 기본 메모리보다 남아있는 빈 공간이 적을 때이다. 윈도우를 실행시킨다고 가정해 보자. 윈도우(영문 윈도우 3.1 기준)를 실행시키려면 1MB의 기본 메모리 여유는 있어야 한다. 인스톨하다 남은 공간이 충분하지 않으면, 삑 소리가 나면서 설치가 중단되는 건 메모리 부족 때문이다. 그 다음 줄은 상위 메모리 관련 정보이다. 마우스 드라이버처럼 굳이 기본 메모리를 쓸 필요가 없는 디바이스 드라이브 등을 위한 ‘저장 공간’으로 유용하다. 이 처리는 QEMM 386과 같은 메모리 관리 프로그램으로 할 수 있다. 어댑터 램/롬 정보는 세번째 줄에서 찾을 수 있다. 640KB와 1MB사이의 384KB는 PC를 처음 디자인할 때는 본래 어댑터 램/롬을 위한 공간이었다. 사실, 컴퓨터는 VGA 카드와 컴퓨터의 바이오스와 같은 것들을 위해서도 그 메모리의 절반 넘는 공간을 사용할 것이다. 네 번째 줄은 연속확장 메모리 정보이다. 연속확장 메모리는 컴퓨터 속도 향상에 도움을 줄 운영체제와 프로그램을 위해 사용한다. 끝부분의 총 메모리total memory는 현재 컴퓨터에 설치된 총 메모리를 알려준다. 예로 보인 <그림 3>은 4MB가 총 메모리이다. 그러나, 시스템에 따라서는 2MB이거나 8MB일 수도 있는 변화 가능한 값이다. 여기서 말하는 총 메모리는 결국 기본 메모리, 상위 메모리, 어댑터 램/롬, 연속확장 메모리의 총합을 말하는 것이다. 마지막 줄의 1MB하의 총합은 기본 메모리와 상위 메모리만을 합친 값으로 읽을 수 있다. 도스의 MEM 명령은 현재 메모리가 어떻게 사용되고 있는지 실상을 정확하게 파악하게 해 준다.
새내기 컬럼을 읽다가 궁금하신 사항을 보내주신 독자엽서는 가능한한 답해 드리고자 합니다.
9월호 컴퓨터 새내기 컬럼에는 80486DX2의 클럭속도가 50이나 66MHz로 나왔는데, 전자상가 PC의 처리속도는 보통 391MHz라고 나옵니다. 이 엄청난 차이는 어째서 나오는 것입니까? 처리속도와 클럭속도는 다른 겁니까?(관악고 2 손영주-영등포구 대림 3동)
클럭속도와 처리 속도는 같은 이야기입니다. 아직까지 486은 66MHz를 지원하는 것이 최고입니다. 컴퓨터 케이스에 표시된 숫자는 보통 클럭 속도를 표시하는 것이 일반적이지만, 클럭속도와는 무관한 숫자들이 나타나는 경우도 있습니다. 전광판에 표시된 숫자는 정확하지 않아 시스템을 구입할 때 크게 영향을 미치는 부분이라고 볼 수 없습니다. 시스템을 구입할 때는 반드시 CPU에 대해 확인하세요.

컴퓨터 새내기lipc4 