728x90
메모리가 여러 조각으로 나누어져 할당할 수 있는 전체 용량이 충분함에도 불구하고 연속된 공간을 찾지 못해 메모리를 효율적으로 사용하지 못하는 현상
1. 외부 단편화 (External Fragmentation)
- 개념: 메모리의 여러 위치에 작은 빈 공간들이 분산되어 있는 상태로, 필요한 연속된 크기의 메모리 공간을 찾지 못해 메모리 할당이 불가능해지는 현상입니다.
- 예시: 10KB, 20KB, 5KB의 빈 공간이 여러 위치에 흩어져 있을 때, 30KB의 연속된 메모리를 요청하면 할당이 불가능합니다.
- 주로 발생하는 경우: 가변 크기 메모리 할당 방식에서 발생하며, 메모리 할당과 해제가 빈번하게 이루어질 때 빈 공간이 쪼개지며 나타납니다.
해결 방법
- 메모리 압축(Compaction): 메모리의 빈 공간을 한 곳으로 모아 연속된 큰 공간을 만듭니다. 하지만 메모리 압축은 많은 시간과 CPU 자원을 소모하므로 효율적이지 않을 수 있습니다.
- 페이징(Paging)과 세그멘테이션(Segmentation): 프로그램을 작은 단위로 나누어 물리 메모리의 비연속적인 공간에 저장하여 연속된 공간을 요구하지 않도록 합니다.
2. 내부 단편화 (Internal Fragmentation)
- 개념: 프로세스가 고정된 크기의 메모리 블록을 할당받았을 때, 필요보다 큰 메모리를 할당받아 남은 공간이 낭비되는 현상입니다.
- 예시: 프로세스가 18KB의 메모리를 요청했을 때, 시스템이 20KB 단위로 메모리를 할당하면 2KB가 남아 내부 단편화가 발생합니다.
- 주로 발생하는 경우: 고정 크기 메모리 할당 방식에서 발생하며, 메모리 블록 크기와 실제 사용 크기가 일치하지 않아 자원이 낭비될 수 있습니다.
해결 방법
- 가변 크기 메모리 할당: 고정 크기 대신 가변 크기의 메모리를 할당하여 프로세스가 실제로 필요로 하는 크기만큼 메모리를 할당합니다.
- 효율적인 메모리 할당 알고리즘: 예를 들어, 최적 적합(First Fit), 최소 적합(Best Fit), 최악 적합(Worst Fit) 등을 활용해 적합한 블록 크기로 메모리를 할당합니다.
메모리 단편화의 차이점 요약
구분외부 단편화 (External Fragmentation)내부 단편화 (Internal Fragmentation)
발생 원인 | 가변 크기 메모리 할당 시 연속된 공간이 부족할 때 발생 | 고정 크기 메모리 할당 시 프로세스가 남는 공간이 생길 때 |
해결 방법 | 메모리 압축, 페이징, 세그멘테이션 | 가변 크기 메모리 할당, 효율적 할당 알고리즘 |
주요 예시 | 여러 작은 빈 공간이 흩어져 있어 큰 메모리 할당이 불가능 | 고정 크기 블록 할당 시, 프로세스 크기보다 큰 공간 할당됨 |
결론
메모리 단편화는 시스템의 메모리 자원 낭비를 초래하여 성능 저하로 이어질 수 있습니다. 이를 방지하기 위해 메모리 관리 기법(페이징, 세그멘테이션)이나 효율적인 할당 알고리즘을 사용하여 메모리를 최대한 효율적으로 활용하는 것이 중요합니다.
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 가상 메모리(Virtual Memory) (0) | 2024.10.31 |
---|---|
[운영체제] IPC(Inter Process Communication) (0) | 2024.10.31 |
[운영체제] 페이지 교체 알고리즘 (0) | 2024.10.31 |
[운영체제] CPU 스케줄링 (0) | 2024.10.31 |
[운영체제] 교착상태(Deadlock, 데드락)의 정의, 발생 조건, 해결 방법 (0) | 2024.10.31 |