CS/컴퓨터운영체제

OS-0606: Page Replacement(L28)

goliot 2023. 6. 6. 14:59
반응형

#Page replacement policy

- 프레임이 필요한데 꽉 찼을 때 무엇을  쫓아내나(1프레임당 1페이지만 가짐)

1. Random - 아무거나

2. FIFO - 가장 오래된거

3. Optimal(minimal)

    > 가장 오랫동안 참조되지 않을(미래형) 페이지를 쫓아냄

        > 미래를 예측해야 함

    > 실제로 구현되지 않음

        > 다른거 평가하는 용으로 사용(SJF처럼)

4.★ LRU(Least Recently Used)

    > 과거로 미래 예측

    > 가장 오랫동안 참조되지 않은 것 쫓아냄

 

1. FIFO

frame1 = a       a        d 

frame2 =    b         b       a

frame3 =       c                     b

* Page references = 페이지 참조되는 순번

*page fault는 가장 최초에 아무것도 없는 상태에서 1번은 무조건 일어난다고 하

#Implementing LRU

- 완벽한 구현은 이럴 것이다:

> 페이지마다 클락 레지스터 추가

> 접근마다 클락 밸류 갱신

> 모든 페이지의 클락 레지스터에서 가장 낮은 값을 가진거 쫓아냄

 

- 간단한 접근:

> FIFO

> Not-recently-used(NRU)

    > R(참조) 비트를 사용, 참조 될 때 설정

    > 클럭 인터럽트마다 R 초기화

    > 초기화된 R비트 가진 거중 아무거나 쫓아냄

 

- Clock/Second Chance Algorithm

- Least Frequently Used / N-th chance Algorithm

 

#Frame Allocation

- 프로세스마다 몇개의 프레임을 갖는가

   > 최소 2개

   > 최대는 물리 메모리

- Allocation algorithm:

   > equal allocation (m/n frame)

   > proportional allocation

- 어느 프레임의 풀이 대체되나

   > local replacement - 자기 프레임만 가지고 정책 세움

   > global replacement - 메인 메모리 전체를 대상으로 대체 정책 세움

 

#Thrashing

- 메모리가 너무 많이 사용돼서 프로세스가 잠시 쉬는 사이에 쫓겨나 버리는거

- demand paging에서 멀티태스킹을 너무 많이 하면 page fault가 더 많이 일어나 성능이 떨어짐

* 비유: 학생이 너무 많은 학점을 들어서 할게 너무 많아지는 것

 

#Working set

- Thrashing은 모든 프로세스의 요구량이 물리 메모리보다 큰 경우 발생

    > Solution: 프로세스들이 경쟁하지 않도록 로컬 페이지 프레임 교체 사용

        > 개별 프로세스는 여전히 Thrashing에 빠질수도

    > Solution: 프로세스에 필요한 프레임 수만 할당

        > 시간이 지남에 따라 각 프로세스에 할당된 프레임 수를 변경

        > 전체 필요량이 너무 높은 경우 프로세스를 선택하여 중단시킴

- Working set은 프로세스가 작업하는 프레임의 집합, Thrasing을 피하기 위해 주 메모리에 상주해야 하는 페이지

    > 항상 이것을 메모리에 유지

    > 필요에 따라 다른 페이지는 버릴 수 있음

 

 

반응형

'CS > 컴퓨터운영체제' 카테고리의 다른 글

OS-0613 : Demand Paging  (0) 2023.06.13
OS-0606: File system imporved, Disk Management(L32, 33)  (0) 2023.06.06
OS-0606: File System(L29, 30, 31)  (0) 2023.06.06
OS-0523: Paging  (0) 2023.05.23
OS - 0523: Segmentation  (1) 2023.05.23