DongDD's IT

Memory Management - Swapping, Contiguous Allocation, Multiple-partition allocation, Dynamic storage allocation, Fragmentation 본문

운영체제

Memory Management - Swapping, Contiguous Allocation, Multiple-partition allocation, Dynamic storage allocation, Fragmentation

DongDD 2017. 11. 3. 16:33

Memory Management


Swapping


- 프로세스가 메모리에 없을 때 Disk에서 가져오거나 Memory가 가득 차서 가져올 수 없을 떄 프로세스를 Swapping한다고 말한다.


Backing Store

- 모든 메모리 이미지의 복사본이 있는 곳으로 유저에게 메모리 직접 접근을 가능하게 한다.

- 디스크에 대한 접근은 메모리 접근보다 시간이 더 걸린다.

Roll out, roll in

- Swap out, swap in과 같은 말로 스케쥴러에 의해 우선순위가 낮은 프로세스는 swap out되고 높은 프로세스는 swap in하여 수행된다.

메모리 공간이 부족하여 필요한 프로세스를 가져올 수 없을 때 backing store로 swap out(roll out)하고 필요한 프로세스를 가져올 때는 backing store로부터 swap in(roll in)하여 user space로 가져온다.


Contiguous Allocation


- 하나의 프로세스를 메모리 공간에 연속적으로 저장하는 방법이다.

- 메모리의 낮은 부분에 interrupt vector와 함께 operation system이 존재한다.

- 메모리의 높은 부분에는 User process가 존재한다.

- Relocation Register에 들어 있는 시작 주소를 이용하여 프로세스들이 서로간 영역을 침범하지 않도록 막는다.

- Limit Register에는 프로세스의 범위가 들어있다.

-> 즉, Relocation Register ~ Relocation Register+Limit Register의 메모리 공간을 사용한다고 볼 수 있다

- MMU가 Logical address를 동적으로 Physical address로 변환해준다.


Multiple-partition allocation


- Hole이라는 개념을 사용해 memory 할당이 이루어진다.

- Process가 도착하면 할당될 수 있는 충분한 크기를 가진 Hole을 찾아 할당한다. (Hole size >= Process size)

- Operationg System은 allocated partitions(할당된 부분)과 free partition(Hole)에 대한 정보를 유지해야한다.

Hole

- 사용 가능한 메모리 부분

- 다양한 사이즈의 hole이 존재한다.

Dynamic storage allocation


- 들어오는 프로세스에 따라 Memory를 동적으로 할당해주는 방법이다.

1) First-fit : 가장 처음에 나오는 프로세스가 할당될 수 있는 충분한 크기를 가진 Hole에 할당하는 방법

2) Best-fit : 프로세스가 할당될 수 있는 크기를 가진 Hole중에서 메모리 낭비가 가장 적은(만족하는 것 중에 가장 작은) Hole에 할당하는 방법

3) Worst-fit : 프로세스가 할당될 수 있는 가장 큰 크기를 가진 Hole에 할당하는 방법

Example) 4K 크기를 가지는 Process가 메모리에 할당되려 할 때

1) First-Fit : 들어갈 수 있는 공간 4K, 11K, 5K 중 가장 처음 만나는 5K에 할당하게 될 것이다.

2) Best-Fit : 들어갈 수 있는 공간 4K, 11K, 5K 중 가장 작은, 최적의 공간은 4K이기 때문에 4K에 할당한다.

3) Worst-Fit : 들어갈 수 있는 공간 4K, 11K, 5K 중 가장 큰, 최악의 공간은 11K이기 때문에 11K에 할당한다.


이 예제에서 First-Fit방식으로 할당하게 된다면 Process 4K가 들어간 5K영역 중 1K가 남아 모든 프로세스가 1K보다 크다면 1K를 사용할 방법이 없어 Internal Fragmentation이 발생할 수 있다.



Fragmentation(단편화)


1) External Fragmentation

- 전체 메모리의 빈 공간을 보면 프로세스가 할당될 수 있는 빈 공간의 크기가 있지만 연속적이지 않기 때문에 프로세스를 할당할 수 없는 경우를 의미한다.

- Compaction을 통해서 External fragmentation을 줄일 수 있다.

Compaction : 비어있는 Hole들을 합쳐 하나의 큰 Hole(Block)로 만들어주는 기법

- Compaction은 Relocation이 동적일 때와 실행 시간일때 가능하다.

2) Internal Fragmentation

- 할당된 메모리 영역이 프로세스의 크기보다 약간 큰 경우, 프로세스가 할당된 이후에 Hole에서 남는 부분들이 사용될 수 없는 경우를 의미한다.


Comments