메인 메모리보다 훨씬 큰 기억공간인 디스크를 가상의 메모리 공간으로 이용하는 기법
만약, 당신이 요리를 할 때, 모든 재료들을 도마에 모두 올려두고 한다면 도마의 크기가 부족 할 수가 있다. 그런데 만약, 냉장고를 두어서 재료를 모아두고 그때그때 필요한 재료만 가져와서 작업한다면 이런 문제를 해결할 수 있다.
여기서 도마가 실제 메모리, 냉장고를 가상 메모리라고 볼 수 있다.
두둥등장
가상메모리 등장 전에는, 주기억장치(RAM)에 실행할 프로그램 전체를 적제했다. 하지만 이런 방법에는 단점이 존재했는데
그래서 나온 것이 가상 메모리로, 필요한 부분만 메모리에 올리는 것 이다.
지금의 가상 메모리 기법을 존재하게 한 것
대부분의 프로그램이 프로그램 전체가 적제되지 않아도 사용 가능하다는 특징을 이용해서, 필요한 페이지만 저장공간에 적제하고, 다른 페이지는 보조기억장치에 적제해서 사용한다.
여기서 페이지 테이블은 타당,비타당 비트 가 추가되었는데, 이는 필요한 페이지가 물리적 메모리에 있는지 없는지를 확인하기 위함이다.
타당 비트가 나오면 실행하면 되지만, 비타당 비트가 나온다면 어떻게 해야 할까? :thinking:
저장되어있지 않은 페이지를 사용하기 위해서는 보조기억장치에서 필요한 페이지를 가져오면 된다.
이렇게 문제가 생기면 MMU에서 운영체제로 제어권을 넘긴다. 그러면 운영체제는 비어있는 프레임 리스트 중 하나를 선택하여, 프레임에 요구된 페이지를 보조기억장치에서 읽어들인다. 그 후 페이지 테이블을 수정하고 처음부터 다시 시작한다.
만약, 프레임 리스트가 페이지로 꽉 찼다면 어떻게 할까?
그렇다면 물리메모리에 있는 페이지와 보조기억장치에 있는 페이지를 바꿔야 할 것이다.
크게 세 종류의 페이지 교체 알고리즘이 있다.
가장 먼저 들어온 페이지를 교체한다
세 개의 알고리즘 중, 가장 간단한 방법이다.
벨레디의 변의 현상이 발생할 수도 있어서 성능이 항상 좋은 것은 아니다
프레임이 늘어날수록, 페이지 부재가 줄어들어야 하지만 , 더 늘어나는 현상
중요한 페이지가 계속 사용될 가능성이 있더라도, 그저 오랬동안 있었다고 교체하기 때문이다
앞으로 가장 사용하지 않을 것 같은 페이지를 교체한다.
이름과 같이 최적으로 페이지 결함이 나올 횟수가 적다.
페이지가 얼마나 오랜기가 사용되지 않을지 예측하기 힘들어서 실제 구현이 힘들다
가장 오랬동안 사용되지 않은 페이지를 교체한다.
실제로 사용할 수 있는 알고리즘 중에서 가장 좋은 방법이다.
참고자료
운영체제 21장 - 메모리 관리(8) : 가상 메모리 -ChockPeanut