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