[OS]메모리 단편화=메모리 낭비

Hyenna·2023년 4월 27일
0

OS

목록 보기
3/9
post-thumbnail

📩메모리단편화(memory fragmentation)란?

동적메모리할당(dynamic memory allocation)이 반복적으로 발생하여 메모리영역이 작은 여러 조각으로 나뉘어져서, 메모리 공간이 부족해지는 현상

1. 외부단편화(external fragmentation)

  • 메모리 블록들 사이의 빈 공간(남은공간)이 존재하나, 할당에 활용할 수 없는 문제

2. 내부단편화(internal fragmentation)

  • 할당된 메모리 블록 내에서 사용하지 않는 메모리 공간이 존재하는 현상
  • 할당된 메모리 공간이 실제로 필요한 메모리보다 큰 경우 발생

▶ 메모리 관리에 대한 효율성을 저하시킨다.


✅단편화 해결 방법

1. 압축(Compaction)

  • 메모리 공간들을 재배치 하여, 단편화로 인해 분산되어 있는 메모리공간들을 하나로 합치는 기법이다.

2. 통합(Coalescing)

  • 단편화로 인해 분산된 메모리공간들을 인접해 있는 것끼리 통합시켜 큰 메모리 공간으로 합치는 기법이다.

3. 페이징(Paging) - 가상 메모리 사용, 외부 단편화 해결

  • 사용하지 않는 프레임을 페이지에 옮기고(swap-out), 필요한 메모리를 페이지 단위로 프레임에 옮기는(swap-in) 기법
*페이지 : 보조기억장치를 이용한 가상 메모리(Virtual Memory)를 같은 크기의 블록으로 나눈 것
*프레임 : 주 기억장치를 페이지와 같은 크기로 나눈 것

4. 세그멘테이션(Segmentation) - 가상 메모리 사용, 내부 단편화 해결

  • 서로 다른 크기로 나누고 단위는 세그먼트(Segment)로 분할 및 할당
  • 메모리에 적재될 때 빈 공간을 찾아 할당하는 사용자 관점의 기법

5. 메모리 풀(Memory pool) - 내부 단편화, 외부 단편화 해결

  • 미리 할당받아서 메모리 풀을 만들어 놓고 필요할 때마다 사용하고 반납하는 것
  • 메모리 낭비량 < 쓰이지 않는 메모리 양 -> 사용하지 않아야한다.

0개의 댓글