주기억장치의 메모리는 한정되어 있기 때문에 효율적으로 관리하기 위해서 반입 전략, 배치 전략, 교체 전략 등을 사용한다.
이 때 배치 전략에 해당하는 단계로 주기억장치로 프로세스를 할당할 때의 기법을 알아보려고 한다.
단일 분할 할당 기법
주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법이다.
프로그램이 운영체제에 영향을 주지 않기 위해 운영체제와 프로그램의 영역을 구분하는 경계 레지스터를 사용한다.
→ 하나의 프로세스만 동작할 수 있는 기법이다.
오버레이 기법
주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법이다.
- 하나의 프로그램을 여러 개의 조각으로 분할 한 후 필요한 조각을 차례로 주기억장치에 적재한다.
- 주기억장치의 공간이 부족하면 주기억장치에 적재된 프로그램 조각 중 불필요한 조각이 위치한 장소에 새로운 프로그램의 조각을 덮어씌워 적재한다.
스와핑 기법
하나의 프로그램 전체를 주기억장치에 할당하여 사용하다가 필요에 따라 다른 프로그램과 교체하는 기법이다.
- 프로그램이 보조기억장치로 이동되는 것을 Swap Out, 프로그램이 주기억장치로 이동되는 것을 Swap In이라고 한다.
- 가상기억장치의 페이징 기법으로 발전되었다.
다중 분할 할당 기법
다중 분할 할당 기법을 알아보기 전에 이 두가지에 대해서 먼저 알아보자
- 외부 단편화
분할 된 영역이 할당될 프로그램보다 작아서 프로그램이 할당될 수 없어 사용되지 않고 빈 공간으로 남아있는 분할된 전체 영역
- 내부 단편화
분할된 영역이 할당될 프로그램보다 커서 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간
고정 분할 할당 기법 = 정적 할당 기법
운영체제가 주기억 장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 기법이다.
- 프로그램 전체가 주기억 장치에 위치해야 한다.
- 프로그램의 크기는 다양한데 고정된 크기로 나누다보니 외부단편화나 내부단편화가 일어나 낭비되는 영역이 많다.
- 프로그램의 크기를 미리 알고 있어야 한다.
- 다중 프로그래밍을 위해 사용되었으나 지금은 사용하지 않는다.
가변 분할 할당 기법 = 동적 할당 기법
단편화를 줄이기 위한 것으로 프로그램을 주기억 장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법이다.
- 주기억장치를 효율적으로 사용할 수 있고 다중 프로그래밍 정도를 높일 수 있다.
- 프로세스 크기의 제약이 적다.
- 영역과 영역 사이의 단편화가 발생할 수 있다.
정리
- 주기억장치에 프로그램을 올려서 프로그램을 실행한다.
- 이때 주기억장치에 프로그램을 할당하는 방법이 하나만 넣는 단일 할당기법과 여러 프로그램을 할당하는 다중 분할 할당기법이 있다.
- 단일할당기법으로 할당하면 안정적이기는 하나 낭비가 많고 하나의 프로그램만 실행할 수 있는 점이 있다.
- 다중분할할당기법으로 할당하면 여러 프로그램을 같이 실행 시킬수 있게 되는데 이때 여러 프로그램을 넣기 위해서 영역을 동일하게 미리 설정하는 고정분할 방법과 실행할때 측정해서 넣는 가변분할 방법이 있다.
- 고정분할 할당기법에서는 단편화로 인한 낭비가 많아 효율적으로 주기억장치의 메모리를 활용하지 못한다.
- 가변분할 할당기법에서는 고정보다는 단편화가 적지만 영역간에 단편화는 생길 수 있다.