달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 1. 3. 23:57

LRU/k OS이야기2012. 1. 3. 23:57

어떤 페이지를 스왑 아웃/ 스왑 인 할 것인가를 결정하는 알고리즘

k번 참조해야 lru 리스트에 끼워줌이란 뜻

리눅스에서는 LRU/2를 사용

active list 와 inactive list를 사용

Active bit / Referenced bit 사용
0               0              //inactive no reference
0               1              //inactive reference  
1               0              //active no reference
1               1              //active reference

function()

page_referenced() : 주기적으로 호출되며 페이지가 참조되지 않으면 비트를 제거, (1,1)->(1,0) , (0,1)->(0,0)
refill_inactive_zone() : 주기적으로 호출되는 함수로 active list에 있는 페이지가 일정시간 동안 접근되지 않으면 inactive list로 옮기는 역할을 수행

 lru_cache_add() inactive list에 페이지를 추가 
 lru_cache_add_active() active list에 페이지를 추가 
make_page_accessed()  Access Bit에 대한 처리, inactive->active list로 페이지 이동 
page_referenced()  Referenced Bit에 대한 처리 
 refill_inactive_zone() LRU 정책에 따른 캐시 정리, inactive->active list페이지 이동 



'OS이야기' 카테고리의 다른 글

C 컴파일러 과정  (0) 2012.01.04
페이지 벡터  (0) 2012.01.04
mm_struct, vm_area_struct  (0) 2012.01.03
kmap() 함수  (0) 2012.01.03
bio  (0) 2012.01.03
:
Posted by НooпeУ


Code Start Code End