메모리 단편화
사용 가능한 메모리 공간이 분산되어
프로세스가 필요한 메모리 공간을 할당받지 못하거나,
메모리 공간을 효율적으로 사용하지 못하는 상황
- 시스템의 전체적인 메모리 사용 효율성을 저하
- 메모리 할당 및 해제 알고리즘의 선택, 메모리 할당 정책 등에 영향
- 메모리 관리 기법을 통해 해결 ( 가상 메모리, 메모리풀 )
외부 단편화
메모리 공간들이 작은 조각으로 나뉘어 프로세스가 요구하는 큰 메모리 블록을 할당받지 못하는 상황
- 프로세스들이 메모리를 할당하고, 해제하는 과정에서 발생 가능
내부 단편화
할당된 메모리 블록의 실제 사용되지 않는 부분
- 메모리 할당이 고정된 크기로 이루어지는 경우에 발생
메모리 단편화 해결방법
[ 페이징, 세그멘테이션, 메모리 풀 ] >> 자세히 보기
페이징
가상 메모리 사용, 외부 단편화 해결, 내부 단편화 존재
- 가상 메모리를 같은 크기로 나눔 = Page
주 기억장치를 같은 크기로 나눔 = Frame
- 사용하지 않는 프레임을 페이지로 이동, 필요한 메모리 페이지 단위로 프레임에 옮김(Swapping)
세그멘테이션
가상 메모리 사용, 내부 단편화 해결, 외부 단편화 존재
- 페이징 기법과 유사
- 가상 메모리를 서로 다른 크기(Block)로 나눔 = Segment
메모리 풀
가상 메모리 사용, 단편화 문제 최소화
미리 고정된 크기의 메모리를 할당, 메모리 동적 할당을 가능하게 함
- 메모리 풀은 이미 할당된 메모리 블록을 관리하기 때문에, 할당 및 해제가 빠름
- 고정 크기의 메모리 블록을 사용하므로, 메모리 단편화가 발생할 가능성이 줄어듬
- 동적 메모리 할당은 메모리 블록의 크기를 관리하기 위한 추가적인 메타 데이터를 유지해야 하지만,
메모리 풀은 이미 고정 크기의 블록들을 관리하고 있어 메모리 할당 및 해제에 따른 오버헤드가 감소