가상 메모리 메모리 관리 방법 (2/2)

2022. 10. 1. 17:30컴퓨터사이언스(CS)

728x90

 

출처: https://rlagmlqja11.tistory.com/entry/가상-메모리-관리-메모리-관리-방법-1-2 [지식 있는 나그네:티스토리]

 

 

저번 포스팅에서 가상 메모리 관리기법 LUR까지  적어보았는데요 글이 너무 길어질 것 같아서  2부로 나눠보았습니다

 

LFU(Least Recently Used ) algorithm 

 

저번 포스팅에서   LRU 을 가장 많이 사용한다고 말씀드렸는데요  말했다시피 시간을 적고 쓰는 것의 오버헤드가 있는 편

이라고 말씀드렸습니다  그래서 LFU라는 기법 즉 참조 횟수가 가장 적은 Page 를 교체하는 방법이 있습니다

사실 LFU 라는  기법은 약간의 오류가 있습니다 

 

만약 한 프로세스가 할당받은 페이지 프레임이 꽉 차서 w라는 페이지를  넣어줘야한다면 그중 가장적게 참조된 프로세스를 바꿔 끼워줄것 입니다 하지만 다음페이지에 x 라는 페이지를 넣어줘야 한다면 w 가 가장적은 이유로 참조 됬다면 x 라는 페이지를 넣어주고 w 라는 페이지를 또 사용해야 한다면 w 를뺴고 끼워주고 x를... 사용해야 한다면 이렇게 무한 루프처럼 오류가 생길 수 있을 것입니다.

 

 

Clock Algorithm 

 

IBM VM/370 OS에서 실제로 사용하던 방법입니다  제가 말했었던 Bit Vector  기억나시나요? 거기에는 언제 참조했는지 또 언제 수정됐는지 사용되는 것이라고 말씀드렸는데요 Clock 알고리즘과 bit Vector 중 참조 bit 만 사용하여 만든 알고리즘입니다 실제 IBM 사에서 사용했던 방법입니다

 

이러한 알고리즘입니다 페이지를 시계 모양으로 배열해두고 만약 참조했다면 reference bit에 1 을적 어둡니다 참조 비트는 말헀다 싶어 일정 시간 동안 참조하면 0 하지 않았으면 1입니다 즉 시계 모양 알고리즘은 한바뀌 돌떄가 일정 시간입니다 그래서 만약 한바뀌 돌 때마다 참조되면 1 되지 않으면 0이고 가장 먼저 만난 reference bit 가 0 이것에 페이지를 교체해주는 방법입니다

 

 

 

 

 

Second Chance Algorithm 

 

시계 알고리즘과 매우 유사합니다 bit Vector에서 참조 비트 ( Reference Bit )만 사용한다고 했는데 이번에는 Update bit 도 사용해 사용하는 알고리즘입니다

 

 

시계가 한 바퀴 돌면 아까 위와 말했듯이 reference bit를 0으로 바꿔줍니다 만약 업데이트 비트가 0 참조 비트가 0 이면 페이지를 바꿔줍니다 만약 참조비트가 0 업데이트 비트가 1 이면 다시 한 바뀌 돌 때 업데이트 비트를 0으로 바꿔줌과 동시에 페이지를 교체해주는 작업을 합니다

( 위에 설명한 알고리즘과 매우 동일 )

 

 

 

 

 

이렇게 가상 메모리를 좀 더 잘 관리해주고 언제 메인 메모리에 올려주고 언제 내려주면 좋을까에 대해서 이야기해봤습니다 

여기서 이렇게 알고리즘을 말하는 본질을 만약 페이지 프레임이 꽉 차있다면 어떤 기준으로 올리고 내리면 좋을까? 

라는 생각을 해보시고 한 번쯤 곱씹어 보시면 좋겠습니다 감사합니다 

728x90