소용량, 고속, 고가 |
Register |
2. 연속할당과 불연속 할당기법
가. 연속할당(contiguous storage allocation)
① 프로그램을 연속된 메모리 공간에 할당하는 방법으로 초기의 주기억장치 할당 방법으로 사용되었다.
② 기억장치의 공간보다 더 큰 프로그램은 적재하지 못 한다.
→ 이런 문제 해결을 위해서 Overlay기법 등을 사용하였다.
나. 불연속 할당(non-contiguous storage allocation, = 산재할당)
① 프로그램을 한 개 이상의 조각(Page, Segment)으로 나누어 필요한 조각만 주기억장치에 할당하는 방법으로 최근 사용하는 방법이다.
② 가상기억장치 기법으로 사용한다.
③ 프로그램의 크기에 상관없이 적재하여 실행할 수 있다.
3. 주기억장치 관리 : 연속 할당의 경우
단일 사용자 연속 기억장치 할당 | |
다중 프로그래밍 |
고정분할 방식 |
가변분할 방식 |
가. 단일 사용자 연속 기억장치 할당(single user contigious storage allocation system)
① 한번에 한 사용자만 메모리를 사용하는 방법으로 컴퓨터 시스템의 모든 자원은 한 사용자가 마음대로 사용할 수 있다.
② 프로그램의 크기는 주기억장치 용량보다 클 수 없다.
단, Overlay 기법을 이용하여 주기억장치 용량보다 큰 프로그램을 실행 할 수 있다.
③ 경계레지스터(limit register, bound register, fence register)를 사용하여 시스템 영역보호를 한다.
나. 다중 프로그래밍(multiprogramming)
① 고정분할 다중 프로그래밍(fixed partition multiprogramming)
· 주기억장치를 여러 사용자가 동시에 사용할 수 있도록 하여 CPU의 이용률을 높이고 처리량(Throughtput)을 늘릴 수 있는 방법이다.
· ·사용전에 미리 영역을 나누어 놓고 적당한 곳에 프로세스를 할당한다.
(가) 절대번역(absolute translation)과 적재(loading)
절대번역이 되어 정해진 영역에서만 실행되는 것으로 기억장치를 낭비가 있을 수 있지만 구현하기가 쉽다.
(나) 재배치 가능번역(relocatable translation)과 적재(loading)
어떤 영역에서도 그 영역에 수용될 프로그램이 있으면 실행 가능한 경우를 말한다. 절대번역과 적재 상에서 발생하는 기억장치의 낭비를 막을 수 있으나 운영체제를 구현하는 측면에서 더 복잡하다.
② 가변분할 다중 프로그래밍(variable partition multiprogramming)
· 실행 중에 프로세스가 필요로 하는 크기만큼의 메모리를 할당하여 적재하는 방식이다.
· 가변분할 방식은 단편화 문제를 줄이기 위해서 고안이 되었지만 단편화 문제를 해결하지 못했다. (초기에는 단편화 현상이 나타나지 않지만 기억장소의 사용과 반납이 반복되면서 단편화 공간이 생긴다.)
4. 기억장치 관리기법
가. 반입기법(fetch strategy) : When
보조기억장치에서 주기억장치로 언제 프로그램과 데이타를 이동할 것인가에 관한 문제
① 요구호출(demand fetch)
현재 실행되는 프로그램에 의해 참조될 때 프로그램과 데이타를 주기억장치로 옮기는 기법
② 예상호출(anticipatory fetch)
실행되는 프로그램에 의해 참조될 가능성이 있는 프로그램과 데이터를 예측하여 미리 옮겨놓아 효율성을 향상시키기 위한 기법, 예상이 맞지 않을 경우 오버헤드가 발생 하게 된다.
나. 배치기법(placement strategy) : Where
새로 반입된 프로그램을 주기억장치 내의 어느 곳에 둘 것인가에 관한 문제
① 최초적합(first-fit) : 주기억장치 내에 분할된 공간 중 반입된 프로그램을 수용할 수 있는 첫번째 빈 공간에 배치하는 기법
② 최적적합(best-fit) : 주기억장치 내의 분할된 공간 중 적재시 단편화 공간이 가장 적게 발생하는 공간에 배치하는 기법
③ 최악적합(worst-fit) : 주기억장치 내의 분할된 공간 중 적재시 단편화 공간이 가장 크게 발생하는 공간에 배치하는 기법
다. 교체기법(replacement strategy, swapping) : What
새로 반입된 프로그램이 들어갈 장소가 없을 경우 주기억장치상의 어떤 프로그램이나 데이타를 교체대상으로 할 것인가를 결정하는가에 관한 문제
5. 단편화(fragmentation) 문제
연속으로 기억장치를 할당하여 사용할 경우 크기가 맞지 않아서 사용되지 못하는 공간이 생길 수 있는데, 이러한 공간을 단편화 공간이라고 한다.
가. 단편화의 종류
① 내부 단편화(internal fragmentation)
분할의 사용하고 남은 일부분을 말한다. 예를 들어 '100'크기를 갖는 분할에 '80'크기를 갖는 프로그램을 배치하였을 경우 '20'의 공간이 내부 단편화 공간이 된다.
② 외부 단편화(external fragmentation)
분할의 크기가 프로그램의 크기보다 작아서 사용되지 못한 것을 말한다. 예를 들어 '100' 크기를 갖는 분할이 있을 때 '120' 크기를 갖는 프로그램은 배치 되지 못하며 '100'의 공간이 외부 단편화 공간이 된다.
나. 단편화의 해결 : 재배치(relocation)를 이용한 해결
기억장치의 단편화 공간을 주소 재배치를 통하여 묶는 방법인 통합(coalescing)과 압축(compaction)을 사용하여 해결 할 수 있다.
① 기억장치의 통합(coalescing)
· 인접된 공백들을 하나의 공백으로 만드는 것
· 통합을 하여도 공백이 분산되어 있는 경우(사용공간이 사이에 있는 경우)는 큰공간이 생기지 않으므로 단편화 문제를 해결하지 못할 수도 있음
② 기억장소의 압축(compaction)
· 주기억장치내의 모든 공백들을 하나의 공백으로 모으는 작업
· 기억장소의 트림(burping the storage) 또는 쓰레기 수집(garbage collection)이라고도 함
· 압축하는 동안 시스템은 모든 일을 중단해야 함
· 압축은 기억장치상의 모든 작업들을 재배치시키게 되며, 프로그램이 로드 될 때 잃기 쉬운 재배치 관련 정보를 즉각 사용할 수 있는 형태로 유지하여야 함
압축을 하므로 소모되는 시스템 자원이 압축을 통해 얻는 이익보다 더 커질 수 있음
'Fundamental Notes > Operating Systems' 카테고리의 다른 글
Virtual Memory (0) | 2009.01.07 |
---|---|
Main Memory - Paging & Segmentation (0) | 2009.01.07 |
Deadlock (0) | 2009.01.07 |
Process Synchronization (0) | 2009.01.07 |
CPU Scheduling (0) | 2009.01.07 |