리소스가 무엇인지 모르는 분들은 대부분 리소스를 메모리로 알고 있는데, 사실 알고 보면 메모리와 리소스는 다른 것입니다.
메모리는 메인보드에 꽂히는 램을 얘기하는 것으로 좀 더 넓게 본다면 하드디스크의 가상 메모리를 포함한다고 할 수 있습니다.
그럼 리소스는 무엇을 말하는 것일까?
리소스는 API(application program interface) 모듈이 사용하는 메모리로서, 쉽게 말하면 프로그램을 수행하는 데 도움을 주는 메뉴, 비트맵 폰트, 단축키, 문자열 표, 다이얼로그, 아이콘, 커서, 사운드, 통신 등의 드라이버(예를 들면, 확장자가 dll인 것)등을 말하는 것입니다.
이러한 리소스는 어떤 프로그램을 실행시켰을 때 관련된 리소스도 함께 실행되게 됩니다.
메모리도 일종의 리소스라고 볼 수 있습니다.
리소스는 GDI(graphics device interface)와 유저로 나눌 수가 있습니다.
GDI는 바탕화면, 단축 아이콘, 폰트 등의 인터페이스를 말하는 것이고, 유저는 프로그램 동작을 제어하는 부분입니다. 이 둘을 합쳐 시스템 리소스라고 합니다.
현재 시스템의 리소스를 확인하려면 윈도98의 리소스 측정기를 설치해서 실행하면 됩니다.
(제어판 - 프로그램 추가/제거 - windows설치 - 시스템 도구 - 시스템 리소스 측정기)
윈도9x 계열에서 모두 64개의 리소스가 존재하며 크기가 딱 정해져 있습니다. 메모리를 아무리 늘려도 리소스가 늘어나지는 않고, 하나의 리소스에 할당되는 메모리의 크기도 미리 정해져 있어서 이는 변하지 않습니다.
윈도우즈 98이나 Me는 리소스가 6MB + 128KB로 구성되며. 이중에서 128KB는 16비트, 6MB는 32비트용으로 사용됩니다.
리소스 구조를 보면 아래와 같습니다.
16비트 유저 : 64KB
16비트 GDI : 64KB
32비트 유저 윈도우즈 : 2MB
32비트 유저 메뉴 : 2MB
32비트 GDI : 2MB
그렇다면 리소스 부족이 생기는 이유는 무엇일까요?
위에서 어떤 프로그램을 실행시키면 리소스도 함께 실행된다고 했습니다.
그런데 이 리소스는 크기가 정해서 있기 때문에 한번에 너무 많은 프로그램을 실행시키면 문제가 발생하게 되는 겁니다.
대부분의 프로그램에서는 리소스를 할당받아 사용한 후 종료시키면 바로 리소스를 반환하지만, 복잡한 프로그램의 경우는 리소스를 제대로 반환하지 못하는 경우가 많습니다.
또한, 어떤 프로그램들은 프로그램상의 오류로 인하여 사용한 리소스를 제대로 반환하지 못하는 경우가 많습니다. 이런 과정이 쌓이다 보면 리소스 부족이 생기는 것입니다.
리소스 확보는 아주 중요한 작업이며 윈도우의 안정성에 지대한 영향을 끼치는게 사실입니다.
리소스가 어떤건지 어느정도 이해가 되셨다면 무작정 리소스를 확보하는 것보다는 리소스를 제대로 반환하지 못하고 많은 리소스를 잡고 놓아주지 않는 프로그램들을 선택적으로 사용하는 지혜를 가질 필요가 있습니다.
정작 유용한 프로그램임에도 불구하고 리소스확보를 위해 무작정 희생시킨다는 것은 비생산적인 작업일 뿐입니다.
정말 필요없는 프로그램은 바로, 리소스를 계속 갉아먹는 악성 버그를 가진 프로그램들입니다.
바로 이러한 프로그램들 때문에 최종적으로 리소스 부족 메세지가 나오고 윈도우가 죽어버리는 경우가 발생하기 때문입니다.
참고로 윈도우즈 NT나 2000, XP 등의 NT 계열에서는 API 모듈과 실제 데이터가 전체 메모리 공간을 나눠 쓰기 때문에 윈도우즈 98과 달리 아무리 많은 프로그램을 띄워도 리소스가 부족하다는 에러 메시지가 뜨지 않습니다.
[ezwin.net]에서