- Virtual Memory : 현재 수행되는 Process가 메모리에만 존재한다는 보장은 없다.
- 즉, 수행되는 프로그램의 일부분만 메모리로 올라간다.
- Logical Address Space는 Physical Address Space 보다 크거나 같아야한다.
- Page를 Swap in 하고 out하는 것이 필요하다.
- Virtual Memory는 Demand Paging, Demand Segmentation 기법을 통해서 표현될 수 있다.
Demand Paging
- Page가 필요할 때에만 Memory에 올리자. (요청이 있을 때에만 Paging)
- 즉, Page가 필요하지 않다면, Page는 Physical Memory로 로드되지 않는다.
Page Replacement
- 비어있는 Frame이 존재하지 않을 때에는 Replacement가 필요하다 → 목표 : Page Fault를 최소한으로 줄이자!
- 기본적인 Replacement의 과정
1. 먼저 Disk의 File System 또는 Swap Space에서 Memory 로 올라와야 하는 Page의 위치를 찾는다.
2. 비어있는 Frame 을 찾는다.
- 만약 비어있는 Frame이 있다면 바로 사용하면 된다.
- 하지만 비어있는 Frame이 없다면 Page Replacement Algorithm을 사용하여 Victim Frame을 찾아야 한다.(여기서 Victim Frame은 해석 그대로 Page out 되어야 하는 Page에 할당되어있는 Frame이다.)
3. 찾은 Page에 대해서 비어있는 Frame에 Page 를 할당하고, Page Table과 Frame Table 을 Update 해준다.
- 프로세스를 다시 실행한다.
Page Replacement Algorithms
- FIFO
- LRU
- 미래에 대한 예측을 할 수 없기 때문에 LRU Algorithm을 사용한다.
- LRU란, Least Recently Used 의 약자로, 가장 오랜 기간동안 Reference 되지 않은 Page를 교체하는 방식.
1. Counter Implementation : 그 페이지에 언제 접근했는지 시간을 기록하여 표현하는 방법.![](https://prod-files-secure.s3.us-west-2.amazonaws.com/13cbbae3-92ee-42f5-b97d-c5fc01248e91/0f3c1322-1865-4708-b82a-1284ba7c4b10/Untitled.png)
- 2. Stack Implementation : Page가 참조되면, Stack의 Top으로 Page를 올려준다. 이후, Page Replacement가 필요할 때에는 Stack의 Bottom(LRU)에 있는 Page를 쫓아낸다.
- counter base
- 시간 개념이 없이 가장 적거나 많이 호출된 Page를 교체하자는 Algorithm이다.
- 가장 최근이 아닌 오직 횟수만을 통해서 교체를 진행한다.
- 각 Page마다 Reference 횟수를 기록하기 위한 Counter가 필요하다.
- LFU Algorithm : 가장 적게 Reference 된 Page를 교체한다.
- MFU Algorithm : 가장 많이 Reference 된 Page를 교체한다.
thrashing
- 사용하는 프로세스가 많아질 때 어느 한계점 까지는 CPU이용율이 증가하다가 한계점 이상부터는 CPU 이용율이 떨어지는 현상.
- CPU Utilization 감소
- OS는 CPU 이용률이 떨어지는 것을 판단하고, Multiprogramming의 정도가 증가.
- 때문에 또 다른 프로세스가 시스템에 추가.
- Thrashing은 프로세스가 계속해서 Page in / Page out을 수행하게 되는 현상.
Virtual Memory
- Virtual Memory : 현재 수행되는 Process가 메모리에만 존재한다는 보장은 없다.
- 즉, 수행되는 프로그램의 일부분만 메모리로 올라간다.
- Logical Address Space는 Physical Address Space 보다 크거나 같아야한다.
- Page를 Swap in 하고 out하는 것이 필요하다.
- Virtual Memory는 Demand Paging, Demand Segmentation 기법을 통해서 표현될 수 있다.
Demand Paging
- Page가 필요할 때에만 Memory에 올리자. (요청이 있을 때에만 Paging)
- 즉, Page가 필요하지 않다면, Page는 Physical Memory로 로드되지 않는다.
- 비어있는 Frame이 존재하지 않을 때에는 Replacement가 필요하다 → 목표 : Page Fault를 최소한으로 줄이자!
- 기본적인 Replacement의 과정
1. 먼저 Disk의 File System 또는 Swap Space에서 Memory 로 올라와야 하는 Page의 위치를 찾는다.
- 만약 비어있는 Frame이 있다면 바로 사용하면 된다.
- 하지만 비어있는 Frame이 없다면 Page Replacement Algorithm을 사용하여 Victim Frame을 찾아야 한다.(여기서 Victim Frame은 해석 그대로 Page out 되어야 하는 Page에 할당되어있는 Frame이다.)
3. 찾은 Page에 대해서 비어있는 Frame에 Page 를 할당하고, Page Table과 Frame Table 을 Update 해준다.
- 프로세스를 다시 실행한다.
Page Replacement Algorithms
- FIFO
- LRU
- 미래에 대한 예측을 할 수 없기 때문에 LRU Algorithm을 사용한다.
- LRU란, Least Recently Used 의 약자로, 가장 오랜 기간동안 Reference 되지 않은 Page를 교체하는 방식.
1. Counter Implementation : 그 페이지에 언제 접근했는지 시간을 기록하여 표현하는 방법.![](https://prod-files-secure.s3.us-west-2.amazonaws.com/13cbbae3-92ee-42f5-b97d-c5fc01248e91/0f3c1322-1865-4708-b82a-1284ba7c4b10/Untitled.png)
- 2. Stack Implementation : Page가 참조되면, Stack의 Top으로 Page를 올려준다. 이후, Page Replacement가 필요할 때에는 Stack의 Bottom(LRU)에 있는 Page를 쫓아낸다.
- counter base
- 시간 개념이 없이 가장 적거나 많이 호출된 Page를 교체하자는 Algorithm이다.
- 가장 최근이 아닌 오직 횟수만을 통해서 교체를 진행한다.
- 각 Page마다 Reference 횟수를 기록하기 위한 Counter가 필요하다.
- LFU Algorithm : 가장 적게 Reference 된 Page를 교체한다.
- MFU Algorithm : 가장 많이 Reference 된 Page를 교체한다.
thrashing
- 사용하는 프로세스가 많아질 때 어느 한계점 까지는 CPU이용율이 증가하다가 한계점 이상부터는 CPU 이용율이 떨어지는 현상.
- CPU Utilization 감소
- OS는 CPU 이용률이 떨어지는 것을 판단하고, Multiprogramming의 정도가 증가.
- 때문에 또 다른 프로세스가 시스템에 추가.
- Thrashing은 프로세스가 계속해서 Page in / Page out을 수행하게 되는 현상.
- 2. 비어있는 Frame 을 찾는다.
- Page Replacement