2024 Operating Systems

page replacement policy

Author
후후후
Date
2024-04-28 11:19
Views
94
------------------------------------------수업게시판 규칙------------------------------------------------
커뮤니티가 아닌 공적인 수업 게시판으로 서로 간의 예의를 지켜야 합니다.
비밀 게시물의 경우 확인하지 않고 답변해드리지도 않습니다.
----------------------------------------------------------------------------------------------------------
page replacement policy의 approximating lru 슬라이드의 그림이 잘 이해가 가지 않아 질문드립니다!!
바늘이 돌아가는 방식이, 0,1,2가 들어와 바늘이 2의 다음인 0을 가리키고, 3을 들여오기 위해 evict 해야 하므로, 바늘이 돌며
1->0으로 바꾸고, 다시 reference bit이 0인 페이지를 처음 만나면(슬라이드 상으로 0) 이게 evict대상이 되어 3과 바꾸고 바늘은 3을
넣었으니 그 다음인 1을 가리키는 것까지 이해가 되는데 이후에 1과 3을 둘다 접근하는데 왜 1은 refbit이 0이되고 3은 1이 유지되는지 모르겠습니다!!
page가 eiviction되는 과정자체는 이해가 가는데, 바늘이 정확히 어떻게 동작하는 것인지 모르겠습니다.
Total 7

  • 2024-04-28 11:41

    바늘은 evict할 페이지를 찾을 때 움직이고, evict할 페이지(reference bit가 0인 페이지)를 찾아 다른 페이지로 교체한 경우 바늘은 그 다음 페이지를 가리키는 것으로 이해했습니다.


  • 2024-04-28 19:53

    위 학생이 설명한 대로 eviction이 필요한 경우에 시계 바늘이 돌며, reference bit이 0인 페이지를 찾으며,
    이 과정에서 reference bit이 1인 페이지를 찾으면 0으로 설정합니다.
    또한 페이지 할당 또는 교체가 발생하면 해당 위치로부터, 시계 바늘을 1칸만큼 움직입니다.

    즉 이 2개의 원리를 그리고 clock algorithm을 따라가보면
    처음 상태는 아래와 같습니다. 3개 페이지를 위한 공간은 모두 x로 비어있으며, 바늘(*)은 첫번째 칸을 지시하고 있습니다.
    {x*, x, x}

    Access : 0, Present : N
    {0(1), x*, x}

    Access : 1, Present : N
    {0(1), 1(1), x*}

    Access : 2, Present : N
    {0(1)*, 1(1), 2(1)}

    Access : 3, Present : N
    더이상 빈 공간이 없으므로 *로 표시된 시계 바늘이 돌며 reference bit이 0인 페이지를 찾습니다.
    {0(1)*, 1(1), 2(1)} -> {0(0), 1(1)*, 2(1)} -> {0(0), 1(0), 2(1)*} -> {0(0)*, 1(0), 2(0)} -> {3(1)*, 1(0), 2(0)} -> {3(1), 1(0)*, 2(0)}

    Access : 1, Present : Y
    {3(1), 1(1)*, 2(0)}

    Access : 3, Present : Y
    {3(1), 1(1)*, 2(0)}

    Access : 0, Present : N
    더이상 빈 공간이 없으므로 *로 표시된 시계 바늘이 돌며 reference bit이 0인 페이지를 찾습니다.
    {3(1), 1(1)*, 2(0)} -> {3(1), 1(0), 2(0)*} -> {3(1)*, 1(0), 0(1)}

    Access : 3, Present : Y
    {3(1)*, 1(0), 0(1)}

    강의 자료에 나온 전체적인 과정을 풀어 쓰면 다음과 같습니다.
    다음 과정 진행 중 이해가 안되시는 부분이 존재한다면 해당 라인에 대해서 다시 질문 주시면 감사하겠습니다.


  • 2024-04-28 20:11

    "Access : 0, Present : N
    더이상 빈 공간이 없으므로 *로 표시된 시계 바늘이 돌며 reference bit이 0인 페이지를 찾습니다.
    {3(1), 1(1)*, 2(0)} -> {3(1), 1(0), 2(0)*} -> {3(1)*, 1(1), 0(1)}"

    이 부분에서 {3(1), 1(1)*, 2(0)} -> {3(1), 1(0), 2(0)*} -> {3(1)*, 1(0), 0(1)} 이 맞지 않나요??

    그렇다면 Clock 알고리즘은 선형탐색이나 Hashmap과 같은 경우로 해당 Clock안에 있는지를 확인하고 있다면 reference bit를 1로 설정. 아니라면 evict작업을 위해 시계를 돌린다. 이렇게 이해하면 되는건가요??


    • 2024-04-28 20:58

      해당 부분은 오타가 맞습니다.
      {3(1), 1(1)*, 2(0)} -> {3(1), 1(0), 2(0)*} -> {3(1)*, 1(0), 0(1)}
      로 수정하였습니다.

      말씀해 주신대로 eviction이 필요한 경우에 시계가 돌아가며, 단순히 페이지에 접근하는 경우에는 해당 페이지의 reference bit이 1이 되는 것이 맞습니다.


  • 2024-04-28 20:17

    그렇다면 Clock Algorithm은 LRU와 항상 같은 결과가 나오나요? 아니면 마지막 Eviction이 된 PVN이 LRU, Clock Algo가 서로 다른 경우가 존재할까요?


    • 2024-04-28 20:37

      해당 Clock Algorithm이 Approxy LRU를 구현하기 위해 사용되었기에 결과는 LRU와 유사하리라 생각됩니다.


      • 2024-04-28 23:38

        그런데 강의 슬라이드에서 LRU의 input을 통해 Clock-Algorithm을 적용하면 LRU와 다른 Mapping이 됩니다


Scroll to top