Machineboy空

가상 메모리 ① 연속 메모리 할당 본문

Computer/CS

가상 메모리 ① 연속 메모리 할당

안녕도라 2024. 1. 18. 10:54

 

가장 일반적인 메모리 관리 방식 : 연속 메모리 할당

연속메모리 할당에서 프로세스 배치 방식

연속 메모리 할당의 부작용


운영체제의 메모리 관리 기능 중 스와핑(Swap)

  • 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역(swap 영역)으로 쫓아내고 그렇게 생긴 빈 공간에 새 프로세스를 적재
  • 효율적으로 메모리 관리
    • swap out: 메모리에서 스왑영역으로 쫓아내는 것
    • swap in: 스왑 영역에서 메모리로 다시 적재
  • 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 일 때도 프로세스를 실행할 수 있다.


연속 메모리 할당

 

프로세스는 메모리의 빈 공간에 할당되어야 한다. 빈 공간이 여러 개 있다면?

  • 연속 메모리 할당의 방법: 어떤 빈 공간에 어떻게 할당할지
    • 최초 적합(first-fit) 빈공간 A
      • 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식
      • 장점
        • 검색 최소화
        • 빠른 할당
    • 최적 적합(best-fit) 빈공간 C
      • 운영체제가 빈 공간을 모두 검색해본 뒤 적재 가능한 가장 작은 공간에 할당
    • 최악 적합(worts-fit) 빈공간B
      • 운영체제가 빈 공간을 모두 검색해본 뒤 적재 가능한 가장 큰 공간에 할당

최초 적합,최적적합,최악적합


외부 단편화(external fragmentation) 

사실 프로세스를 연속적으로 메모리에 할당하는 방식은 메모리를 효율적으로 사용하는 방법이 아니다.

외부 단편화 잠재적 문제가 발생하기 때문

 

예시 상황

  • 사용자 영역이 200MB일 때 아래 4가지 프로세스를 차례로 적재해야 한다면?
    • 50MB인 프로세스 A
    • 30MB인 프로세스 B
    • 100MB인 프로세스 C
    • 20MB인 프로세스 D
     
  • 모두 적재 후 B, D가 실행이 끝났다. 빈 공간의 총 합은? B+D 50MB
    • 하지만 하나의 크기가 50MB인 프로세스는 적재하지 못함
  • 외부 단편화 (External Fragmentation)
    • 프로세스들이 실행되고 종료되길 반복하며 메모리 사이 사이에 빈 공간이 발생한다.
    • 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상

즉 연속된 메모리 공간 할당은 외부 단편화라른 부작용을 초래한다.

 


외부 단편화 해결 방법 

  • 메모리 압축(compaction)
    • 여기저기 흩어져 있는 빈 공간들을 하나로 모으는 방식
    • 프로세스를 적당히 재배치시켜 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법
    • 부작용
      • 현재 실행되는 프로세스를 재배치하거나, 빈 공간을 모을 때 오버헤드가 발생
     

메모리 압축(compaction)

  • 가상 메모리 기법 , 페이징
    • 현대 운영체제가 선택하는 가장 대중적인 메모리 기법. 다음 장에