devFancy BE Developer

21. Swapping: Mechanisms

2023-02-05
devfancy
OS

이 글의 사진과 내용은 공룡책 과 컴퓨터학부 수업인 운영체제 강의자료를 기반으로 작성했습니다.

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 라는 곳에 저장한다.
  • 현대 시스템에서는 이러한 역할을 Hard disk drive 가 수행해준다.

Reference


Comments

Index