이전까지의 메모리 관리에서는 하나의 프로그램 전체를 실제 메모리에 올리는 방식을 사용했으나, 가상 메모리를 사용한다면 당장 실행에 필요한 부분만 실제 메모리에 올려서 실행하게 됩니다.
Virtual Memory (가상 메모리)
정의
- 프로그램 전체가 아닌 필요한 일부분만 실제 메모리에 올리는 기법
장점
- 프로그램은 더 이상 Physical Memory의 여유 공간이 얼마나 되는지에 대해서 시작도 하기 전에 고민할 필요가 없습니다.
- 프로그램이 전체 다 올라가지 않기 때문에, 더 많은 프로그램들을 동시에 메모리에 올려 작업을 수행할 수 있습니다.
- 한 번에 올리는 소스 코드의 양이 적기 때문에 Disk와 Memory간 I/O 작업 속도가 빨라집니다.
구현 방식
- Demand Paging
- Demand Segmentation
Demand Paging
Valid-Invalid Bit
- Valid-Invalid Bit를 사용하기 위해, 하드웨어적인 지원을 필요로 합니다.
- 메모리에 올리려는 것이 현재 메모리에 존재하는지, 아니면 Disk에 존재하는지를 알아야 합니다.
(이전 Valid-Invalid Bit의 사용법에 약간의 정보가 더 추가된 것 입니다.)
Case 1) Bit = Valid
- Bit가 Valid라는 뜻은 두 가지 의미를 내포합니다.
- 해당 Page Table의 인덱스는 접근이 가능하다는 뜻
- 해당 부분은 실제 메모리에 올라와 있다는 뜻
Case 2) Bit = Invalid
- Bit가 Invalid라는 뜻은 두 가지 의미를 내포합니다.
- 해당 Page Table의 인덱스는 접근이 불가능하다는 뜻
- 해당 부분은 현재 Disk에 존재한다는 뜻 (실제 메모리에 올라와 있지 않다는 뜻)
Page Fault
정의
- 지금 실행시켜야 할 Page가 실제 메모리에 올라와 있지 않는 것을 말합니다.
Page Fault Handling 과정
- Page Fault발생
- CPU는 운영체제에게 알리고, 운영체제는 잠시 동안 CPU 작업을 멈춥니다.
- Disk에서 해당 부분을 찾습니다.
- 3번에서 찾은 부분을 실제 메모리의 비어있는 Frame (free frame)에 올립니다.
- Page Table의 해당 부분의 Bit를 Valid로 갱신합니다.
- Page Fault를 일으켰던 명령어를 다시 실행하여 작업을 재개합니다.
Free Frame List
- Page Fault 발생 시, 운영체제는 Disk로부터 필요 Page를 메모리의 Free Frame에 전달해야 합니다.
- 운영체제는 Free Frame을 쉽게 찾기 위해서, Free Frame List를 유지합니다.
- 운영체제는 Zero-Fill-On-Demand기술을 활용하여 Free Frame들을 할당합니다.
- 할당되기 전에, Frame들의 content는 0으로 채워집니다.
- System 시작 시, 모든 이용가능한 메모리들은 Free Frame List에 채워집니다.
Page Replacement
정의
- 실제 메모리에 Free Frame이 존재하지 않을 시 해결책
- 실제 메모리에 있는 Frame을 지금 당장 실행해야 할 Page에게 넘겨줄 Victim Frame을 찾는 과정입니다.
Victim Frame : 자주 사용되지 않는 Frame
특징
- Page Fault를 적게 발생할수록 좋은 알고리즘 입니다.
- Modify (Dirty) Bit : Page Replacement 알고리즘이 Victim Frame을 찾는 것을 도와줄 수 있는 것
- Page Table에 Dirty Bit Column이 추가된다.
- 해당 Page의 content가 실제 메모리에 load되었고 수정 되었는지 표시한다.
Modify (Dirty) Bit 작동 원리
- Page의 content가 수정되었다면, Disk와의 동기화를 위해 Swap-Out 될 필요가 있습니다.
- 이러한 Swap-In / Swap-Out 은 많은 비용을 발생시킵니다.
- Victim Frame을 찾을 때는 Modify Bit가 0인 Frame을 우선적으로 찾게 됩니다.
- 즉, Swap-Out될 필요가 없는 (= 수정이 되지 않았던) Frame
- Swap-Out될 필요가 없으니, 그 자리에 덮어 씌어버리면 되기 때문입니다.
Page Replacement 과정
- 원하는 Page를 Disk에서 찾는다.
- Free Frame을 찾는다.
a) Free Frame을 찾았다면 사용하면 된다.
b) Free Frame이 존재하지 않는다면, Page Replacement 알고리즘을 통해 Victim Frame을 찾는다.
- Disk에서 가져온 Page를 2번 과정에서 찾은 Frame에 넣고, Frame Table과 Page Table을 갱신합니다.
- 프로세스를 재실행 합니다.
다음장에서는 Page Replacement알고리즘에 관하여 다룰 예정입니다.