본문

메모리 단편화

반응형

# 메모리 단편화


프로그램을 할당하고 반납하는 과정이 반복되면서 사용하지 않고 남는 빈 공간 조각이 생기는 것. 이 공간들이 모여 큰 공간을 차지하게 되어 결국 메모리가 충분한데도 메모리 할당을 하지 못하는 현상이 발생하게 된다. 이를 "메모리 단편화"라고 한다.

=> 기억장치의 사용가능한 공간을 줄이거나, 읽기와 쓰기의 수행속도를 늦추는 문제점을 야기한다.



(1) 내부 단편화

: 메모리 처리 단위(분할된 영역)가 메모리를 요청한 프로그램 크기보다 커서

 할당 요청한 메모리보다 더 많은 메모리가 할당되어 메모리가 낭비되는 현상.


(2) 외부 단편화

메모리 처리 단위(분할된 영역)가 메모리를 요청한 프로그램 크기보다 작기 때문에

 프로그램이 할당될 수 없어 사용되지 않고, 빈 공간으로 남아있는 영역이 생기는 현상

: 메모리가 띄엄띄엄 할당되어 있어 요청한 메모리를 연속적으로 할당해줄 수 없는 현상



# 단편화 해결 방법

단편화된 공간을 모아서 사용할 수 있는 공간으로 만드는 기법


(1) 통합(Coalescing) 기법

: 인접해 있는 단편화된 공간을 하나로 통합하는 기법


(2) 압축(Compaction) 기법

: 떨어져있는 여러 개의 낭비 공간을 모아 하나의 큰 기억 공간으로 만드는 기법으로 할당된 영역을 한쪽으로 밀어버린다. (디스트조각모음)


(3) 메모리 풀링

: 할당되는 개체와 같은 크기의 여유공간의 리스트를 만들어두고 할당과 해제를 이 리스트에서 처리하는 방식.

 할당하는 메모리 블록이 개체 크기와 딱 맞기 때문에 내부, 외부 단편화를 걱정할 필요 없다.

 다만 다양한 크기의 풀링을 지원하는 것은 구현하는 비용이 높기때문에 애플리케이션 내에서 빈번하게 사용하는 개체에 한해서

 간단하게 구현하는  편이 일반적이다


반응형

공유

댓글