Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DeFacto-Standard IT

Memory Fragmentation 본문

OS/Theory

Memory Fragmentation

defacto standard 2017. 11. 11. 22:38

프로세서를 실행시키기 위해 메모리를 할당, 해제하는 과정에서 나타나는 현상. 내부단편화와 외부단편화가 있다.

 

내부단편화 : 프로세스에 할당된 메모리의 크기가, 프로세스가 요구하는 양보다 많아서 남는 상태. 실질적으로 쓰이지는 않지만 이미 할당되어 다른 프로세스가 사용 못해 공간이 낭비되는 상태.

 

외부단편화 : 메모리가 프로세스가 할당이 되지 않은 상태라 사용 가능한 상태이지만, 그 크기가 너무 작아서 실질적으로 이를 사용할 수 있는 프로세스가 없는 경우.

 

할당기법에 따른 단편화 발생 여부

연속 메모리 할당기법

비연속 메모리 할당기법

내부단편화

고정분할

가변분할(동적분할)

페이징

세그먼트

외부단편화

O

X

O

X

O

X

O

설명

내부단편화

메모리를 일정한 크기로 할당하므로 보통 프로세스가 요구하는 메모리보다 크게 할당되어 주로 발생

프로세스가 요구한 양 만큼 메모리가 분할되어 할당되므로 발생X

작업에 상관 없이 페이지의 크기가 정해지기 때문에 보통 작업은 페이지보다 더 작으므로 발생

 

외부단편화

일정한 크기로 할당된 메모리 보다 프로세스가 요구하는 메모리가 커서 아예 들어가지 못하는 경우, 할당된 메모리는 전부 외부단편화로 취급

 

메모리를 페이지와 동일한 크기로 페이지 프레임을 만드므로 발생X

 

 

<단편화를 해결하는 방법?>

1. 연속 메모리 할당 기법-고정 분할 기법에서 내부 단편화를 해결하기 위해 가변 분할 기법이 나왔다.

2. 하지만 여전히 외부단편화가 발생하였고, 이를 최소화하기 위해 비연속 메모리 할당 기법이 나왔다.
3. 비연속 메모리 할당 기법의 페이징에서 어느 정도의 외부 단편화를 해결하였으나 (페이지로 나뉘어 들어가므로 모든 페이지 프레임을 전부 사용할 수 있으므로. 연속 할당은 연속적인 할당으로만 사용가능하다.)

4. 고정적으로 메모리 할당이 되므로 내부 단편화가 발생하였다. 이를 최소화하기 위해 작업을 가변적으로 분할하는 세그먼트 기법이 나왔다.

5. 하지만 세그먼트 기법 역시, 현실세계의 메모리가 한정되어있고, 작업을 가변적으로 분할하여 할당하기 때문에 외부 단편화를 해결을 하는 것은 불가능했다. 이로서 '가상 메모리'라는 개념이 나왔고, 메인 메모리가 아닌 보조 저장 매체(HDD)등을 메모리와 동일시하여 사용하는 기법이 나오게 되었다.


외부단편화를 해결하는 방법은 압축과 통합이 있다. 압축은 메모리의 빈 공간을 한 곳에 몰아서 합치는 것을 의미한다.

통합은 프로세스에 할당, 해제되면서 생긴, 서로 맞대고 있는 외부 단편화 메모리를 합치는 것이다.

'OS > Theory' 카테고리의 다른 글

멀티쓰레드의 장단점  (0) 2017.11.15
다중 프로그래밍에서의 메모리 할당 기법  (0) 2017.11.11
Context-Switching  (0) 2017.11.11
Deadlock  (0) 2017.11.11
Thread / Process  (0) 2017.11.11
Comments