OS 14 - 가상 메모리

14-1 연속 메모리 할당

스와핑

  • 스와핑 : 메모리에 적재된 프로세스들 중에서 현재 실행되지 않는 프로세스를 임시로 보조기억장치 일부 영역으로 쫓아내고, 생긴 메모리상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식
  • 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일부 영역
  • 스왑 아웃 : 메모리에서 스왑 영역으로 옮겨지는 것
  • 스왑 인 : 스왑 영역에 있던 프로세스가 메모리로 옮겨오는 것

메모리 할당

메모리 내에 빈 공간이 여러 개 있다면 프로세스는 어디에 배치해야 할까?

  • 최초 적합
    • 운영체제가 메모리 내 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치
    • 검색을 최소화하여 빠른 할당이 가능
  • 최적 적합
    • 운영체제가 빈 공간을 모두 검색해 본 후, 가장 작은 공간에 프로세스를 배치
  • 최악 적합
    • 운영체제가 빈 공간을 모두 검색해 본 후, 가장 큰 공간에 프로세스를 배치

외부 단편화

프로세스를 메모리에 연속적으로 배치하는 연속 메모리 할당외부 단편화 라는 문제를 내포하고 있다.

외부 단편화란, 프로세스가 실행되고 종료됨에 따라 메모리 사이 사이에 빈 공간이 생기는데 해당 공간은 큰 프로세스를 적재하기 어려운 상황을 초래하고 결국 메모리 낭비로 이어지는 것이다.

외부 단편화 해결 방법은 압축 이다.

압축이란, 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식이다. 압축의 단점은

  • 작은 빈 공간들을 하나로 모으는 동안 시스템은 하던 일을 중지해야 됨
  • 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기