728x90
메모리 단편화는 메모리를 효율적으로 사용하지 못해 발생하는 현상으로, 내부 단편화와 외부 단편화로 나뉨
내부 단편화 (Internal Fragmentation)
내부 단편화는 메모리 할당 단위의 고정 크기로 인해 할당된 메모리 블록 내에서 남는 공간이 생기는 현상
예를 들어, 운영체제가 8KB 크기의 고정된 메모리 블록을 할당한다고 가정할 때, 어떤 프로그램이 6KB의 메모리가 필요하면 2KB의 메모리가 남게 됨
이 2KB의 공간은 다른 용도로 사용할 수 없으며, 결과적으로 메모리 공간이 낭비됨
이처럼 할당된 메모리 블록 내에서 남는 공간을 내부 단편화라 함
내부 단편화 해결 방법
- 가변 크기 블록 할당 (Variable-sized Partitioning)
- 고정된 크기의 메모리 블록 대신 가변 크기의 블록을 사용하여 필요한 만큼의 메모리를 할당
- 프로그램이 실제로 필요한 메모리 양에 맞춰 메모리를 할당할 수 있어 내부 단편화를 줄일 수 있음
- 슬랩 할당자 (Slab Allocator)
- 운영체제에서 특정 크기의 메모리 블록을 자주 사용하는 경우, 이러한 블록을 미리 준비해두는 방식으로 내부 단편화를 줄임
- 슬랩 할당자는 주로 커널에서 사용되며, 효율적인 메모리 사용을 보장함
외부 단편화 (External Fragmentation)
외부 단편화는 할당 가능한 메모리 공간이 비연속적으로 존재하여 총 여유 공간이 충분함에도 메모리를 할당하지 못하는 현상
다양한 크기의 메모리 블록이 할당되고 해제되면서, 메모리 공간에는 다양한 크기의 빈 블록이 흩어져 남게 됨
이로 인해, 충분한 전체 메모리 공간이 존재하더라도 연속된 메모리 블록이 없어 새로운 프로그램을 위해 메모리를 할당할 수 없는 상황이 발생할 수 있음
이러한 비연속적인 빈 공간을 외부 단편화라 함
외부 단편화 해결 방법
- 메모리 압축 (Memory Compaction)
- 외부 단편화를 줄이기 위해, 메모리의 사용 중인 블록을 하나로 모아 연속된 빈 공간을 확보하는 방법
- 메모리 이동이 필요하기 때문에 비용이 발생할 수 있지만, 큰 연속된 메모리 블록을 할당해야 할 때 유용함
- 가상 메모리 (Virtual Memory)
- 가상 메모리 기법을 사용하면 프로그램은 연속적인 메모리 공간에 접근하는 것처럼 보이지만, 실제로는 비연속적인 물리적 메모리 위치를 사용할 수 있음
- 이로 인해 외부 단편화 문제를 어느 정도 완화할 수 있음
- 최적 적합 할당 (Best Fit Allocation)
- 메모리 할당 시, 사용할 수 있는 빈 공간 중에서 가장 작은 빈 블록에 메모리를 할당하여 외부 단편화를 줄이려는 방법
- 이는 남은 작은 빈 공간을 최소화하는 데 도움이 됨
728x90
'Computer Science' 카테고리의 다른 글
CPU 명령어 인출과 실행 과정 (1) | 2024.08.21 |
---|---|
멀티태스킹과 프로세스 관리 (0) | 2024.08.14 |
운영체제의 역할과 필요성 (0) | 2024.08.08 |
정적 라이브러리와 동적 라이브러리 (3) | 2024.07.24 |
링커의 심벌해석 대상 (3) | 2024.07.24 |