CS/OS

[OS] 다중 프로그램을 메모리에 할당하는 방법 (고정 분할, 가변 분할)

Deveun 2021. 11. 14. 06:31

모든 프로세스는 서로 다른 메모리 사이즈( 4GB, 8GB, 16GB ...)를 가지는 PC에서 모두 동일하게 실행되어야 한다.

 

프로세스마다 크기가 다르기 때문에 메모리의 구역을 나누는 방식은 중요한 문제가 되는데, MMU(Memory Manage Unit)라고 불리는 메모리 관리자는 fetch(메모리로 가져옴), placement(배치), replacement(재배치)를 수행하여 메모리에서 운영체제와 다양한 프로세스의 구역을 나누어 작업공간을 확보한다.

다중 프로그래밍 환경에서 fetch 수행 시에 프로세스은 고정(page)/가변(segmentation) 사이즈로 분할되어진 메모리에 할당되어지고, 메모리에 더이상 새로운 프로세스를 할당할 공간이 부족할 경우에는 이전 프로세스를 스왑영역(Swap Area)로 옮기는 replacement를 수행한다.

 

 

(1) 고정 분할 방식 - Paging --> 현재 기본적으로 사용되는 방식

: 고정된 size로 메모리를 나누고, 프로세스를 이에 맞춰 할당하는 방식

  (장점) 가변 분할방식에 비해 메모리의 관리가 쉽다.

  (단점) 고정 page 사이즈를 초과한 프로세스는 분할되어야 한다. page 사이즈가 클 경우 메모리 낭비의 가능성이 있다.

 

 

(2) 가변 분할 방식 - Segmentation

: 각각의 프로세스 크기에 따라서 메모리를 나누는 방식

  (장점) 1개의 프로세스는 연속되게 저장된다.

  (단점) 먼저 끝난 프로세스의 메모리 사이즈보다 새로운 프로세스의 사이즈가 더 큰 경우 다른 프로세스들의 주소를 이동시켜 메모리 공간을 확보(조각모음)해주어야 한다. --> 관리가 어려움

 

(그림의 예제는 프로세스가 메모리에 할당되는 순서는 고려하지 않았다.)

 

 

- 단편화(Fragmentation)

각각의 방식에서 메모리에는 낭비되는 공간이 발생하는데, 이를 단편화라고 한다.

 

- Paging방식(고정 분할)

: 정해진 paging보다 작은 사이즈의 process가 할당되었을 때, 내부 단편화(Inner Fragmentation)가 발생할 수 있다.

--> 해결방법이 없기 때문에 적절한 page사이즈를 설정해주는 것이 필요.

 

- Segmentation방식(가변 분할)

메모리에 할당된 프로세스들 사이에 새로운 프로세스가 할당되지 못하고 비어있는 외부 단편화(External Fragmentation)가 발생할 수 있다.

--> 프로세스를 메모리에 배치하는 방식을 변경하거나 이미 배치된 프로세스들의 메모리 위치를 이동하는 방법으로 감소

 

 

[참고서적] 쉽게 배우는 운영체제 (조성호 저)