CS

메모리 단편화

남생이야 2024. 6. 27. 03:42

 

 

메모리 단편화

 메모리 단편화는 RAM과 같은 메인 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태를 말한다. 메모리 단편화는 내부 단편화와 외부 단편화로 구분할 수 있다.

 

내부  단편화 

  메모리를 할당할 때, 프로세스가 필요로 하는 크기보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황을 말한다. 

 운영체제가 메모리 관리를 위한 페이징 기법을 사용할 때 발생할 수 있다. 

 

외부 단편화

  잦은 할당 및 해제로 여유 공간이 여러 크기로 나뉘어져 공간은 충분하지만 실제로는 할당할 수 없는 상태를 말한다. 

 

 

메모리 단편화 해결 방법

 1) 페이징 기법

   보조 기억 장치를 이용하여 가상 메모리를 같은 크기의 블록으로 나눈 것을 페이지라고 하고 RAM을 페이지와 같은 크기로 나눈 것을 프레임이라고 할 때, 사용하지 않은 프레임을 페이지에 옮기고 메모리를 페이지 단위로 프레임에 옮기는 기법이다. 연속적인 공간도 활용할 수 있기 때문에 외부 단편화는 해결되지만 내부 단편화는 해결되지않는다.

 

 2) 세그멘테이션

  가상메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 분할해서 메모리를 할당하여 실제 주소로 변환하는 방법이다. 

세그먼트는 연속적인 공간에 저장된다. 메모리에 적재될 때 빈 공간을 찾아 할당한다..

 

3) 메모리 풀 

  필요한 메모리 공간을 사용자가 직접 지정하여 미리 할당받아 놓고 필요할 때마다 사용하고 반납하는 기법이다. 미리 할당받고 사용완료시 해제하기 때문에 외부 단편화가 발생하지 않으며 동시에 미리 할당을 하기 때문에 내부 단편화 또한 발생하지 않는다.