내부 단편화, 외부 단편화
단편화 (fragmentation)
기억장치의 빈공간 또는 자료가 여러조각으로 나뉘는 현상
RAM에서 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태
내부 단편화
메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비 되는 현상
외부 단편화
메모리가 할당 및 해제 작업의 반복으로 작은 메모리가 중간중간에 존재하여 ‘총’ 메모리 공간은 충분하지만, 여유공간이 조각조각 나뉘어져
실제로 할당할수 없는 상황
문제 해결 방법
페이징 ( Paging ) 기법
외부 단편화 해결 가상 메모리 사용
보조기억장치의 블록을 페이지, RAM의 블록을 프레임이라고 칭함
사용하지 않는 프레임을 페이지에 올리고 필요한 메모리를 페이지 단위로 프레임에 옮기는 기법
세그멘테이션 ( Segmentation )
내부 단편화 해결 가상 메모리 사용
페이징 기법은 가상 메모리를 “페이지”라는 같은 크기로 분할했지만, 이와 반대로 서로 크기가 다른 논리적 단위인 세그먼트로 분할해서 메모리를 할당,
각 세그먼트는 연속적인 공간에 저장되어있고 크기가 다르기 때문에 미리 분할해 둘수없고 메모리에 적재될때 빈공간을 찾아 할당한다.
segment table이 필요함 ( 각 세그먼트의 항목별 시작 주소와 길이 정보 )
메모리 풀 ( Memory Pool )
외부 단편화 해결 내부 단편화 해결
필요한 메모리 공간을 사용자가 직접 지정하여 미리 할당받아 놓고 필요할 때마다 사용하고 반납하는 기법
외부단편화와, 내부단편화 둘다 해결가능하기때문에 언뜻보면 이것만 사용하면 될것같지만
메모리의 할당이 자주 이루어지지 않으면 오히려 낭비다.
미리 할당하기 때문에 메모리 누수가 있을수있다는 단점도 있다.
출처: https://knoc-story.tistory.com/8