CA / OS
[CA] 메모리 단편화
부레두
2024. 8. 6. 07:11
1. 개요
Fragmentation
기억 장치의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상
→ 프로그램 실행 시, 메모리 공간을 연속적인 형태로 할당하여 사용하는데, 할당과 해제를 반복해 메모리의 공간이 작은 조각으로 나뉘어지는 현상
1. 종류
- 내부 단편화
→ “프로세스가 필요양보다 더 큰 메모리를 할당해 사용하는 메모리 공간이 낭비되는 상황”
- 외부 단편화
→ 할당과 해제를 반복해 생기는 작은 비사용 메모리 생기고 그 “메모리들의 합이 필요 공간보다 크지만 실제 공간은 부족해 할당하지 못하는 상황”
2. 해결방법
페이징( Paging ) → 고정된 크기의 단위 분할
프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재하는 방식
→ 외부 단편화 해결, 내부 단편화 존재
→ 프로그램을 “페이지”라는 작은 단위로 나누고, 물리 메모리를 페이지와 동일한 크기의 “프레임”으로 나누는 기법
💡 페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록
프레임(Frame) : 실제 메모리를 일정한 크기로 나눈 블록
→ 각각의 단위를 메모리 공간에 배치
⇒ 프로세스의 논리주소 공간을 연속적이지 않게 배치
세그 멘테이션 ( Segmentation ) → 서로 다른 크기의 단위 분할
가상 메모리를 서로 크기가 다른 세그먼트(Segment) 단위로 분할해 할당
→ 내부 단편화 해결, 외부 단편화 존재
메모리 풀
필요한 메모리 공간을 미리 할당받아 필요할 때 마다 사용하고 반납 → 가상 메모리
내부, 외부 단편화 모두 발생하지 않으나 '메모리 누수'가 발생할 가능성이 있다.