7-3.[os] 단일 프로그래밍 환경에서의 메모리 할당
메모리 오버레이
현재: 메모리의 가격이 부담스럽지 않고 용량도 넉넉함
과거: 메모리가 값비싼 저장장치라 개인용 컴퓨터에 큰 메모리를 사용 못함
- 작은 메모리로 큰 프로그램을 어떻게 작동할 것인가
메모리 오버레이(memory overlay):
프로그램의 크기가 실제 메모리(물리 메모리)보다 클 때 전체 프로그램을 메모리에 가져오는 대신 적당한 크기로 잘라서 가져오는 기법
overlay: 겹겹이 쌓다’,‘중첩시키다'
- 하나의 메모리에 여러 프로그램을 겹겹이 쌓아놓고 실행
- 프로그램을 몇 개의 모듈로 나누고 필요할 때마다 모듈을 메모리에 가져와 사용
- 필요한 모듈만 메모리에 올라와 실행
- 프로그램 전체를 메모리에 올려놓고 실행하는 것보단 속도가 느림
메모리 오버레이의 중요한 의미:
가상 메모리 시스템: 한정된 메모리에서 메모리보다 큰 프로그램의 실행 가능
프로그램 전체가 아니라 일부만 메모리에 올라와도 실행 가능
- 메모리를 여러 조각으로 나누어 여러 프로세스에 할당할 수 있다
스왑
- 메모리 오버레이 이용 -> 메모리보다 큰 프로그램 실행 가능
다시 사용할지도 모르고 아직 작업이 끝나지 않았기 때문에 저장장치의 별도 공간에 보관
스왑 영역(swap area):
- 메모리가 모자라서 쫓겨난 프로세스를 모아둔 저장장치의 공간
- 메모리 관리자가 관리
- (원래 저장장치 관리자가 관리하지만, 저장장치는 장소만 빌려주고 메모리 관리자가 관리)
스왑인(swap in): 스왑 영역 -> 메모리로 데이터를 가져오는 작업
스왑아웃(swap out): 메모리 -> 스왑 영역으로 데이터를 내보내는 작업
전체 메모리 크기 인식: 실제 메모리의 크기+스왑 영역의 크기
실제 메모리 크기 1GB + 스왑의 크기 3GB = 사용자가 인식하는 메모리 4GB
실제 메모리가 4GB인 컴퓨터보다 속도가 느리겠지만, 스왑을 사용하면 실제 메모리의 모자란 부분을 보충
다시 시작: 모든 프로세스를 중지시키고 컴퓨터를 새로 시작
- 최대 절전 모드:
- 컴퓨터를 잠시 꼈다가 현재 작업 상태로 복귀
- CPU와 메모리의 전력 공급을 끊기 때문에 메모리에 있는 내용이 모두 사라짐
- 원래 작업으로 복귀시키려면 현재 메모리에 있는 데이터를 스왑 영역으로 옮김