운영체제 : 스와핑과 연속 메모리 할당 - 운영체제의 메모리 관리 기법 (1)

mmmYoung·2023년 5월 6일
0

운영체제

목록 보기
7/10
post-custom-banner

운영체제가 메모리를 관리하는 기법에 대해 알아보자.

스와핑

현재 사용되지 않는 프로세스들을 보조 기억장치의 일부 영역인 스왑 영역으로 쫒아내고, 그렇게 생긴 빈 공간에 새 프로세스를 적재하는 법.
지금 당장 사용하지 않는 프로세스들만을 메모리에 적재하는 방법이라 훨씬 더 효율적으로 관리할 수 있다.
쫒아내는 행위를 스왑 아웃, 들여보내는 행위를 스왑 인이라고 한다.

스와핑을 통해 실제 메모리의 크기가 프로세스들이 요구하는 메모리 크기보다 작아도, 프로세스들을 동시에 실행할 수 있다.

연속 메모리 할당


프로세스는 메모리의 빈 공간에 할당되어야 하는데, 만약 빈 공간이 여러 개 있다면 어디에 할당해야 할까?
연속적으로 메모리를 할당하는 세 가지 방식에 대해 알아보자.

최초 적합

  • 최조 적합 (first-fit)

  • 운영체제가 순서대로 메모리의 빈 공간을 찾고, 적재 가능한 공간을 발견하는 대로 그 공간에 프로세스를 배치한다.

  • 검색 최소화, 빠른 할당

최적 적합

  • 최적 적합 (best-fit)

  • 운영체제가 빈 공간을 모두 검색한 뒤 적재가 가능한 공간 중 가장 작은 공간에 프로세스를 배치한다.

최악 적합

  • 최악 적합(worst-fit)

  • 운영체제가 빈 공간을 모두 검색한 뒤 적재 가능한 공간 중 가장 큰 공간에 프로세스를 배치한다.

위에서 알아본 세 가지 방법은 언뜻 보면 효과적일 수 있으나, 이렇게 프로세스를 연속적으로 메모리에 할당하는 방식은 효율적이지 않다.

외부 단편화(external fragmentation)라는 문제가 발생하기 때문

연속 메모리 할당의 문제점 : 외부 단편화

다음 상황을 고려해보자.

사용자 영역이 200MB일때, 네 가지 프로세스들을 차례대로 적재해야 한다면?

  • 50MB인 프로세스 A
  • 30MB인 프로세스 B
  • 100MB인 프로세스 C
  • 20MB인 프로세스 D

우선 A~D를 순서대로 적재하였다고 생각해보자.

프로세스 B와 D가 실행이 끝나면, 메모리를 반환할테니 아래와 같을 것이다.

이때 남은 공간의 총량은?
당연히 50MB이다.

그렇다면 빈 공간에 50MB의 프로세스를 적재할 수 있는가?

불가능하다!

이러한 문제를 외부단편화라고 한다.

즉 프로세스들이 실행과 종료를 반복하면서 메모리 사이 사이에 빈 공간이 발생하는데, 외부 단편화는 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상을 말한다.

다른 예시를 보자.

이런 문제점을 해결할 수 있는 방법들도 있다.

외부 단편화 해결법 1 - 메모리 압축(compaction)

여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방법이다.
프로세스를 재배치하여 작은 빈 공간들을 모아서 하나의 큰 빈공간으로 만든다.

이 방식은 실행중인 공간을 재배치하는 과정에서 많은 오버헤드가 발생할 수 있다. 또 오버헤드를 최소화할 수 있는 재배치 방법이 명확하지 않다는 단점들이 있다.

외부 단편화 해결법 2 - 가상 메모리 기법, 페이징(paging)

현대에서 가장 대중적으로 쓰이는 기법이다.
다음 시간에 페이징에 대해 더 자세히 알아보자.

출처 한빛미디어 혼자 공부하는 컴퓨터 구조+운영체제
profile
안냐세여
post-custom-banner

0개의 댓글