[운영체제] Virtual Memory 2 - Clock , Working set, PFF
이 replace ment 알고리즘은 꼭 virtual memory 에서만 발생하는게 아니다
한정된 빠른공간에 요청된 데이터를 저장해 두었다가 다시 요청이 오면 캐시에서 데이터를 준다.
캐싱 기법
캐시메모리(메모리에 접근 전에 사용되는 저장공간)
, 버퍼 캐싱(파일 시스템에 대한 read/write 요청을 메모리에서 빠르게 서비스하는 방식)
, 웹 캐싱(웹 페이지에 대한 요청을 웹서버에 다시 다녀오지 않고 읽어왔던 메모리를 저장해놨다가 보여주는 형태) 등 다양한 분야에서 사용된다.
그런데, OS는 LRU, LFU 를 사용할 수가 없다.
OS 는 page fault 가 났을때만 , 제어권을 갖기 때문에 그 전에 어떤게 자주 사용되었고, 어떤게 최근에 쓴건지 알수가 없다.
그래서 사용되는 알고리즘
각각의 사각형이 페이지 프레임 , 메모리 안에 들어있는 페이지들
어떤 페이지가 사용되면
그 페이지에는 reference bit 이 달려있는데,
그 페이지가 최근에 참조가 되면 reference bit 을 1로 참조한다. (하드웨어가 해주는 일)
page fault 가 나서 쫒아낼때 이 reference bit 을 참고하게된다.
운영체제는 reference bit 이 1인얘는 0으로 바꾸고 그 다음 페이지를 본다.
bit 0인 애를 쫒아낸다.
한 바퀴 돌때까지 사용되지 않은 페이지를 쫒아내는 것
여러 프로그램들이 메모리에 올라가 있을텐데
쫒아낼때는 어떤 프로그램에 있는 페이지인지 무관하게 알고리즘에 맞는애를 쫒아냈었다.
어떤 프로그램을 효율적으로 올리려면 그 프로그램의 페이지들이 메모리에 올라가있어야 효율적일수있다.
Loop 를 돌때도 그 해당 부분이 페이지에 안 올라가있으면 계속 해서 page fault 가 나기 때문에
최소한의 페이지 갯수가 있는게 좋다.
근데 이렇게 최소 페이지를 할당하지 않아도 LRU, LFU 등 알고리즘을 쓰면
알아서 할당되는 효과가 생긴다.
이걸 Global replacement라 함 , 다른 프로그램의 페이지도 쫒아내는방법
working set, 이나 PFF는 프로그램이 최소한 필요로 하는 그런 페이지들을 메모리에 올려놓는 할당의 효과가 있는
알고리즘이다.
Local 은
자신의 할당된 프로그램 내에서의 페이지만 쫒아낸다.
아까 위에서 프로그램에게 어느정도의 최소 메모리가 할당되지 않으면 page fault 가 자주 난다고 했다.
이 상황을 , Thrashing 이라고 함
프로그램이 적어도 어느정도는 메모리 확보를 하게 해줘야한다.
그거 해주는게 Working set, PFF 다
어느정도의 메모리 페이지를 가지고 있어야한다 는 것 과
프로세스는 특정 시간 동안 일정 장소만 집중적으로 참조한다는 것
working set 모델에서는 프로세스의 빈번히 사용되는 페이지들의 집합을 메모리에 올려놓고
그 집합이 있어야만 실행되도록 한다.
워킹셋을 미리 알수없다.
페이지 집합을 미리 알 수 없다. 과거를 통해 워킹셋을 추정해야한다.
델타 시간동안 참조된 페이지들을 워킹셋이라 본다.
워킹셋을 추정하는 방법이 아니라
직접 page-fault rate 를 보는것
상한값이 넘으면 페이지를 더 할당해서 준다.
페이지 사이즈가 작아지면 나타나는 효과들