CA / OS

[CA] 메모리 단편화

부레두 2024. 8. 6. 07:11

1. 개요

Fragmentation

기억 장치의 빈 공간 또는 자료가 여러 개의 조각으로 나뉘는 현상

→ 프로그램 실행 시, 메모리 공간을 연속적인 형태로 할당하여 사용하는데, 할당과 해제를 반복해 메모리의 공간이 작은 조각으로 나뉘어지는 현상

1. 종류

  • 내부 단편화

→ “프로세스가 필요양보다 더 큰 메모리를 할당해 사용하는 메모리 공간이 낭비되는 상황”

  • 외부 단편화

 

→ 할당과 해제를 반복해 생기는 작은 비사용 메모리 생기고 그 “메모리들의 합이 필요 공간보다 크지만 실제 공간은 부족해 할당하지 못하는 상황”


2. 해결방법

페이징( Paging ) → 고정된 크기의 단위 분할

프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재하는 방식

→ 외부 단편화 해결, 내부 단편화 존재

→ 프로그램을 “페이지”라는 작은 단위로 나누고, 물리 메모리를 페이지와 동일한 크기의 “프레임”으로 나누는 기법

💡 페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록
      프레임(Frame) : 실제 메모리를 일정한 크기로 나눈 블록

→ 각각의 단위를 메모리 공간에 배치

⇒ 프로세스의 논리주소 공간을 연속적이지 않게 배치

세그 멘테이션 ( Segmentation ) → 서로 다른 크기의 단위 분할

가상 메모리를 서로 크기가 다른 세그먼트(Segment) 단위로 분할해 할당

→ 내부 단편화 해결, 외부 단편화 존재

 

 

메모리 풀

필요한 메모리 공간을 미리 할당받아 필요할 때 마다 사용하고 반납 → 가상 메모리

 

내부, 외부 단편화 모두 발생하지 않으나 '메모리 누수'가 발생할 가능성이 있다.