운영체제 - 메모리관리(3)

2020-10-14

OS를 공부하면서 정리를 한 내용들 입니다.

물리적인 메모리의 관리 기법에 대한 포스팅입니다.


메모리는 일반적으로 두 영역으로 나뉘어 사용됩니다.

하나는 OS 상주 영역, 다른 하나는 사용자 프로세스 영역 입니다.

OS 상주 영역

  • interrupt vector와 함께 낮은 주소 영역에는 운영체제 커널이 항상 상주하게 됩니다.

사용자 프로세스 영역

  • OS 상주 영역 이외의 영역으로 높은 주소 영역을 사용합니다.

사용자 프로세스 영역의 할당 방법(관리 방법)

Contiguous allocation(연속 할당)

  • 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 방식

    1. Fixed partition allocation : 물리적 메모리를 고정 크기의 분할로 나누어 두는 방식
    2. Variable partition allocation : 프로그램 실행, 종료 순서에 따라 분할을 관리하는 방식

Fixed partition allocation(고정 분할 방식)

출처

물리 메모리를 주어진 개수만큼의 영구적 분할로 나누어 각 분할에 하나의 프로세스를 적재해 실행시킬 수 있게 합니다.

하나의 분할에는 하나의 프로그램만을 적재할 수 있습니다.

  • 동시에 메모리에 적재할 수 있는 프로그램의 수가 고정되어 있다
  • 수행 가능한 프로그램의 최대 크기가 제한된다.

외부 단편화 / 내부 단편화가 발생할 수 있습니다.

외부 단편화 : 프로그램의 크기보다 파티션의 크기가 작은 경우 적재하지 못해서 발생하는 메모리 공간

내부 단편화 : 프로그램의 크기보다 파티션의 크기가 큰 경우 파티션에 적재하고 남는 메모리 공간

Variable partition allocation(가변 분할 방식)

출처

메모리에 적재되는 프로그램의 크기에 따라 파티션의 크기와 개수가 동적으로 변하는 방식입니다.

내부 단편화는 발생하지 않으나, 외부 단편화는 발생할 수 있습니다.

동적 메모리 할당 문제

물리적 메모리 내의 가용 공간 중 어떤 위치에 적재할 것인가? 프로세스의 주소 공간 전체를 담을 수 있는 가용 공간을 찾아야 합니다.

가용공간(Hole) 이란?

  • 말 그대로 사용할 수 있는 메모리 공간으로 다양한 크기의 Hole들이 여러 곳에 흩어져 있음
  • 프로세스가 도착하면 수용간으한 Hole을 할당
  • 운영체제는 다음의 정보를 유지 (a : 할당공간, b : 가용 공간(hole))

해결 방법

최초 적합 방법 (first-fit)

프로세스의 크기보다 큰 가용 공간 중 가장 먼저 찾아지는 곳에 할당하는 방법

  • 시간적 측면에서 효율적

최적 적합 방법 (best-fit)

프로세스의 크기보다 큰 가용 공간 중 가장 작은 가용 공간을 찾아 할당하는 방법

  • 시간적 오버헤드 발생
  • 다수의 매우 작은 가용 공간이 생성됨
  • 공간적 측면에서 효율적

최악 적합 방법 (worst-fit)

가용 공간 중 가장 큰 곳에 프로세스를 할당하는 방법

  • 시간적 오버헤드
  • 큰 가용 공간의 소비
  • 상대적으로 아주 큰 가용 공간이 생성됨.

Compaction

  • external fragmentation 문제를 해결하는 한가지 방법
  • 사용 중인 메모리 영역을 한군데로 몰고 가용공간들을 다른 한 곳으로 몰아 큰 block을 만드는 것
  • 매우 비용이 많이 드는 방법
  • 최소한의 메모리 이동으로 compaction하는 방법(매우 복잡한 방법)
  • Compaction은 프로세스의 주소가 실행 시간에 동적으로 재배치 가능한 경우에만 수행 될 수 있습니다.

-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의