본문 바로가기
전공/운영체제

Ch07. 물리 메모리 관리_04)다중 프로그래밍 환경에서의 메모리 할당_1

by 임 낭 만 2023. 5. 19.

<쉽게 배우는 운영체제> 교재를 참고하였습니다.

메모리 분할 방식

이번에는 한 번에 여러 프로세스가 실행되는 구조의 메모리 문제

메모리 분할 방식 : 메모리를 어떤 크기로 나눌 것인지 메모리 배치 정책에 해당

메모리에 여러 개의 프로세스를 배치하는 방법

  • 가변 분할 방식 : 프로세스의 크기에 따라 메모리를 나누는 것
  • 고정 분할 방식 : 프로세스의 크기와 상관없이 메모리를 같은 크기로 나누는 것

식당 의자 비유

  • 가변 분할 방식 : 손님의 신체 크기에 맞게 의자를 준비하는 것
  • 고정 분할 방식 : 손님의 신체 크기와 상관없이 같은 크기의 의자를 준비하는 것

손님 자리 배치 비유

  • 가변 분할 방식 : 어디에 앉든 제약이 없기 때문에 손님들이 알아서 편한 자리에 앉음 (관리 복잡함, 사용자 용이)
  • 고정 분할 방식 : 의자를 4개씩 파티션으로 나누고 손님들의 자리를 파티션 단위로 배정(관리 용이). 함께 온 일행이 분산해서 앉는 것을 감수해야 함. (사용자 입장에서 불편). 식사 중 자리를 옮길 필요 없음 (관리 용이함)

  • [그림 7-23] (a)에서 B팀 3명이 식사를 마친 후 손님 4명이 온 경우
  • 4명이 함께 앉을 수 있는 빈자리가 없기 때문에 10 ~ 13번에 있는 C팀이 옆으로 이동해야 손님 4명이 앉을 수 있음

메모리 분할 방식의 구현

  • 가변 분할 방식
    • 프로세스의 크기에 맞게 메모리가 분할
    • 메모리의 영역의 크기가 각각 다름
    • 한 프로세스가 연속된 공간에 배치되기 때문에 연속 메모리 할당
  • 고정 분할 방식
    • 프로세스의 크기에 상관없이 메모리가 같은 크기로 나뉨
    • 큰 프로세스가 메모리에 올라오면 여러 조각으로 나누어 배치
    • 한 프로세스가 분산되어 배치되기 때문에 비연속 메모리 할당

메모리 분할 방식의 구현

  • [그림 7-24] (a)에서 프로세스 B와 D가 작업을 종료하면 18KB와 17KB의 빈 공간이 생김.
  • 이때 19KB 이상의 프로세스가 메모리에 올라오려고 한다면? 빈 공간이 분리되어 있기 때문에 올라올 수 없음
  • 따라서 빈 공간을 하나로 합쳐야 함. 이 과정에서 프로세스 C의 자리도 이동해야 함.
  • [그림 7-24] (b)에서 프로세스 B는 18KB, 프로세스 D는 17KB이므로 메모리의 한 조각인 20KB에 배치하면 공간이 남음

가변 분할 방식의 장단점

  • 장점 : 프로세스를 한 덩어리로 처리하여 하나의 프로세스를 연속된 공간에 배치
  • 단점 : 비어 있는 공간을 하나로 합쳐야 하며, 이 과정에서 다른 프로세스의 자리도 옮겨야 하므로 메모리 관리가 복잡함

고정 분할 방식의 장단점

  • 장점 : 메모리를 일정한 크기로 나누어 관리하기 때문에 메모리 관리가 수월 (가변 분할 방식의 메모리 통합같은 부가적인 작업을 할 필요가 없음)
  • 단점 : 쓸모없는 공간으로 인해 메모리 낭비가 발생할 수 있음.

가변 분할 방식의 메모리 관리

가변 분할 방식의 자리 배정 (일식집 예)

  • 가상 메모리 시스템에서는 가변 분할 방식을 세그먼테이션 기법이라 함
  • 프로세스 배치방법과 문제점을 학습함
  • 프로세스 배치와 외부 단편화 (예 : 일식집, 의자 = 메모리, 손님 = 프로세스)

  • [그림 7-26]은 A팀 3명과 D팀 1명이 식사를 마친 후, 1, 2, 3, 8, 16번 의자가 비어 있음.
  • 의자 5개가 비어 있지만 4개가 연속해서 비어 있는 상태가 아니기 때문에 H팀 4명에게 자리 배정 불가함
  • 이때 B팀과 C팀에게 오른쪽으로 한 자리씩 이동을 부탁하면 해결 가능하지만, 식사 도중 이동을 부탁하는 것은 어려운 일임
  • 또 다른 경우, 마지막에 대기중인 I팀 2명을 먼저 빈자리에 배정할 수도 있음. 그러나 H팀이 오랫동안 기다렸다면 양보하지 않을 가능성도 있음.
  • 양보해도 이런 방법은 아사 현상을 발생시킴. 인원이 많은 팀이 계속 자리를 배정받지 못하는 문제가 발생할 수 있으므로 의자가 비었다고 순서에 상관없이 아무 팀이나 자리를 배정하면 안 됨.
  • [그림 7-27]은 계속해서 B팀 2명과 F팀 1명이 식사를 마친 후 1~5번 의자가 빈 상태가 되어 H팀 4명이 자리를 배정받음
  • 결과적으로 5, 8, 13, 16번 자리가 있지만 I팀 2명은 계속 자리 배정을 받지 못함.
  • 그림과 같이 가변 분할 방식은 빈 영역이 있어도 서로 떨어져 있으면 프로세스를 배정하지 못하는 것이 문제임.
  • 때문에, 작은 조각들이 발생하는 현상을 단편화(fragmentation) 또는 조각화라고 함.

가변 분할 방식과 외부 단편화

  • 프로세스 A, B, C, D, E를 순서대로 배치했을 때 프로세스 B와 D가 종료되면 18KB와 17KB의 빈 공간이 생김
  • 이후 18KB보다 큰 프로세스가 들어오면 적당한 공간이 없어 메모리를 배정하지 못하는데, 가변 분할 방식에서 발생하는 이러한 작은 빈 공간을 외부 단편화(external fragmentation)라고 함

가변 분할 방식과 외부 단편화

외부 단편화 해결

  • 메모리 배치 방식 : 작은 조각이 발생하지 않도록 프로세스를 배치하는 것
  • 조각 모음 : 조각이 발생했을 때 작은 조각들을 모아서 하나의 큰 덩어리로 만드는 작업

메모리 배치 방식

  • 최초 배치first fit
    • 프로세스를 메모리의 빈 공간에 배치할 때 메모리에서 적재 가능한 공간을 순서대로 찾다가 첫 번째로 발견한 공간에 프로세스를 배치하는 방법
  • 최적 배치best fit
    • 메모리의 빈 공간을 모두 확인한 후 적당한 크기 가운데 가장 작은 공간에 프로세스를 배치하는 방법
  • 최악 배치worst fit
    • 빈 공간을 모두 확인한 후 가장 큰 공간에 프로세스를 배치하는 방법

메모리 배치 방식

메모리 배치 방식 비교

메모리 방치 방식의 비교

  • 최초 배치
    • 빈 공간을 찾아다닐 필요 없음
  • 최적 배치
    • 빈 공간을 모두 확인하는 부가적인 작업이 있지만 딱 맞는 공간을 찾을 경우 단편화가 일어나지 않음
    • 딱 맞는 공간이 없을 때는 아주 작은 조각을 만들어내는 단점이 있음
  • 최악 배치
    • 최적 배치와 반대로 접근함
    • 프로세스를 배치하고 남은 공간이 크기 때문에 쓸모가 있음
    • 빈 공간의 크기가 클 때는 효과적이지만 빈 공간의 크기가 점점 줄어들면 최적 배치처럼 작은 조각을 만들어 냄

조각 모음

  • 최초 배치, 최적 배치, 최악 배치 방식을 사용해도 단편화 현상이 발생함
  • 가변 분할 방식에는 작은 프로세스가 작업을 마치고 메모리에서 나가면 그 공간이 조각으로 남아 쓸모 없어질 가능성
  • 이미 배치된 프로세스를 옆으로 옮겨 빈 공간들을 하나의 큰 덩어리로 만드는 작업
  • 조각 모음 순서
    • ① 조각 모음을 하기 위해 이동할 프로세스의 동작을 멈춤
    • ② 프로세스를 적당한 위치로 이동 (프로세스가 원래의 위치에서 이동하기 때문에 프로세스의 상대 주소값을 바꿈)
    • ③ 작업을 다 마친 후 프로세스 다시 시작

조각 모음


고정 분할 방식의 메모리 관리

고정 분할 방식의 자리 배정 (일식집 예)

  • 가상 메모리 시스템에서는 고정 분할 방식을 페이징이라고 함
  • 프로세스 크기에 상관없이 메모리를 같은 그기로 나누기 때문에 관리가 용이함
  • 그러나 메모리의 여러 조각에 나뉘어 저장되는 것이 문제가 됨
  • 프로세스 배치와 내부 단편화

  • [그림 7-32]에서는 의자 2개씩 파티션으로 나눔. 각 팀은 하나 이상의 파티션에 앉는데 떨어져 앉을 수도 있음
  • 함께 온 일행이 아니면 같은 파티션에 앉을 수 없음
  • 다른 팀과 파티션을 공유하지 못하기 때문에 빈자리에 다른 팀이 앉을 수 없어 대기자가 8명이 됨
  • [그림 7-25]의 가변 분할 방식에서 대기자 6명과 비교해 고정 분할 방식이 비효율적인 것처럼 보임
  • 그런데 A팀 3명과 D팀 1명이 식사를 마치고 나갔을 때 가변 분할 방식에서는 대기자 6명이 모두 자리를 배정받지 못함
  • 이와 반대로, 고정 분할 방식에서는 3개의 파티션이 남아 G팀 2명과, H팀 4명이 자리 배정 받음
  • 이처럼 고정 분할 방식은 가변 분할보다 공간을 효율적으로 관리함
  • 고정 분할 방식은 조각 모음을 할 필요가 없어 관리가 원할하며 메모리 관리 시스템의 기본 방식으로 사용됨

고정 분할 방식의 프로세스 배치

  • 분할된 크기는 20KB이므로 40KB인 프로세스 A는 프로세스 A1과 A2로 나뉘어 메모리에 할당
  • 30KB인 프로세스 C는 프로세스 C1과 C2로 나뉘는데, 메모리에 남은 공간이 없으므로 프로세스 C2는 스왑 영역으로 옮겨짐

고정 분할 방식의 프로세스 배치

고정 분할 방식과 내부 단편화

  • 각 메모리 조각에 프로세스를 배치하고 공간이 남는 현상
  • 고정 분할 방식은 내부 단편화를 줄이기 위해 신중하게 메모리의 크기를 결정해서 나눠야 하지만 사용하는 프로세스의 크기가 제각각이기 때문에 메모리를 얼마로 나누느냐에 관한 정답은 없음

가변 분할 방식과 고정 분할 방식의 비교

가변 분할 방식과 고정 분할 방식의 비교

댓글