7-3.[os] 단일 프로그래밍 환경에서의 메모리 할당

메모리 오버레이

현재: 메모리의 가격이 부담스럽지 않고 용량도 넉넉함

과거: 메모리가 값비싼 저장장치라 개인용 컴퓨터에 큰 메모리를 사용 못함

  • 작은 메모리로 큰 프로그램을 어떻게 작동할 것인가

메모리 오버레이(memory overlay):

  • 프로그램의 크기가 실제 메모리(물리 메모리)보다 클 때 전체 프로그램을 메모리에 가져오는 대신 적당한 크기로 잘라서 가져오는 기법

  • overlay: 겹겹이 쌓다’,‘중첩시키다'

  • 하나의 메모리에 여러 프로그램을 겹겹이 쌓아놓고 실행
  • 프로그램을 몇 개의 모듈로 나누고 필요할 때마다 모듈을 메모리에 가져와 사용
  • 필요한 모듈만 메모리에 올라와 실행
  • 프로그램 전체를 메모리에 올려놓고 실행하는 것보단 속도가 느림

image.png

메모리 오버레이의 중요한 의미:

  • 가상 메모리 시스템: 한정된 메모리에서 메모리보다 큰 프로그램의 실행 가능

  • 프로그램 전체가 아니라 일부만 메모리에 올라와도 실행 가능

    • 메모리를 여러 조각으로 나누어 여러 프로세스에 할당할 수 있다

스왑

  • 메모리 오버레이 이용 -> 메모리보다 큰 프로그램 실행 가능
  • 다시 사용할지도 모르고 아직 작업이 끝나지 않았기 때문에 저장장치의 별도 공간에 보관

  • 스왑 영역(swap area):

    • 메모리가 모자라서 쫓겨난 프로세스를 모아둔 저장장치의 공간
    • 메모리 관리자가 관리
    • (원래 저장장치 관리자가 관리하지만, 저장장치는 장소만 빌려주고 메모리 관리자가 관리)
  • 스왑인(swap in): 스왑 영역 -> 메모리로 데이터를 가져오는 작업

  • 스왑아웃(swap out): 메모리 -> 스왑 영역으로 데이터를 내보내는 작업

image.png

전체 메모리 크기 인식: 실제 메모리의 크기+스왑 영역의 크기

  • 실제 메모리 크기 1GB + 스왑의 크기 3GB = 사용자가 인식하는 메모리 4GB

  • 실제 메모리가 4GB인 컴퓨터보다 속도가 느리겠지만, 스왑을 사용하면 실제 메모리의 모자란 부분을 보충

  • 다시 시작: 모든 프로세스를 중지시키고 컴퓨터를 새로 시작

  • 최대 절전 모드:
    • 컴퓨터를 잠시 꼈다가 현재 작업 상태로 복귀
    • CPU와 메모리의 전력 공급을 끊기 때문에 메모리에 있는 내용이 모두 사라짐
    • 원래 작업으로 복귀시키려면 현재 메모리에 있는 데이터를 스왑 영역으로 옮김

Did you find this article valuable?

Support Software Engineer at Your Service by becoming a sponsor. Any amount is appreciated!