d라이브러리









윈도우와의 메모리 속도 전쟁

쉽게 배우는 윈도우 교실(마지막회)

절찬 연재돼온 윈도우 교실이 마지막회를 맞았다. 올해는 '윈도우 원년'으로 불릴 만큼 운영체제의 변화가 두드러지게 나타난 한해였다. 아무쪼록 이 연재가 변화하는 시대에 적응하려는 독자들에게 큰 보탬이 됐으면 하는 바람이다. 이번 강좌의 내용은 윈도우 사용을 위한 최적화의 문제다.

컴퓨터 사용자들은 대부분 메모리에 굶주리고 속도에 목마르다. '탐욕스런 대식가' 윈도우를 기본 운영 환경으로 사용하면서 이 현상은 더욱 심해졌다. 컴퓨터를 새로 살 사람이라면 아무 걱정이 없다. 경제적 형편이 허락하는 한 빠르고 용량이 큰 컴퓨터를 사면 그만이다. 그러나 기가막힌 프로그램이 새로 나왔다고 해서, 새로운 기종이 등장했다고 해서 그때마다 컴퓨터를 바꾼다거나 업그레이드를 한다는 것은 많은 사람들에게 아직은 요원한 희망사항일 뿐이다.

그러면 윈도우를 사용하면서 과연 어떻게 해야 돈을 최소로 들여 최대의 효과를 거둘까. 혹은 돈을 한푼도 안들이면서 터보엔진을 요구하는 윈도우의 요구를 충족시킬 수 있을까. 이번호에는 새롭게 컴퓨터를 구입하려는 사람과 현재의 시스템을 가능한 한 그대로 유지 하면서 빠른 윈도우를 사용하고자 하는 사람들을 위해 구매 포인트와 업그레이드의 우선 순위, 현재 가지고 있는 자원의 최적화 방법 등을 소개하기로 한다.

새로 산다면 베사나 엑셀러레이터 보드로

만약 아직 컴퓨터가 없어 새로 컴퓨터를 살 작정인 사람이 있다면 당연히 386보다는 486과 같은 빠른 컴퓨터를 사는 것이 좋다. 윈도우의 속도는 마이크로프로세서의 속도에 크게 의존하니만큼 이것은 당연한 것이다. 하지만 같은 486이라도 로컬베사 방식과 아닌 것 사이에는 엄청난 속도차이가 있음을 반드시 알아두어야 한다.

로컬베사 방식의 컴퓨터란 32비트급 컴퓨터의 아킬레스건이던 디스크 컨트롤러와 비디오 어댑터의 느린 속도를 개선한 컴퓨터를 말한다. 로컬베사 방식이 아닌 보통의 ISA버스 방식의 컴퓨터는 16비트 컴퓨터와의 호환성을 유지하기 위해 CPU가 32비트임에도 불구하고 대부분의 주변장치에서 16비트를 그대로 사용하였다. 그러다 보니 CPU만 앞서 나가고 하드디스크나 비디오는 뒤처지는 기현상이 생겼다. 특히 프로그램의 길이가 길어지고 비디오 보드를 혹사시키는 윈도우 환경이 도래하면서 비디오나 하드디스크쪽의 병목현상은 대단했다.

이에 따라 점차 CPU뿐만 아니라 디스크 콘트롤러 부분이나 비디오 컨트롤러 부분도 32비트 버스를 이용할 수 없을까하는 문제의식이 생겨나왔고, 이에 일정한 해답을 주는 것이 바로 로컬베사방식의 컴퓨터다. 로컬베사란 말은 로컬과 베사라는 두개의 단어의 결합으로, 우선 로컬은 부분적으로(Locally)라는 뜻이고 베사는 'Video Electronics Standards Association', 즉 모니터나 비디오카드 등을 생산하는 대표적인 업자들의 표준제정을 위한 협회를 뜻한다. 따라서 로컬베사방식이란 부분적으로 이 표준을 따른 컴퓨터라는 뜻이다.

하지만 이미 베사방식이 아닌 ISA방식의 컴퓨터를 가지고 있는 사람이라면 무리하게 베사 방식으로 바꿀 것이 아니라 비디오카드만 윈도우 액셀러레이터 기능이 있는 비디오 카드로 교환하면 빠른 속도와 화려한 색상을 맛볼 수 있다. 로컬베사나 윈도우 엑셀러레이터 보드는 자체의 드라이버를 사용하면 최대 1천6백80만 컬러까지 지원하기 때문에 윈도우 자체가 겨우 2백56컬러만을 지원하는 것에 비해 색상의 폭의 넓어진다.

경제적으로 조금의 여유가 있다면 제일 먼저 메모리를 늘리는 것이 현명하다. 왜냐하면 메모리 대식가인 윈도우에게 4메가는 그야말로 '코끼리 비스켓'이기 때문이다. 윈도우의 메모리는 한마디로 다다익선이라고 할 수 있다.

기본적인 권장사항-메모리 늘리기

윈도우와 메모리의 관계는 어떤 것일까? 윈도우에서 메모리라는 자원이 갖는 의미를 생각해보자. 우선 메모리는 동시에 얼마나 많은 응용프로그램을 실행시킬 수 있는가를 결정짓는 요소다. 다음으로 메모리는 얼마나 많은 정보를 한꺼번에 저장할 수 있는가를 결정 짓는데도 관계가 있다. 마지막으로 윈도우의 실행속도에도 영향을 준다. 윈도우는 이용가능한 메모리가 거의 없거나 전혀 없을 때 더 느리게 작동하거나 아예 작동하지 않는다. 따라서 윈도우에서 메모리는 제일 중요한 자원의 하나이며 이를 효율적으로 사용하는 것은 윈도우의 성능을 최대화하는 지름길이다.

특히 386기종을 가지고 있거나 로컬베사 방식이 아닌 컴퓨터의 사용자라면 메모리를 4메가에서 8메가 정도로 늘리는 것이 좋다. 그렇지 않다면 윈도우는 메모리 부족분을 모두 하드디스크로 보충하려고 하는데, 이것을 가상메모리(Virtual Memory)라고 한다.

결국 메모리의 크기가 작으면 교체파일을 빈번하게 사용하게 되고 교체파일을 빈번하게 사용한다는 것은 그만큼 하드디스크를 자주 억세스(ACCESS)한다는 말이 되기 때문에 컴퓨터 속도는 느려지게 되는 것이다. 하드 디스크가 메모리보다 얼마나 느린가는 하드 디스크를 측정하는 속도가 보통 밀리세컨드(1천분의 1초)인데 비해 메모리의 속도가 나노세컨드(1백만분의 1초)인 것을 생각해보면 알 수 있다. 따라서 메모리 크기가 작다는 것과 속도가 느리다는 것은 서로 긴밀하게 연결될 수밖에 없다.

교체파일에 대한 자세한 이야기는 뒤로 미루기로 하고 이제 캐시(Cache) 에 대해 알아보도록 하자. 디스크 캐시는 컴퓨터가 하드 디스크로부터 어떤 내용을 읽어들여야 할 것을 미리 주기억장치(메모리)에 가져다 놓음으로써 하드디스크를 억세스하는 대신 메모리를 억세스하도록 메모리의 일정부분을 할애하는 것을 말한다. 교체파일의 사용을 억제해서 윈도우의 속도를 조절한다는 것은 메모리 입장에서 볼 때 소극적인 대응이라고 할 수 있다. 왜냐하면 메모리가 부족하면 그 부족분을 비교적 용량상의 여유가 많은 하드디스크에게 빼앗기게 된다. 이렇게 되지 않으려면 메모리를 넉넉하게 보유하자는 논리로 귀결된다.

그러면 이제 좀더 적극적인 측면에서 메모리를 활용하는 방법을 생각해보자. 즉 하드디스크를 사용해야 할 때 하드디스크 대신 메모리를 사용한다면 컴퓨터의 속도가 빨라질 수 있을 것이라는 반대의 측면도 생각해볼 수 있다. 이렇게 메모리를 적극적으로 활용하는 방안으로 제시할 수 있는 것이 디스크 캐시다.

캐시의 원리는 근본적으로 프로그램 수행 시에 나타나는 참조집약성(locality do reference)을 이용하는 것이다. 일반적으로 컴퓨터 프로그램이 수행될 때 CPU가 억세스하는 디스크상의 주소를 관찰하면 어느 한정된 시간안에는 디스크의 특정 부분만을 집중적으로 억세스하는 것을 알 수 있다. 이를 공간적 집약성이라고 한다. 따라서 이렇게 CPU가 집중적으로 억세스하는 부분을 메모리 내의 임시저장소인 캐시로 가져다 놓으면 CPU는 그 내용을 참조하기 위해 하드디스크가 아닌 캐시를 억세스하게 되고 이에 따라 컴퓨터의 속도가 빨라지는 것이다.

이러한 캐시의 원리는 하드디스크와 메모리 간의 디스크 캐시에 앞서 메모리 중에서도 가격이 비교적 싸지만 속도가 느린 DRAM의 속도지연을 개선하기 위해 가격은 비싸지만 빠른 속도로 처리가 가능한 SRAM을 캐시메모리로 이용한데서 일반화 되었다. 또한 이에 앞서 CPU와 메모리의 속도차이를 보정 하기 위한 CPU내 고속의 기억장치인 레지스터 등에 캐시의 개념이 사용되고 있었다.

메모리를 이용해 디스크 캐시를 사용하려면 SMARTDRV.EXE와 같은 디스크캐시 프로그램이 있어야 하며 이것이 램상주 프로그램으로 autoexec.bat이나 config.sys에서 컴퓨터를 켜자마자 기동되어야 한다.

일반적으로는 'c:\windows\smartdrv 2048 1024'와 같이 옵션을 추가하게 마련인데 앞의 수치는 도스 프로그램상에서의 캐시 메모리의 크기를 의미하고 뒷부분은 윈도우 상에서 캐시의 크기를 의미한다. 따라서 4M 정도의 램을 가지고 있다면 앞의 수치를 1024, 뒤의 수치를 512정도로 하는 것이 좋고 만약 8M 정도의 램을 가지고 있다면 앞의 수치를 2048, 뒤의 수치도 2048정도로 하는 것이 적당하다.

도스프롬프트 상태에서 smartdrv/s를 입력하면 캐시의 실행상태를 보여준다. 여기서 /s는 상태(status)를 의미한다.
 

메모리 부족을 해결하는 최선의 방법은 메모리를 추가 장착하는 것이다.


시스템은 느려도 메모리가 충분하다면

윈도우 전문가들은 하드디스크의 부담을 덜기 위한 또하나의 방법으로 램드라이브 이용을 추천한다. 이것은 대부분의 응용프로그램들이 실행중에 데이터를 저장하기 위해 임시파일을 이용하는 것이다. 어떤 응용 프로그램들은 TEMP(또는 TMP) 환경변수에 의해 지정된 디렉토리에 임시 파일을 저장한다.

윈도우를 설치할 때 이미 AUTOEXEC.BAT파일에 SET명령으로 '(SET)TEMP=C :\WINDOWS'과 같은 환경변수가 설정되어 있을 것이다. 물론 이것은 응용프로그램이 TEMP값을 사용할 때만 의미가 있다. 어떤 프로그램은 TMP라는 변수를 사용하기도 하는데 이때에는 '(SET)TMP=C:\WINDOWS'는 행을 별도로 추가해야 한다. 아무튼 이렇게 임시파일에 대한 설정이 하드 디스크상의 윈도우라는 디렉토리로 돼있다면 프로그램이 임시파일을 읽고 쓸 때마다 하드 디스크를 빈번히 억세스한다. 그래서 느린 하드디스크의 부담을 줄이기 위한 방편으로 램 드라이브를 만들고 이곳을 임시파일을 처리하는 장소로 지정해 놓는다면 윈도우의 실행 속도는 눈에 띄게 향상될 것이다.

하지만 메모리가 넉넉치 않다면 램드라이브로는 적어도 1M 정도의 공간이 확보돼야 하기 때문에 이런 방법을 사용하기 어렵다. 램드라이브를 설치하기 위해서는 도스의 RAMDRIVE.SYS라는 파일을 이용해야 한다. CONFIG.SYS 파일에 'DEVICE=RAMDRIVE.SYS 1024/E'라고 하면 1024kB, 즉 1MB의 크기를 가진 램드라이브를 연장메모리상(EXTENDED MEMORY=XMS)에 만들어주는데, 만약 하드디스크가 하나만 있는 시스템이라면 이 드라이브의 명칭은 D:가 될 것이고, 하드디스크가 두개 장착된 경우라면 E:가 될 것이다. 따라서 TEMP변수를 '(SET)TEMP=D:\(또는 E:\)'라고 하면 된다.

램드라이브는 시스템의 속도를 빠르게 하지만 캐시와 마찬가지로 항상 메모리의 일정 영역을 차지하기 때문에 메모리 자원이 부족한 사람은 사용하지 않는 것이 좋다. 하지만 시스템은 느린데 메모리에 여유가 있다면 (메모리 8메가 이상) 2메가 정도의 램드라이브를 잡아 현저한 속도개선 효과를 이룰 수 있다. 참고로 램을 장착할 때 2M 4M 8M 16M로는 늘릴 수 있어도 3M 7M 12M로 늘릴 수 없는데, 그 이유는 메모리가 뱅크단위로 채워져야 하기 때문이다. 이로 인해 8M와 16M사이에는 메꿀수 없는 심연이 존재한다. 물론 요즈음에는 이를 극복하기 위해 72핀 타입의 독특한 램을 장착할 수 있는 메인보드 (이를테면 마이크로넥스 보드)도 발매되고 있지만 아직은 지극히 예외적인 데다가 72핀 타입의 램 자체도 다른 메모리와 호환성이 없어 문제의 소지는 없어지지 않는다.
 

디스크 캐시의 원리


메모리 최적화를 위한 도우미

디스크 캐시를 이용하거나 램드라이브를 이용하는 경우는 메모리가 넉넉할 때나 가능한 이야기이다. 하지만 메모리가 얼마되지 않는다면 디스크 캐시만을 최소로 잡아두고 램드라이브는 설치하지 않는 것이 좋다. 대신 최소한의 디스크 캐시를 위해 메모리 사용을 효율화할 필요가 있다.

메모리 문제는 그리 쉽게 이해하기 어려운 부분인 것 같다. 메모리 관리에 관한 자세한 내용은 올해 '과학동아' 6월호 PC교실에 실렸던 내용을 참조하기로 하고 도스 6.0에 들어 있는 MEMMAKER라는 프로그램을 소개하고자 한다.

MEMMAKER라는 프로그램을 도스프롬프트에서 실행하면 사용자의 AUTOEXEC.BAT 파일과 CONFIG.SYS파일을 검사해 사용메모리의 양을 최대한 확보할 수 있도록 자동적으로 최적화해준다. 사용자는 그저 MEMMAKER의 지시에 따라 간혹 아무키나 눌러주면 몇번의 재부팅을 통해서 어떻게 메모리를 관리하는 것이 좋은지 스스로가 찾아내 최종적인 상황을 정리해낸다. 따라서 메모리에 관련된 복잡한 용어가 도저히 이해되지 않는 초보자라도 MEMMAKER를 실행시키면 대략 1백K정도의 상용메모리를 확보 할 수 있다.

이렇게 확보된 메모리는 도스나 윈도우 프로그램에 할당돼 프로그램 실행의 폭이 넓어진다. 메모리 관리상황은 도스의 MEM이라는 프로그램을 실행시켜 파악할 수 있는데, 다양한 옵션이 있으므로 MEM/?로 알아보고 사용하는 것이 좋다.

물론 도스의 연장메모리관리자(EXTENDED MEMORY=XMS)인 HIMEM.SYS나 연장메모리 관리자(EXPANDED MEMORY=EMS)인 EMM386.EXE를 사용하지 않고 쿼터덱의 QEMM386이나 퀄리타스의 386MAX와 같은 전문적인 메모리 관리 프로그램을 사용하는 경우도 있다. 쿼터덱의 QEMM은 OPTIMIZE라는 프로그램과 MANIFEST라는 프로그램을 이용해 메모리를 최적화하고 그 상황을 자세히 분석해 볼 수 있게 돼 있으며 하나의 물리적인 메모리로 연장메모리와 확장메모리를 필요한 순간에 바꾸어주므로 매우 유용하다. 다만 윈도우와의 호환성이라는 측면에서 도스의 메모리 관리프로그램보다는 제한적이므로 문제가 발생되지 않도록 하려면 메모리 사용의 자세한 내막을 알고 있어야 한다.

하드디스크의 정리는 역시 파일들의 단편 제거(DEFRAGMENT)에서 출발한다. 물론 파일을 억세스하는 데도 단편화제거가 유용하지만 하드디스크 상에 가상메모리인 교체파일을 만드는 데에도 단편화제거가 필요 하다. 단편화 제거를 위한 프로그램에는 노턴7.0의 SPEEDISK나 도스6.0에서 새롭게 추가된 DEFRAG 등이 있는데 만약 더블스페이스를 이용해 하드디스크의 용량을 늘렸다면 반드시 DEFRAG로 단편화제거를 해주는 것이 좋다. 방법은 SPEEDISK C:(또는 D:) 혹은 DEFRAG C:(또는 D:)과 같이 하면된다.

이렇게 단편화를 제거한 뒤에 윈도우를 설치한다면 하드디스크상에서 연속된 공간이 확보되기 때문에 부족한 메모리만큼을 가상 메모리로 사용할 수 있는 교체파일 작성이 용이하다. 교체파일에도 영구교체파일과 임시 교체파일이 있는데 영구교체파일은 한번 만들어 두면 윈도우가 계속 사용할 수 있지만 임시교체파일은 윈도우를 시작할 때 만들었다가 끝날 때 지워버리므로 만들었다 지웠다하는데 시간이 걸린다. 따라서 하드디스크 공간에 여유가 있다면 영구 교체파일을 만들어 두는 편이 좋다. 영구교체 파일은 대부분 윈도우를 설치할 때 자동으로 만들어지지만 상황에 따라서는 임시교체 파일만 만들어지는 수도 있으므로 윈도우의 조절판에서 386확장 아이콘을 선택한 후 사용자 스스로 만들어야 하는 경우도 있다.

임시교체 파일에는 win386.swp 라는 이름이 붙는다. 이 파일은 윈도우가 실행 중일 때 하드디스크에 만들었다가 윈도우가 종료할 때 삭제되며 필요에 따라 크기가 늘어나기도 하고 줄어들기도 한다. 영구교체파일은 spart.par와 386spart.par 두개의 파일로 이루어진다. 이중 spart.par파일은 읽기전용 파일이며 윈도우 디렉토리에 위치한다. 386spart.par는 숨겨진 파일이며 가상 메모리 대화상자의 현재 설정에 화면표시된 드라이브의 루트디렉토리에 위치한다. 이 파일들은 삭제, 이동할 수 없고 이름을 바꾸지 않는다.

하드 디스크상의 최적화라는 것이 늘 하드 디스크상에 이미 존재하는 파일들의 단편화를 제거하는 것만 논의되는 경우가 많은데 사용하지 않고 놀려두는 파일을 삭제해 하드디스크의 군살을 빼는 것도 일종의 최적화라 할 수 있다. (표)는 필요에 따라 지워도 되는 파일들의 리스트다. 이를 참고로 자신이 현재 사용하지 않거나 사용할 필요가 전혀 없는 파일들은 과감히 지우는 것도 물자절약이 미덕인 시대에 해봄직한 일이라 할 수 있다.

이 파일들을 도스프롬프트에서 임의로 지워도 되지만 설치관리자를 이용하는 방법도 고려해 볼수 있다. 원래 설치관리자의 기본용도는 한글윈도우3.1에서 제공하지 않는 장치 제어기의 설치 등과 같이 시스템의 설정을 변경하는 쪽이었을 것이라고 생각된다. 하지만 설치관리자를 이용하면 한글윈도우의 구성요소를 추가하거나 삭제할 수 있다. 윈도우의 기본프로그램 그룹에 있는 설치관리자를 실행한 후 옵션메뉴에서 세번째에 있는 '윈도우 구성 요소 추가/삭제' 항목을 선택해 윈도우 구성 요소들을 완전히 또는 부분적으로 추가하거나 삭제할 수 있다.

윈도우는 쉽지만 이를 최적화하는 것은 도스를 최적화하는 것보다 몇배 어렵다. 왜냐하면 도스의 시동파일은 겨우 config.sys나 autoexec.bat의 두가지 정도로 끝나지만 윈도우의 시동파일은 이 두개의 파일에다 win.ini파일과 system.ini파일까지 합쳐놓은 것이기 때문이다. 사실 정확한 의미의 최적화를 위해서는 win.ini니 system.ini파일 하나하나에 대해 자기 나름의 수정을 해야하는데 이 파일들의 내용을 파악하는 것은 윈도우와 PC에 대한 체계적인 지식을 요구한다. 윈도우를 자신의 것으로 만들기 위해서는 확장자가 ini로 끝나는 파일들이 하는 역할과 세부적인 구성까지 파악해야 할 것이다.
 

(표) 삭제 가능한 파일들
 

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

1993년 12월 과학동아 정보

  • 이형열 대표

🎓️ 진로 추천

  • 컴퓨터공학
  • 정보·통신공학
  • 소프트웨어공학
이 기사를 읽은 분이 본
다른 인기기사는?