[OS] Swapping 정리

hwi·2024년 11월 14일

OS

목록 보기
7/7

Swap space

Motivation

여러 process를 동시에 돌리고 싶은데, Memory만으로는 공간이 부족함

해결 방법

꼭 필요한 page만 메모리에 올리고, 나머지는 disk에 놔두기(swap space)
이때 각 프로세스들은 disk 공간도 memory로 인식

프로세스의 page들은 모두
1. main memory
2. swap space(disk)
둘 중 하나에 무조건 올라온다!

page fault

발생조건

page가 main memory에 없을 때

하는 일

  1. 메모리에서 빈 공간 탐색 & replacement
  2. SWAP space에서 page 찾아서 main memory로 가져오기
  3. Instruction 재실행

Control Flow

3~8 : TLB Hit

  • 이 경우, page는 무조건 main memory에 있다.
    because) TLB에 올라오려면 무조건 main memory에 올리는 과정을 거치기 때문

12 : Valid bit이 0일 때

  • segmentation fault

15 : protection bit이 0일 때

  • protection fault

17 : page는 memory에 있는데 TLB miss인 경우

  • TLB에 넣어주기 + Instruction 재실행

21 : page도 disk에 있고 TLB miss인 경우

  • page fault

Present Bit

value = 1 : Main memory에 page가 존재
value = 0 : Swap spaces에 page가 존재

valid bit과의 차이

valid bit이 0 -> segmentation fault
present bit이 0 -> page fault

When to perform replacement?

Lazy approach

메모리가 꽉 차면 그때부터 replacement

Swap Daemon, Page Daemon

Daemon이 계속 돌아가면서 미리미리 free 시킴

Swapping policy

policy

Optimal policy

가장 나중에 쓰일 애를 evict

FIFO

먼저 들어온 애를 쫓아내기

Belady's Anomaly

cache size가 커졌는데도 page fault가 늘어나는 현상

Random

아무나 나가
optimal이랑 성능이 비슷할 때도 있음(!!)

using history

  • LRU (Least Recently Used)
  • LFU (Least Frequently Used)

performance

No-locality workload

다 비슷비슷함

the 80-20 workload

LRU Good

0~49까지 반복

Random good

profile
될놈

0개의 댓글