출처: https://3months.tistory.com/307 [Deep Play]

3-2/운영체제

Swapping Mechanisms

코딩하는 랄뚜기 2021. 11. 8. 00:20

Os는 현재 크게 필요하지 않는 주소 공간을 버릴 필요가 있다.

현대 Os system에서는 아래의 규칙을 hard disk drive에 사용한다.


Swap Space

DRAM에 주소를 담을 공간이 부족하다면, SSD의 Swap Space에 page-sized unit 만큼 저장해 놓아야 하므로, OS는 swap space를 기억할 수 있어야 한다.

 

따라서 Present Bit를 사용해서 page가 physical memory에 있는지 disk에 있는지 확인한다.

Meaning of present bit

Page fault

  • physical memory에 있지 않은, 즉, Swap space에 있는 page에 accessing하는 것을 의미한다.
  • page가 swapped disk에 있다면 OS는 해당 page를 다시 memory로 올려놓아야 한다.

Page replacement

  • OS는 swapped disk에 있는 page를 가져오기 위해 현재 memory에 있는 page를 다시 swapped disk에 가져다 놓아야 하는데, 이 page를 고를 때는 page replacement policy에 따라서 골라야 한다.

Page Fault Control Flow

  1. Reference
  2. Trap
  3. Check storage whether page is exist
  4. Get the page
  5. Reset Page Table
  6. Reinstruction 

Page fault Code

PFN = FindFreePhysicalPage()
if(PFN == -1) // no free page found
		PFN = EvictPage() // run replacement algorithm
DiskRead(PTE.DiskAddr, pfn) // sleep (waiting for I/O)
PTE.present = True //update page table with present
PTE.PFN = PFN // bit and translation (PFN)
RetryInstruction() // retry instruction
  • OS는 이제 삽입 될 page를 위해서 physical frame을 찾아야 한다.
  • 만약 physical memory에 공간이 없다면, replacement algorithm이 memory에 있는 page를 쫓아낼때 까지 기다려야 한다.

Lazy approach : OS가 memory가 꽉 찰 때까지 기다렸다가 replacement를 실행

Swap Daemon, Page Daemon : LW(low watermark) 보다 사용가능한 page의 수가 적어지면 replacement를 HW(high watermark) 보다 많아 질 때까지 한다.

'3-2 > 운영체제' 카테고리의 다른 글

LRU Implementation in more detail  (0) 2021.11.08
Swapping Policies  (0) 2021.11.08
Advanced Page Tables  (0) 2021.10.22
Translation Lookaside Buffer  (0) 2021.10.21
Introduction to Paging  (0) 2021.10.08