본문 바로가기

IT/CS 기초

메모리 단편화 현상과 해결 방법 : Memory Fragmentation

반응형

Memory Fragmentation 현상이란? (메모리 단편화)


Fragmentation에는 2가지가 있는 데, 하나는 외부 단편화(external fragmentation) 이고, 다른 하나는 내부 단편화(internal fragmentation) 입니다.


external fragmentation(외부 단편화)

- 총 공간을 계산 하였을 때 충분한 메모리가 있음에도, 연속적이지 못해 데이터를 저장할 수 없을 때를 이야기합니다.

예를 들어 메모리에 남은 공간이 총 3기가일 때, 필요한 메모리의 양도 3기가이어서 메모리를 할당 받을 수 있을 것 같지만,  이 남은 공간 3기가가 1기가 * 3개로 나누어져 있는 상황을 말합니다. 

  
internal fragmentation(내부 단편화)

- 고정된 길이만큼 메모리를 할당 할 때 발생하는 fragmentation입니다. 

예를 들어 1기가가 필요한데 4기가를 할당해주어서 3기가가 낭비되고 있는 상황입니다. 


먼저 주목해야 하는 것이 있습니다. internal fragmentation은 고정 길이 메모리 할당 방식에서 무조건 발생 한다는 것이죠. 레코드를 고정길이로 할당하든, 필드를 고정 길이로 할당하든, OS에서 메모리를 고정 길이로 할당하든. 고정 길이 방식의 고질적인 문제가 이 내부 단편화 인 것이죠. 

  
반면에 가변 길이로 메모리를 할당하게 되면 “초기”에는 이러한 internal fragmentation(내부 단편화)가 발생하지 않습니다. 여기서 주의 해야 할 점은 “초기”입니다. 

  
즉, 시간이 지나면 결국 internal fragmentation이 발생하게 됩니다. 메모리의 재 사용과 삭제가 발생하면서 말이죠. 어떤 레코드를 삭제하고, 그 공간을 재 사용 하려고 할 때, 재 사용 할 수 있는 공간이 3기가인데, 새로운 레코드의 길이가 2기가 라면 1기가의 internal fragmentation이 발생하게 됩니다. 그리고 이러한 공간이 모이고 모여서 external fragmentation 또한 발생하게 되죠. 



고정 길이 방식 : 기본적으로 internal fragmentation이 존재한다. 메모리를 많이 할당하게 되면서 external fragmentation이 발생하게 되기도 한다. 

- 가변 길이 방식 : 기본적으로는 internal fragmentation이 존재하지 않지만, 삭제 레코드를 재사용할 때 그 크기에 딱 맞는 레코드가 들어오지 않는 이상 internal fragmentation이 발생한다. 추후 external fragmentation이 발생하게 된다. 
  


그렇다면 결국 가변 길이 방식과 고정 길이 방식 모두 내부 단편화와 외부 단편화가 발생하게 되는데요. 

주로 OS에서는 Paging 기법(고정 길이 방식)을 사용 합니다. 고정 길이 방식에서 주로 발생하는 internal fragmentation이 비용이 더 적게 해결 할 수 있다고 판단 하는 것이지요. 
  


Memory Fragmentation 해결 방법 

: 낭비 공간의 처리 (storage Fragmentation)

  

external fragmentation의 해결방안 

1) storage compaction(압축) : 주기적으로 삭제 공간을 회수하여 메모리 공간들을정리하는 방식 입니다. 비용이 많이 들어 자주 쓸 수 없는 것이 단점입니다. 주로 정해진 주기에 따라서 실행 됩니다. 

2) Coalescing(통합) : 단편화로 인해 쪼개진 공간들 중 인접한 공간들을 합쳐서 더 크게 만드는 방식입니다.

3) placement strategy (배치 전략):  배치를 잘하는 방식을 사용하여 단편화의 발생 가능성을 최대한 줄이는 방식입니다. (best-fit, first-fit, worst-fit) 사실 시간이 지나면 어떤 방식을 쓰든 그게 그거인 경우가 대부분 입니다… 

4) paging 기법 사용 : 고정 길이 방식의 대표 유형 

  

Internal fragmentation의 해결 방법 

1)    Segmentation(세그멘테이션) : 가변 길이 방식의 대표 유형 

2)    메모리 풀 : 동적 할당의 방식 중 하나. 미리 필요한 만큼 할당 받아서 만들어 둔 다는 것이 동적 할당(즉흥적으로 만들어짐)과 차이점 입니다. 

 

반응형

'IT > CS 기초' 카테고리의 다른 글

[네트워크] telnet ssh ftp sftp 비교 및 간단 사용법  (0) 2021.05.17
운영체제의 종류와 설명  (0) 2020.07.06