시스템 리소스(resource)
시스템 리소스(resource)란?
사전적 의미로는 resource (자원)
사람, 장비, 인력등과 같이 컴 시스템에서 작업을 수행하기위해서 컴을 구성하는 모든 것
일반적으로 컴시스템에서 작업을 수행하는 프로세스의 관점에는 CPU, 기억장치, 프린터,
터미널, 디스크 등과 같이 컴퓨터 시스템을 구성하는 각 각의 장치들을 가리킨다.
resource all ocation 자원 할당
컴시스템에서 작업을 수행하기 위해서 하나의 프로세서에서 자원을 필요로 하는 경우에
컴 시스템에 존재하는 작업을 프로세서에서 사용할 수 있도록 허용하는 작업.
예로 다중 프로그램 시스템에서 각각의 프로세서 주기억장치,CPU, 입출력장치 등과 같은
시스템자원을 사용할 수 있도록 허용하는 행위.
resource manager 자원관리과
프로세서의 원활한 작업수행을 위하여 컴 시스템에서 사용되는
모든자원에 대한 할당작업을 관리하는 운영체제의 제어 프로그램.
resurce allocation graph 자원할당 그래프
컴 시스템에서 교착상태를 발견하기 위하여 프로세서와 자원사이의 할당과 요구사항을 표현하는 그래프.
자원할당 그래프에서 프로세서와 자원이 하나의 정점으로 표현되고 하나의 프로세서에서
자원을 할당받고 있는 경우에 이들 두개의 정점사이에 간선이 존재한다.
따라서 새로운 자원요청이 발생한 경우, 사이클이 형성되면 교착상태가 발생하는 것을 발견할 수 있다..
대부분 초보자들은 리소스를 메모리로 알고 있는데, 사실 메모리와 리소스는 다른 것이다.
메모리는 메인보드의 램을 말하며, 좀 더 넓게 본다면 하드디스크의 가상 메모리를 포함
한다고 할 수 있다. 그렇다면 리소스는 무엇을 말하는 것일까?
컴퓨터가 동작을 하고 데이터를 처리하기 위해 가지고 있는 메모리를 말하는 것으로 기본메모리는
도스시절에 컴퓨터가 동작하기위해 가지고 있던 최소의 메모리로 지금은 리소스 안에 포함되어 있다
그리고 리소스와 기본메모리는 RAM의 용량과 상관없이 항상 일정하다
하지만 기본메모리는 도스에서는 중요했는데 윈도우로 바뀌면서 무의미 해졌다.
리소스는 컴퓨터의 모든 부품에서 다 가지고 있고, 컴퓨터를 부팅해서 사용하고 종료할때까지
계속해서 사용되고 지워지고 한다.
리소스 관리는 일단 힙 메모리라는 부분에 쌓아 놓고 관리를 하는데 힙 메모리에 올렸다가
내렸다가 하면서 리소스를 관리하는 것을 말한다. 이때 힙메모리에 올라가는 내용은 윈도우즈
관련한 메세지 및 기타 윈도우즈에 관련한 정보들이되며 일반적인 음악파일이나 비디오 파일등의
응용프로그램에 관련한 것들은 메인 메모리쪽으로 올라가서 관리가 됨.
그리고 힙 메모리도 사실은 이미 사이즈가 정해져서(640KB) 관리되기 때문에...
이러한 힙 메모리가 다 차게 되는 경우 윈도우즈가 불안정하게 되거나
리소스가 부족하다는 경고를 사용자에게 보내게 된다.
그리고 대략 윈도우에서 기본적으로 사용하는 메모리는 예전 도스 시절부터 640k 메모리를
기본으로 하여 위에서 말한 힙메모리 등을 내부적으로 관리를 했었지만 윈도우즈로 바뀌면서
기본메모리는 무의미 해졌다. 64개정도의 리소스가 있고, 그 크기는 윈도우마다 정해져 있으며,
윈도우 운영체제별로 이러한 기본 메모리 관리에는 차이가 있다.
리소스를 관리하는 방식은 윈도우 98계열과 윈도우me에서만 의미가 있고
윈도우 2000이나 윈도우 XP에서는 그 의미가 없게된다.
또한, 기본 메모리에 대해서는 실제적으로는 윈도우 기본 서비스등이 띄워지기 때문에 이러한
서비스가 몇개 떠있는냐에 따라 많은 차이가 있지만.. 윈도우2000 서버의 경우 경험상
초기에 대략 100-170M 정도의 기본 메모리를 차지 한다.
이때, 실제 램의 메모리가 이보다 적을 경우 하드에 있는 스왑메모리를 사용하기 떄문에
엄청나게 느려지는 현상이 나타나게 된다.
리소스는 API(application program interface) 모듈이 사용하는 메모리로서, 쉽게 말해
프로그램을 수행하는 데 도움을 주는 메뉴, 비트맵 폰트, 단축키, 문자열 표, 다이얼로그,
아이콘, 커서, 사운드, 통신 등의 드라이버(예를 들면, 확장자가 dll인 것)등을 말한다.
이러한 리소스는 어떤 프로그램을 실행시켰을 때 관련된 리소스도 함께 실행된다.
메모리도 일종의 리소스라고 볼 수 있다.
리소스는 GDI(graphics device interface)와 유저로 나눌 수가 있다.
GDI는 바탕화면, 단축 아이콘, 폰트 등의 인터페이스를 말하는 것이고, 유저는 프로그램
동작을 제어하는 부분이다. 이 둘을 합쳐서 시스템 리소스라고 한다.
현재 시스템의 리소스를 확인하려면 윈도98의 리소스 측정기를 설치후 실행하면 된다.
(제어판 - 프로그램 추가/제거 - windows설치 - 시스템 도구 - 시스템 리소스 측정기)
윈도9x 계열에서 모두 64개의 리소스가 존재하며 크기가 딱 정해져 있어 메모리를 아무리
늘려도 리소스가 더 늘어나지는 않고, 하나의 리소스에 할당되는 메모리의 크기도 미리
정해져 있어서 이는 변하지 않는다.
win98이나 Me는 리소스가 6MB 와 128KB로 구성되며.
이중에서 128KB는 16비트, 6MB는 32비트용으로 사용됨.
리소스 구조를 보면 다음과 같다.
16비트 유저 : 64KB
16비트 GDI : 64KB
32비트 유저 윈도우즈 : 2MB
32비트 유저 메뉴 : 2MB
32비트 GDI : 2MB
64비트
그렇다면 리소스 부족이 생기는 이유는 무엇일까?
위에서 어떤 프로그램을 실행시키면 리소스도 함께 실행된다고 언급했다. 그런데 이 리소스는
크기가 정해서 있기 때문에 한번에 너무 많은 프로그램을 실행시키면 문제가 발생한다.
대부분의 프로그램에서는 리소스를 할당받아 사용한 후 종료시키면 바로 리소스를 반환하지만,
복잡한 프로그램의 경우는 리소스를 제대로 반환하지 못하는 경우가 많다. 또한, 어떤 프로
그램들은 프로그램상의 오류로 인하여 사용한 리소스를 제대로 반환하지 못하는 경우가 많다.
이런 과정이 쌓이다 보면 리소스 부족이 생기는 것이다. 리소스 확보는 아주 중요한 작업이며
윈도우의 안정성에 지대한 영향을 끼치는게 사실이다. 리소스가 어떤건지 어느정도 이해가
되셨다면 무작정 리소스를 확보하는 것보다는 리소스를 제대로 반환하지 못하고 많은 리소스를
잡고 놓아주지 않는 프로그램들을 선택적으로 사용하는 지혜가 필요하다.
정작 유용한 프로그램마져도 리소스 확보를 위해 무작정 희생시키는 것은 비생산적인 작업이다.
정말 필요없는 프로그램은 바로, 리소스를 계속 갉아먹는 악성 버그를 가진 프로그램 들이며,
바로 이러한 프로그램들 때문에 최종적으로 리소스 부족 메세지가 나오고 윈도우가 죽어버리는
경우가 발생하기도 한다.
참고로 윈도우즈 NT나 2000, XP 등의 NT 계열에서는 API 모듈과 실제 데이터가 전체 메모리
공간을 나눠 쓰기 때문에 윈도우즈 98과 달리 아무리 많은 프로그램을 띄워도 리소스가
부족하다는 에러 메시지가 뜨지 않는다.