본문 바로가기
CS/OS

[운영체제] 8. 연속 메모리 할당

by DenverAlmighty 2024. 12. 13.

 

1. 메모리 단편화 Memory Fragmentation

(1) 메모리 단편화란?

분할된 주기억장치에 프로그램을 할당하고 반납하는 과정을 반납하면서 사용되지 않고 남는 기억장치의 빈 공간 조각을 말한다.

  • 내부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남아있는 빈 공간
  • 외부 단편화 :  분할된 영역이 할당된 프로그램의 크기보다 작기 때문에 프로그램이 할당될 수 없어 사용되지 않고 빈 공간으로 남아 있는 불할된 전체 영역 

 

 

2. 연속 메모리 할당

(1) 연속 메모리 할당 방식

  • First-fit (최초 적합) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치
  • Best-fit (최적 적합) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치
  • Worst-fit (최악 적합) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치

(2) 예시

Hole: 100 /500 / 600 / 300 / 200 KB

프로세스: 212 417 112 426 KB

연속 메모리 할당 예시

First, Worst Fit은 426KB 짜리 프로세스를 넣지 못한다.

 

 

(2) 할당 방식 성능 비교

  • 속도 : first-fit 가 빠르다
  • 메모리 이용률 : first-fit, best-fit 가 좋다

Fist, Best Fit을 사용해도 외부 단편화가 없어지지는 않는다.

외부 단편화로 인해 1/3 만큼은 사용 불가하다.

 

(3) 단편화 해결 방법

  • 압축 방법 Compaction : 분산되어있는 Hole을 결합하여 하나의 큰 가용 공간을 만드는 작업이다. 이 작업에 대해 최적 알고리즘은 없고, 부담이 크다.
  • 페이징: 외부 단편화를 해결할 수 있다. 프로세스를 나누어 주기억장치에 할당하고, 주소를 변환하는 방법이다. MMU 내의 재배치 레지스터 값을 바꿈으로서 CPU 는 프로세스가 연속된 메모리 공간에 위치한다고 착각하게된다. MMU는 페이지 테이블이 된다.
    • 페이지 : 프로세스를 나눈 조각
    • 프레임 : 메모리를 나눈 조각