[컴퓨터 길잡이] PC 대탐험 (22);도스메모리 (11)

최초의 메모리는 PC의 작동원리상 용량이 64KB를 넘지 못했으나 CPU의 새로운 설계방식(8086)의 도입으로 메모리의 확장가능성을 예고한다.

PC가 세그먼트레지스터(지난호 참조)를 사용하면 메모리를 1MB까지 지정할 수 있게 된 것이다.그러나 PC가 다룰 수 있는 메모리 영역은 역시 1MB를 넘지 못했다.

주의할 사항은 여기서 1MB는 실제로 가지고 있는 메모리 양이 아니고 사용할수 있는 메모리 양을 의미한다는 사실이다.

메모리는 얼마든지 장착할 수 있음을 주지하자. 물론 지정메모리 이상의 용량은 무용지물이 되겠지만.

1MB는 PC의 어드레스(데이터를 구분하기 위해 숫자적으로 지정하는 주소)공 간을 의미하게 되는 것.

당시 8088을 채택한 XT컴퓨터가 1M용량을 갖게 된 것도 이 때문이다. 참고로 16비트프로세서인 8086이 먼저나온 CPU이지만 당시의 PC부품환경으로 8086의 아류제품인 8088이 컴퓨터 CPU로 채택됐음을 짚고 넘어갈 필요가 있다.

결국 8088과 8086의 작동원리는 CPU와 외부 주변부품과 1회에 주고받는 데이터수가 16비트냐 8비트냐의 차이 이외에는 모두 같았다.

이후에 나온 80286을 채택한 286컴퓨터부터 실제 다룰 수 있는 메모리가 16M 이상으로 확장된다.

이는 1M라는 PC의 기본메모리를 이용해 새로운 메모리 확장법이 등장하기 때문이다. 흔히 메모리 관리법으로 통칭되는데 새로운 용어로는 확장메모리 연장메모리 실제모드 보호모드 가상모드로 설명될 수 있다.

초보자에게는 이제 PC의 기본메모리인 1M가 어떻게 확장되는가를 살펴보기 위해 1M의 구성원리를 알아볼 필요가 있다.

메모리는 기본적으로 칠판에 비유된다. 새로운 데이터가 들어오면 빈 공간부 터 차곡차곡 쌓인다. 공간이 없으면 기존 데이터를 지우고 그 공간을 다시 메우게 된다.

그렇기 때문에 메모리는 공간의 구분이 없다고 볼 수 있다.

그러나 PC의 메모리는 특정 기능을 위해 일부단위(보통 64KB)를 기준으로 할당되기 때문에 공간개념을 도입해 살펴보면 이해가 쉽다.

실례로 시스템 롬바이오스는 64KB로 기능이 배정되고 비디오메모리의 경우는1백28KB 64KB두개 로 배정된다. 자세한 사항은 추후에 확장메모리와 연장메 모리란에서 살펴보기로 한다.

일반적인 기능배정 단위인 64KB로 1M를 분할해보면 16개로 나누어짐을 알 수있다. 16개의 메모리 공간을 구분하기 위해 편의상 첫 블록을 0번이라 하고 차례로 9번까지 총 10개의 블록을 지정하고 나머지 6개블록을 ABCDEF라 명명해보자.

앞에서도 언급했든 이들 블록사이에는 어떤 경계선도 존재하지 않는다. 블록 이라는 것은 편의상 구분해 붙인 것임을 주지하자.

16개의 블록 가운데 0번부터 9번까지의 10개블록, 곧 64KB 10개인 6백40KB 용량의 용도는 나머지 6개의 블록과 메모리의 기능이 확연한 차이를 보여준다. 이른바 도스메모리로 알려진 이 메모리(6백40KB)는 컴퓨터가 작업을 하는 동안 프로그램과 데이터를 보관하는 일을 전담케 된다. 이 때문에 사용자메모 리라고도 한다. 때로는 1M중에 3백84KB를 상위메모리라 하고 6백40KB를 하위 메모리라고 부르기도 한다.

결국 도스메모리 하위메모리 상위메모리라는 용어는 PC(XT급)의 메모리지정 의 한계인 1M에서 비롯된 것임을 알 수 있다.

도스의 기본설계는 총16개 블록중 10개만을 사용함으로써 전체의 60%만을 활용하고 있는 셈이 된다. 도스의 메모리 사용한계가 6백40KB라는 말도 여기서 나온 것임을 알 수 있다.

하드웨어메모리는 여러가지가 있는데 여기에 설치되는 것이 RAM(Random Aces s Memory)이 된다.

도스메모리이자 사용자메모리인 6백40KB는 보통 데이터나 프로그램 보관으로 쓰일 때는 최소 16KB에서 최대 6백40KB까지 가능하다.

단 설치된 메모리의 크기에 관계없이 0블록부터 차례대로 채워진다는 사실이다. 도스메모리야 말로 PC의 메모리가운데 가장 중요한 작업영역으로 앞으로 나오게될 상위메모리 영역과는 확연한 구분이 지워진다.

지금까지 PC의 메모리 지정한계인 1M가운데에서도 6백40KB의 내용을 살펴보았다. 그런데 6백40KB내 0번의 블록가운데에서도 독특한 기능이 할당된 새로운 메 모리 공간이 있음을 잊어서는 안된다.

2KB이내에서 PC 작동의 가장 기본이 되는 사항이 숨겨져 있는 것이다. 정확 하게는 3가지 기능을 담당하는 1천5백36바이트이다.

첫번째가 1천24바이트가 할당된 것으로 인터럽트 처리 루틴이 있는곳을 말한다. 쉽게 설명해보자.

CPU가 작업중일 때 마우스를 움직이거나 키보드를 치며 통신응답을 보내는등 부정기적인(비동기적인) 명령어나 신호를 보내는 경우가 있다.

작업중인 프로세서가 부정기적으로 들어오는 모든 신호를 일일이 체크하고 명령어를 수행하면 다른 일을 전혀 할 수가 없게된다.

이때 순차적으로 들어온 명령어(다른 작업중에 들어오기 때문에 간섭의 의미 가 있는데 이를 영어로 인터럽트라 함)에 주소를 지정해 보관하고 있다가 순차적으로 CPU에 데이터처리 과정을 알릴 필요가 있다.

이처럼 간섭을 주는 데이터를 저장하는 장소가 인터럽트 처리 루틴용 메모리이다. 두번째 영역은 롬바이오스의 작업영역으로 2백56바이트가 할당되어 있다.

롬바이오스 서비스는 컴퓨터 운영에 기본적인 기능을 담당하고 있으므로 전용의 자료저장소를 필요로 한다.

롬바이오스 데이터영역에는 프로그램이 아직 인식하지 못하고 있는 키보드 입력값이나 컴퓨터에 설치된 메모리 용량, 컴퓨터에 설치되어 있는 장치들에 대한 기록 또는 나중에 다루게될 화면 모드를 나타내는 데이터 등이 보관되어 있다.

롬바이오스에 대해서는 별도의 란에서 설명키로 한다.

세번째 영역또한 2백56바이트가 지정되어 도스와 베이식의 작업영역으로 쓰이는 곳이 있다.

결국 6백40KB의 하위메모리 가운데에서도 인터럽트 루틴처리용 1천24바이트, 롬바이오스 데이터영역 2백56바이트, 도스및 베이식작업영역 2백56바이트를 합쳐 총 1천5백36바이트가 별도로 나누어져 있는 것이다.

PC의 도스메모리(하위메모리 또는 사용자메모리) 6백40KB는 애당초 데이터와 프로그램용으로 쓰이는 메모리로 구분되지만 프로그래밍 기법 등의 발전으로 상위메모리를 이용해 점차 새로운 메모리 관리법이 등장하는 밑거름이 되고있다. 신영복 기자