포털:고등학교/정보·통신 계열 전문 교과(2015)/컴퓨터 시스템 일반/주기억 장치 관리

위키배움터

주기억장치[편집]

주기억장치란[편집]

컴퓨터가 작동하는 동안 컴퓨터가 당장 처리해야 할 명령어와 프로그램들이 저장되어있는 기억장소로 보조기억장치로부터 프로그램이나 자료를 이동시켜서 실행시키는 장치

전원이 꺼지게 되면 기억된 내용이 사라지는 것과 기억된 내용이 사라지지 않고 보존되는 것이 있는데 전자는 램(RAM)이고, 후자는 롬(ROM)이다.

램(RAM)에는 에스램(static RAM)과 디램(dynamic RAM)이 있는데, 디램은 주로 대용량 기억장치에 사용된다.

주기억장치 관리[편집]

주기억장치를 관리에는 단순한 구조의 주기억장치 관리가 있다.

이 관리 기법은 단일 연속 주기억장치 관리와 분할 주기억장치 관리로 나뉘어서 살펴볼 수 있다.


단일 연속 주기억장치 관리[편집]

단일 연속 주기억장치 관리 기법은 운영체제 외의 한 개의 사용자 프로그램만 저장하는 관리 기법이다. 이 단일 연속 주기억장치 관리 기법은 주기억장치를 두 영역으로 나누는데 운영체제를 저장하는 영역과 한 개의 사용자 프로그램을 저장하는 영역으로 나뉜다. 이 기법은 한 순간에 오직 하나의 프로그램만을 주기억장치에 저장하여 실행시킬 수 있는데, 이를 단일 프로그래밍이라고 한다.

단일 프로그래밍의 문제점[편집]

첫 번째 문제점은 주기억장치에 실려야 할 프로그램의 크기가 주기억장치의 용량보다 더 클때 발생한다. 이러한 경우에는 한 프로그램의 일부분을 먼저 실행시키고 나머지 부분을 실행시켰던 부분과 교체시키는 기법을 사용하는 중첩구조를 채택하게 되는데, 이때 컴파일러{원시언어(기계 장치와 모듈 사이의 통신 언어. 쉽게 말해서 사람이 알아듣기 쉬운 상태의 컴퓨터 언어)로 된 프로그램을 목적언어(번역이 없어도 컴퓨터가 직접 식별이 가능한 언어. 쉽게말해 컴퓨터가 이해하기 쉬운 상태의 컴퓨터 언어)로 된 프로그램으로 번역하는 프로그램}와 링커(두 개 이상의 목적 프로그램을 합쳐서 한 개의 프로그램으로 만드는 작업을 하는 프로그램), 로더(목적 프로그램을 읽고 주기억장치에 올려 수행시키는 프로그램)등이 적절하게 사용되어야 한다. 두 번째 문제점은 사용자 프로세스로부터 커널(컴퓨터 운영체계에서의 핵심)영역을 보호하는 기법을 필요로 한다는 것이다. 이를 위해선 하나의 경계 레지스터(극히 소량의 데이터나 처리중인 결과를 일시적으로 기억해 두는 영역)에 커널공간과 사용자 공간 간의 경계 주소값을 갖도록하는 것이다. 또한 단일 프로그래밍은 시스템 자원을 낭비하고 성능 저하를 초래한다는 문제점을 지니고 있다.

분할 주기억장치 관리[편집]

다중 프로그래밍 기법[편집]

한 번에 여러 가지 프로그램을 주기억장치에 적재되도록 하며, 프로그램 하나당 하나의 분할 영역만을 사용할 수 있도록 한다. 다중 프로그래밍 중에서도 고정 분할 다중 프로그래밍 시스템은 이러한 분할 영역이 바뀌지 않고, 가변 분할 다중 프로그래밍 시스템은 프로세스의 움직임에 따라서 분할 영역을 바꾸는 시스템이다.

고정 분할 프로그래밍 시스템은 분할 영역이 바뀌지 않는다는 점에서 운영체제에서의 주기억장치 관리가 쉬워진다는 장점이 있다. 원시 프로그램이 절대 번역과 절대 로더를 거쳐 주기억장치에 적재되면 그 프로그램은 정해진 분할 영역에서만 실행할 수 있지만, 원시 프로그램이 재배치 번역과 재배치 로더를 통해 어느 분할 영역에서도 실행이 가능하도록 할 수 있다.

고정 분할 프로그래밍 기법의 문제점[편집]

첫 번째 문제점은 사용자 프로그램의 크기가 분할 영역의 최대 크기보다 클때 발생한다. 이는 분할 영역별로 중첩 구조를 사용해 해결할 수 있다. 두 번째 문제점은 커널 영역 뿐만 아니라 분할 영역 각각에도 보호가 필요하게 되는데, 이를 해결하기 위해 경계 레지스터를 사용한다. 세 번째 문제점은 분할 영역에 배정받은 프로세스가 그 영역을 다 사용하지 않기 때문에 분할 영역마다 공간이 낭비된다는 것이다. 이를 단편화라고 하며, 분할 영역 내에서 발생하는 낭비를 내부 단편화라고 하고, 분할 영역의 공간보다 프로그램의 공간이 더 커서 공간 용량의 문제로 분할 영역 전체가 낭비되는 현상을 외부 단편화라고 한다.


분할 영역이 고정됨으로써 생겨나는 단편화 현상을 해결하기 위해 생겨난 새로운 기법이 가변 분할 다중 프로그래밍 기법이다.

가변 분할 다중 프로그래밍을 통해 프로세스를 적재시킬 때 다음과 같은 배치 전략을 사용한다. 첫 번째 배치 전략은 최초 적합(first fit)이다. 이는 프로세스의 크기보다 크면서 비어 있는 최초의 분할 영역에 배치하는 기법이며, 단순하고 오버헤드(컴퓨터가 유저 프로그램을 실행할 때에 직접 유저 프로그램처리를 하지 않는 부분)가 적다는 장점이 있다. 두 번째 배치 전략은 최적 적합(best fit)으로 프로세스의 크기보다 크면서 가장 작은 분할 영역에 배치한다. 커다란 분할 영역을 확보하여 대용량 프로그램을 적재시킬 수 있다는 장점이 있지만 쓸모없는 분할 영역들이 생겨나면서 단편화 현상이 발생하게 된다는 단점이 있다. 세 번째 배치 전략은 최악 적합(worst fit)으로 프로세스의 크기보다 큰 분할 영역 중 가장 큰 영역에 배치한다. 이는 단편화 현상을 극소화할 수 있다는 장점이 있지만, 대용량의 공간을 확보하기 어렵다는 단점이 있다.


가변 분할 다중 프로그래밍 기법은 인접 공간 통합 작업과 기억장소 통합 작업을 필요로 한다. 인접 공간 통합은 비어있는 분할 영역이 서로 인접해 있을 경우 이를 통합하는 작업이다. 기억장소 통합은 여러 곳에서 사용 중인 분할 영역들을 주기억장치의 한쪽 끝으로 이동시킨 뒤, 남아 있는 모든 빈 공간들을 하나로 통합하는 작업이다.


주기억 장치의 교체 전략[편집]

FIFO(First In First Out):이미 사용되고 있는 영역 중에서 주기억장치에 배치된 시간이 가장 오래된 영역을 교체하는 전략

LRU(Least Recently Used):이미 사용되고 있는 영역 중에서 주기억장치에 배치된 다음, 사용 한지 가장 오래된 영역을 교체하는 전략

LFU(Least Frequently Used):이미 사용되고 있는 영역 중에서 주기억장치에 배치된 다음, 사용 횟수가 가장 적은 영역을 교체하는 전략