[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 9-3) 연속 메모리 할당과 단편화

극꼼 2023. 3. 8. 10:14
반응형


메모리는 일반적으로 운영체제용과 유저 프로세스용으로 구분합니다.

일반적으로는 여러 유저 프로세스가 메모리에 적재되어 있는 것이 바람직하며, 프로세스에 사용 가능한 메모리를 할당하는 방법을 고려해야 합니다. 

 

1. 연속 메모리 할당

: 연속 메모리 할당이란 각 프로세스가 다음 프로세스와 적재된 영역과 인접한 영역에 적재되는 것입니다.

연속 메모리 할당에는 두 가지 분할 방식이 존재하며, 각각 고정 분할, 동적 분할이라 합니다.


<고정 파티션(분할) 방식>

: 메모리를 고정된 크기의 여러 파티션(균등 분할 방식으로, 멀티프로그래밍의 정도는 파티션의 수에 의해 결정)으로 나누고, 각 파티션은 하나의 프로세스만을 포함할 수 있습니다. 

파티션이 비어 있으면 입력 큐에서 프로세스가 비어있는 파티션에 로드됩니다. 프로세스가 종료되면 파티션을 다른 프로세스에서 사용할 수 있도록 합니다.

 

* 장점 : 원리가 단순하고, 시스템 생성 시 주기억장치가 미리 분할되어 운영체제 오버헤드가 줄어듭니다.

* 단점

1) 프로세스의 크기가 고정된 파티션의 크기보다 클 경우, 오버레이(Overlay. 프로세스를 모듈 단위로 나눠서 디스크와 주기억장치 사이에서 할당을 제어) 기법이 사용되어야 합니다. 오버헤드가 증가하는 단점이 있습니다.

2) 프로세스가 고정된 파티션의 크기보다 작을 경우 효율적으로 메모리를 사용하지 못하고 내부에 단편화 문제가 생깁니다.

3) 파티션 수에 따라 프로세스 수가 제한받고, 크기가 너무 작은 프로세스는 효율적인 활용을 하기가 어렵습니다.

 

현재는 고정분할을 사용하는 운영체제는 거의 없습니다.


<동적 파티션(분할) 방식>

(= 가변 분할 방식) 일정한 운영체제는 사용 가능한 메모리 부분과 사용 중인 메모리 부분을 나타내는 테이블을 유지합니다.

모든 메모리는 유저 프로세스에 사용 가능하고, 사용 가능한 메모리의 큰 블록을 hole(아래 이미지에서 파란색 영역)이라 부릅니다. 

 

* hole 리스트에서 크기가 n인 메모리를 사용하기 위해 할당하는 방법

1. 최초 적합

: 첫 번째 사용 가능한 가용 공간을 선택. 집합의 시작에서부터 검색하거나, 이전 검색이 끝난 곳에서 시작하며, 충분히 큰 가용 공간을 찾았을 때 검색을 종료합니다.

2. 최적 적합

: 사용 가능한 공간 중 가장 작은 공간을 선택. 리스트가 크기 순으로 되어 있지 않다면 전체 리스트를 검색해야 하는 단점이 있습니다.

3. 최악 적합

: 가장 큰 가용 공간 선택. 할당 이후 남는 자유공간이 충분히 커서 다른 프로세스들이 사용해야 합니다. 자유 공간이 크기 순으로 정렬되어 있지 않으면 전 리스트를 다 검색해야 합니다. 


2. 단편화

: 메모리 공간 중 일부가 사용할 수 없게 되는 것입니다.

 

1) 외부 단편화 : 총 메모리 공간은 요청을 충족하지만, hole들이 연속적이지 않은 경우입니다. 최초 적합, 최적 적합은 외부 단편화가 발생합니다.

<해소 방법>

- 물리 메모리를 고정 크기 블록으로 나누고, 블록 크기에 따른 정수배로 메모리를 할당 -> 내부 단편화 문제가 생길 수 있습니다.

- 압축 : 메모리의 모든 내용을 한군데로 몰아서 큰 hole을 만드는 것입니다. 메모리가 정적으로 적재되었을 경우 압축은 불가능하며, 재배치가 동적이고 런타임에 수행되는 경우에만 가능합니다.

 

2) 내부 단편화 : 프로세스에 할당된 메모리가 요청된 메모리보다 약간 작아서 남는 부분.

 

반응형