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되는 과정자체는 이해가 가는데, 바늘이 정확히 어떻게 동작하는 것인지 모르겠습니다.
커뮤니티가 아닌 공적인 수업 게시판으로 서로 간의 예의를 지켜야 합니다.
비밀 게시물의 경우 확인하지 않고 답변해드리지도 않습니다.
----------------------------------------------------------------------------------------------------------
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되는 과정자체는 이해가 가는데, 바늘이 정확히 어떻게 동작하는 것인지 모르겠습니다.
바늘은 evict할 페이지를 찾을 때 움직이고, evict할 페이지(reference bit가 0인 페이지)를 찾아 다른 페이지로 교체한 경우 바늘은 그 다음 페이지를 가리키는 것으로 이해했습니다.
위 학생이 설명한 대로 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)}
강의 자료에 나온 전체적인 과정을 풀어 쓰면 다음과 같습니다.
다음 과정 진행 중 이해가 안되시는 부분이 존재한다면 해당 라인에 대해서 다시 질문 주시면 감사하겠습니다.
"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작업을 위해 시계를 돌린다. 이렇게 이해하면 되는건가요??
해당 부분은 오타가 맞습니다.
{3(1), 1(1)*, 2(0)} -> {3(1), 1(0), 2(0)*} -> {3(1)*, 1(0), 0(1)}
로 수정하였습니다.
말씀해 주신대로 eviction이 필요한 경우에 시계가 돌아가며, 단순히 페이지에 접근하는 경우에는 해당 페이지의 reference bit이 1이 되는 것이 맞습니다.
그렇다면 Clock Algorithm은 LRU와 항상 같은 결과가 나오나요? 아니면 마지막 Eviction이 된 PVN이 LRU, Clock Algo가 서로 다른 경우가 존재할까요?
해당 Clock Algorithm이 Approxy LRU를 구현하기 위해 사용되었기에 결과는 LRU와 유사하리라 생각됩니다.
그런데 강의 슬라이드에서 LRU의 input을 통해 Clock-Algorithm을 적용하면 LRU와 다른 Mapping이 됩니다