Swapping: Mechanism
이전까지의 내용에서는 모든 address space가 물리적 메모리에 정확하게 들어맞는다고 가정하고 이론을 알아보았다. 그리고 모든 pages가 메모리에 위치해 있다고 알고 공부하였다.
하지만 크기가 큰 address space를 사용하기 위해서는 당장 필요하지 않은 address space들을 메모리에서 치울 필요가 있고, 이를 위해 hard disk drive에 이러한 역할을 맡긴다.
Swap Space
그래서 swap space가 필요하다.
swap space는 디스크에 존재하며 page를 메모리에서 swap space로 swap space에서 메모리로 옮겨주는 공간이다. 따라서 OS는 swap space를 page-sized-unit으로 관리해야 한다.
위의 그림을 보면 실행중인 Proc 0, 1, 2는 메모리에 위치해 있는 반면 Proc 3은 현재 메모리에서 동작하고 있는 작업이 하나도 없으므로 swap space에 모든 프로세스가 위치해 있다. 이를 통해 어떻게 실제 물리적 메모리가 자신의 크기보다 더 큰 것처럼 동작하는지를 알 수 있다.
Present Bit
page와 디스크간의 swap을 지원하기 위해서 추가적인 하드웨어가 필요하다.
따라서 하드웨어가 page table entry(PTE)를 봤을 때 현재 이 page가 메모리에 존재하는지 아닌지를 나타내기 위한 present bit를 알고 있어야 한다.
1 -> page가 메모리에 존재하고 있음
2 -> page가 메모리에는 없고, 디스크에 존재하고 있음
Page Fault
page fault란 물리적 메모리에 존재하는 않는 page에 접근하려는 행위이다.
따라서 OS는 page fault가 발생한다면 page를 다시 swap space에서 메모리로 옮겨주어야 한다.
OS는 곧 메모리로 가져올 page를 위한 새로운 공간을 마련하기 위해서 page out할 필요가 있다.
page out
기존에 사용중인 page를 swap space에 저장하고, 현재 page frame을 새로운 page에게 할당하는 것
page in
swap space에 있는 page를 다시 메모리로 불러들이는 것
그래서 실행 할 page를 선택하거나, 교체하는 프로세스를 replacement policy라고 부른다.
그렇다면 언제 replacement policy를 수행할까?
Lazy Approach
OS는 메모리가 완전히 다 찰때까지 기다린다. 그 후에 새로운 page를 위해서 repace를 수행한다.
하지만 이 방법은 너무 비 현실적이다.
Swap Daemon, Page Daemon
따라서 사전조치를 위해 메모리의 작은 부분을 항상 free로 유지하는 여러가지 이유가 있다.
high watermark, low watermark
만약 OS가 사용할 수 있는 page의 수가 low watermark보다 더 적다는 것을 알았을 때 swap daemon, page daemon이라고 불리는 background의 메모리 free thread가 동작한다. 그래서 swap daemon은 사용가능한 page의 수가 high watermark와 같아질 때 까지 page들을 정리한다.
Author And Source
이 문제에 관하여(Swapping: Mechanism), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kmin-283/Swapping-Mechanism저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)