- Prologue
- What is Swap Space
- Implementation: Swap Out
- Implementation: Present Bit
- Implementation: Swap In
- Page Fault Control Flow
- Beyond Physical Memory: Mechanisms
- Reference
이 글의 사진과 내용은 공룡책 과 컴퓨터학부 수업인 운영체제 강의자료를 기반으로 작성했습니다.
Prologue
-
[1] 모든 Page가 Physical memory에 매핑된다.
- 하지만, 지역성(locality)으로 한 번에 사용되는 page 수가 많지 않기 때문에, 메모리가 낭비되는 문제점이 있다.
-
[2] Physical memory의 크기는 제한적이다.
- 그렇기 때문에 현재 사용하는 page만 매핑하는 것이 더 효율적일 것이다.
-
Key idea
: 현재 사용하지 않는 page들을 Disk에 저장하는 것이다.
What is Swap Space
-
Swap Space
이란 Physical memory에서 매핑되지 않는 page들을 위한 Disk 공간이다. -
Swap Space에서는 두 가지 작업이 제공된다.
-
Swap out
이란 pages을 Physical memory에서 Swap space로 이동하는 것이다. -
Swqp in
이란 pages을 Swap space에서 Physical memory로 이동하는 것이다.
-
-
Swapping
이란 실제 메모리(주기억장치)에서 사용하지 않는 page를 Disk(보조기억장치)에 잠시 저장해두었다가 필요할 때 꺼내서 사용하는 기법이다.
When pages are swapped out?
-
다음 예시를 통해 언제 page가 swap out 하는지를 알아보자.
-
예) free memory < low watermark 일 때, 하나 이상의 pages은
free memory = high watermark
일 때까지 swap out 된다.- 사전 정의) Low watermark = 2, High watermark = 3
-
왼쪽 그림은 Free memory = 1이므로 Low watermark(=2) 보다 작기 때문에, pages을 swap out 된다.
-
pages을 swap out 하면서 오른쪽 그림과 같이 Free memory = 3일 경우 High watermark(=3)와 같기 때문에 swap out을 멈춘다.
Implementation: Swap Out
- free memory < low watermark인 일때, free memory > high watermark 까지 Swap daemon process는 하나 이상의 page를 swap out 하는 것을 다음 그림을 통해 확인할 수 있다.
- Low watermark 의 경계선보다 내려가면 Swapping을 시작해서 High watermark 경계선까지 swap out 한다.
What if the page to reference is not in physical memory?
-
만약 참조할 Page가 physical memory에서 존재하지 않는다면, Page fault가 발생한다.
-
예) Page 6 이 참조되었을 경우
- Page 6이 실제 메모리에 없을 경우 Page fault가 발생하여 swap in 하게 된다.
Implementation: Present Bit
-
각각의 page table entry는 present bit(P)를 가진다.
Present bit
이란 해당 page가 메모리에 존재하는지 swap 공간에 존재하는지 알려주는 정보를 기록하는 공간을 의미한다. -
Swap 공간이 존재하는 시스템이라면, page가 어디에 존재하는 지 알기 위해서는 present bit을 사용해야 한다.
-
Present bit = 1
: 해당 page가 physical memory에 존재한다는 것을 의미한다. -
Present bit = 0
: 해당 page가 swap space에 존재한다는 것을 의미한다.
-
Implementation: Swap In
만약 Page fault가 발생한다면, OS의 page fault handler가 해당 page를 swap in 한다.
해당 I/O 진행하는 동안, 해당 process는 차단 상태(blocked state)가 된다. (process is blocked -> page is swapped in)
위의 과정을 다음 Swap In
예시를 통해 제대로 짚고 넘어가자.
예) Process는 page 4를 참조하는 상황
그림 1) Page fault 발생 하기 전
그림 2) Page fault 발생하였을 때
그림 3) Page fault handler가 해당 page를 swap in 한다.
Page fault가 발생하면, 현재 실행중인 것을 멈추고 OS가 CPU 권한을 갖는다.
Disk I/O 진행하는 동안, 해당 process는 차단 상태(blocked state)가 된다. (swap in 될 때까지)
Page가 swap in 되면 PTE를 업데이트 한다. (OS는 disk 주소에 대한 정보를 page의 PTE에서 알아낼 수 있다. 이렇게 알아낸 주소로 page를 가져오면 메모리에 할당하고 page table의 present bit을 업데이트하여 page가 메모리에 존재한다는 것을 기억한다)
그림 4) PTE 업데이트가 된 이후에는 page 4를 참조한 process는 실제 메모리에 page 정보가 존재하기 때문에, page fault가 발생하지 않는다.
Page Fault Control Flow
- 다음은 page가 physical memory(실제 메모리)에 존재하지 않을 경우 발생하는 Page fault의 처리 과정을 예시를 통해 알아보자.
[1 ~ 2] : CPU가 데이터를 요청했는데 TLB에 없고(=TLB miss) page table에도 없는 경우(Present bit = 0), page fault가 발생한다.
[3] : OS가 권한을 가지고 disk에 접근하여 해당 page가 존재하는지 확인한다. (When the OS receives a page fault, it looks in the PTE and issues the request to disk)
[3-1] Disk에서 page에 대한 정보를 가지고 올 때 즉 disk I/O가 진행 중인 동안에는 프로세스는 잠시 blocked 상태가 된다.
[3-2] 그리고 여기서 disk I/O가 진행 중인 동안에는 해당 프로세스 외에 다른 프로세스를 실행하고 있으면 안된다.
[4 ~ 5] : Disk에서 page를 가져온 뒤 실제 메모리에 할당하고 page table의 present bit을 업데이트하여(0 -> 1) page가 메모리에 존재한다는 것을 기억한다. (swap in)
추가) PTE를 업데이트(present bit = 1)하면 해당 page가 이제 실제 메모리에 있기 때문에, page fault가 발생하지 않는다.
[6] : 재실행하여 CPU가 page table에 있는 데이터를 받아온다.
Beyond Physical Memory: Mechanisms
-
과거에는 메모리의 크기보다 큰 프로세스를 실행할 경우 Memory hierarchy(메모리 계층)에 추가적인 계층이 필요하다.
- OS는 메모리 계층에서 현재 잘 사용하지 않는 pages를 보관할 장소가 필요해서
Disk
라는 곳에 저장한다.
- OS는 메모리 계층에서 현재 잘 사용하지 않는 pages를 보관할 장소가 필요해서
-
현대 시스템에서는 이러한 역할을 Hard disk drive 가 수행해준다.