가상메모리
- 물리 메모리가 가지는 크기의 한계를 극복하기 위해 각 프로세스에서 현재 실행에 필요한 부분만 메모리에 적재하는 방법
- 장점
- 사용자 프로그램이 물리메모리보다 커져도 됨(메모리 크기의 제약으로부터 자유로워진다)
- 각 프로그램이 더 작은 메모리를 차지하므로 더 많은 프로그램을 동시에 수행 가능.
- 프로그램을 메모리에 올리고 스왑하는데 필요한 입/출력 횟수가 줄어든다.
- 단점
- 구현이 어렵고 잘못 사용시 성능이 현저히 저하될 수 있다.
-> 계속해서 페이지를 교체해야 하는 경우가 생길 수 있음
=> 따라서 효율적인 방법으로 페이지를 교체하는 알고리즘 및 방법이 필요!!
페이지 할당 방식
- 가상메모리 방식은 필요 페이지가 메모리에 있는지 확인하고 없는 경우 페이지를 할당해 줘야 한다.
- Pure Demand Page
- 프로세스가 맨 처음 실행될 때 어떤 페이지가 필요한지 모르므로 아무 페이지도 할당하지 않음.
필요시 필요한 페이지만 할당하는 방식.
쓸데없는 페이지를 올리지 않기 때문에 최대한의 효율로 사용하지만 속도는 느리다.
- Preparing
- 미리 필요할 것 같은 페이지를 미리 올려두는 방식.
페이지 부재가 발생할 확률은 줄어들지만 이미 올라간 페이지가 쓰이지 않는 경우 메모리가 낭비되는 단점이 있다.
하지만 시간적 지역성, 공간적 지역성을 고려하여 메모리를 적재하기 떄문에 페이지 부재확률이 낮음!
페이지 교체 알고리즘
- 가상메모리를 사용하더라도 프로그램이 계속 실행되면 메모리가 페이지들로 가득 차서 페이지를 교체하는 작업이 필요함
- 어떤 페이지를 교체할건지에 대한 여러가지 알고리즘 존재
-
FIFO(First In First Out)
먼저 메모리에 적재된 페이지가 먼저 나가는 알고리즘.
보통 초기화 하는 코드는 프로세스 실행때만 초기화하고 안쓰이기 때문에 이런경우 적절하다.
-
LRU(Least Recently Used)
최근에 사용하지 않은 페이지를 가장 먼저 내리는 알고리즘
실제로 많이 사용되는 알고리즘
-
LFU(Least Frequently Used)
사용빈도가 가장 적은 페이지를 교체해주는 알고리즘
LRU가 가장 최근에 사용하지 않은 페이지라면 LFU는 사용횟수를 기록하고 있다 가장 적게 사용된 페이지를 교체한다
-
OPT(Optimal)
가장 사용하지 않을 것 같은 페이지를 가장 우선적으로 내려보내는 알고리즘
예측하기 어렵고 예측이 보장되지 않으므로 많이 쓰이지 않음