페이지 교체 알고리즘 - FIFO, OPT, LRU
Programming/운영체제

페이지 교체 알고리즘 - FIFO, OPT, LRU

1. 페이지 교체

1) 요구 페이징(Demand Paging)

  요구되어지는 페이지만 backing store 에서 메모리로 가져온다.

프로그램이 계속 실행되면서 요구 페이지가 늘어나고, 언젠가는 메모리가 가득 차게 된다.

=> Memory full!

 

메모리가 가득 차면 추가로 페이지를 가져오기 위해

어떤 페이지는 backing store로 몰아내고(page-out)

그 빈 공간으로 페이지를 가져온다.(page-in)

용어 : victim page ; victim이란 말은 희생양 이라는 뜻이다. 즉, 페이지 교체를 위해 backing store로 쫓겨난 페이지를 말한다.

2. Victim Page

  페이지 교체를 위해 어느 페이지를 몰아낼 것인가?

=> i/o 시간 절약을 위해 기왕이면 modify 되지 않은 페이지를 victim page로 선택한다!

페이지가 수정되었다면 backing store로 몰아낼 때 하드디스크에 있는 페이지도 수정해야 하기 때문이다.(write에 부담이 발생)

- 방법: modified bit(= dirty bit) 이용

   

3. 페이지 교체 알고리즘

여러 페이지 중 어떤 페이지를 victim으로 선택할 것인가를 결정하는 알고리즘을 말한다.

1) Page reference string (페이지 참조열)

  CPU가 내는 주소가 100 101 102 432 612 103 104 611 612 라고 가정해보자.

이때 Page size = 100byte 라면, 페이지 번호는 1 1 1 4 6 1 1 1 6 6 이 된다.

여기서 Page reference string은 1 4 6 1 6 이다.

 

  페이지 참조열이 이렇게 되는 이유는 page 차원에서 연속된 주소는 의미없기 때문이다. 같은 페이지라면 page fault가 일어나지 않기 때문이 100 101 102 모두 1로 본다.

2) First-In First-Out (FIFO)

  페이지 교체 알고리즘 중 가장 간단한 알고리즘이다. 초기화 코드는 더이상 사용되지 않을 것이라는게 FIFO 기반에 깔린 생각이다.

  • 예제
  • 페이지 참조열 = 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
  • # of frames = 3
  • page fault가 발생할 때마다 가장 먼저 들어온 페이지를 교체한다면 15 page faults가 발생한다.

Belady's Anomaly

 : 프레임 수(=메모리 용량)가 증가하면서 page fault 회수가 증가하지 않는 구간이 있다.

Belady's Anomaly

 

3) Optimal (OPT)

  앞으로 가장 오랫동안 사용하지 않을 페이지를 victim page로 선택한다.

  • 예제
  • 페이지 참조열 = 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
  • # of frames = 3
  • page fault가 발생할 때마다 앞으로 가장 오랫동안 사용되지 않는 페이지를 교체한다면 9 page faults가 발생한다.

실제로 OPT 알고리즘은 비현실적이다! 왜냐하면 미래는 알수 없기 때문이다.

cf. SJF CPU scheduling algorithm : CPU 스케쥴링에서 작업시간이 가장 짧은 것을 선택하는 알고리즘

 

4) Least-Recently-Used (LRU)

  그동안 가장 오랫동안 사용하지 않았던 페이지를 victim page로 선택한다. 최근에 사용되지 않으면 나중에도 사용되지 않을 것이라는 게 LRU 알고리즘의 기저에 깔린 생각이다.

  • 예제
  • 페이지 참조열 = 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
  • # of frames = 3
  • page fault가 발생할 때마다 그동안 가장 오랫동안 사용되지 않았던 페이지를 교체한다면 12 page faults가 발생한다.

   

5) Global vs Local Replacement

  -  Global replacement : 메모리 상의 모든 프로세스 페이지에 대해 교체

  -  Local replacement : 메모리 상의 자기 프로세스 페이지에 대해 교체

성능 비교

  - Global replacement가 더 효율적일 수 있다.

'Programming > 운영체제' 카테고리의 다른 글

파일 할당(File Allocation)  (0) 2021.09.26
프레임 할당 (Allocation of Frames)  (0) 2021.09.26
가상메모리와 요구페이징  (0) 2021.09.25
세그멘테이션(Segmentation)  (0) 2021.09.25
페이징(Paging)  (0) 2021.09.25