[Operating System] 메모리 단편화 Memory Fragmentation

olwooz·2023년 1월 27일
0

Operating System

목록 보기
8/10

단편화

디스크에 존재하는 프로그램은 메모리에 올라오고 CPU를 할당받음으로써 실행됨
단편화 - 여러 프로세스들이 메모리에 올라가고 내려가면서 메모리에 빈 공간이 생기고 자료가 여러 조각으로 나뉘는 것 → 이런 현상이 많이 발생하면 실질적으로 사용할 수 없는 메모리 발생

내부 단편화 vs 외부 단편화

내부 단편화

프로그램 < 메모리

프로세스에 할당된 메모리 공간이 실제로 프로세스가 필요한 공간보다 많이 할당되었을 때 프로세스 내부에서 발생하는 단편화

외부 단편화

메모리 < 프로그램

메모리가 할당되고 해제되는 작업이 반복되면서 생기는 작은 메모리 영역이 새로운 프로세스가 필요로 하는 크기보다 작은 경우

해결 방법

1. 압축

  • 분산된 메모리 공간을 한 쪽으로 모음 (e.g. 디스크 조각 모음)

2. 통합

  • 단편화가 발생한 공간에서 인접한 다른 공간들을 통합시켜서 하나의 큰 공간을 만듦

3. 페이징

  • 프로그램을 페이지라는 단위의 크기로 나누고 실제 메모리 공간을 프레임이라는 단위로 나눈 후 MMU(Memory Management Unit)가 각 페이지의 논리적 주소를 프레임의 물리적 주소에 매핑함
    (a.k.a. 페이지 테이블)

4. 세그먼테이션

  • 가상 메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 분할해서 메모리를 할당해 실제 메모리 주소로 변환
  • 미리 분할할 수 없고 메모리에 적재될 때 빈 공간을 찾아 할당
  • 세그먼트 테이블 필요

0개의 댓글