Deeper Learning

Virtual Memory 본문

Computer Science

Virtual Memory

Dlaiml 2021. 2. 9. 19:43

Virtual Memory

가상 메모리가 없다면 프로세스를 실행하기 위해서는 전체 프로세스가 실제 메모리에 존재하여야 한다.

가상 메모리를 사용하여 가상 메모리 주소를 할당하면 현재 필요한 프로세스의 부분만 메모리에 적재하여 실행이 가능하기 때문에 실제 RAM보다 메모리 영역을 크게 사용하는 것이 가능하다.

가상 메모리는  Logical Memory와 Physical Memory를 분리하여 RAM의 용량을 초과하는 프로세스를 실행 가능하도록 한다.

 

가상메모리의 프로그램이 실행될 경우 MMU(Memoery Management Unit)에 의해 실제 물리적인 메모리의 주소 값으로 매핑된다.

 

Paging & Segmentation

Paging(페이징)은 고정된 크기로 메모리를 나누어 할당하는 방식으로 Physical memory로 데이터를 매핑할 때 최소 크기 단위인 page단위로 매핑이 이루어진다.

 

Page의 번호와 물리 메모리의 시작주소를 저장하고 있는 Page Table을 사용하여 Logical memory의 Page의 Physical Memory 주소 값을 알 수 있으며 이를 통해 알맞은 위치로 매핑이 가능하다.

 

https://i.stack.imgur.com/e2NNe.png

 

Segmentation은 가변크기로 메모리를 나누어 할당하는 방식으로 Paging은 물리적인 단위인 고정된 메모리 크기인 Page로 메모리를 나누지만 Segmentation은 메모리의 의미를 고려하는 논리적인 단위 Segment로 분할이 이루어진다.

 

Paging 기법을 사용할 때, 시간이 흐름에 따라 요구하는 Page가 달라지고 따라서 Page Replacement가 발생하게 된다.

 

Page Replacement

물리메모리에서 요구하는 Page가 달라지므로 Page는 계속 교체된다. 

이를 교체하는 순서는 알고리즘에 따라 여러 가지가 있으며, 어떤 알고리즘을 사용하는가에 따라 Page Faults, Waiting time 등이 달라지게 된다.

 

Page Faults는 RAM에 현재 존재하지 않는 데이터에 접근을 시도하는 상황을 말한다. 페이지 폴트가 발생하면 OS는 정해진 Page Replacement Algorithm에 따라 데이터를 메모리로 가져와 프로그램을 정상적으로 작동시킨다.

 

스와핑은 현재 메인 메모리 공간이 가득차있는 상황에서 페이지 폴트가 발생하여 할당된 page를 sleep 시키고, 필요한 새 Page를 load 하는 과정이다.

FIFO

https://media.geeksforgeeks.org/wp-content/uploads/20190412160604/fifo2.png

 

FIFO (First-In-First-Out) 알고리즘은 가장 오래 메모리에 할당된 Page를 교체한다. 

위의 5번째 page reference에서 5번 페이지를 load할 공간이 없기 때문에 가장 먼저 메모리에 할당된 1번 페이지와 교체되었다.

 

Optimal Page Replacement

https://media.geeksforgeeks.org/wp-content/uploads/20190412160500/optimal.png

Optimal Page Replacement의 경우 실제로는 알 수 없는 앞으로 가장 오랫동안 사용되지 않을 페이지를 victim으로 선정하는(교체하는) 알고리즘이다.

이 알고리즘을 따를 경우 가장 Page Fault가 적게 일어나게 되지만 OS가 미래의 page reference를 알 수 없기 때문에 실제로는 사용이 불가능하다. 

항상 최적의 성능을 내기 때문에 성능의 비교를 위해 사용되는 알고리즘이다.

 

LRU

https://media.geeksforgeeks.org/wp-content/uploads/20190412161533/optimal2.png

Least Recently Used (LRU)는 가장 오래전에 reference된 Page를 victim으로 선정한다.

 

LFU, Clock 등 여러 알고리즘이 존재한다.

 

 

 

 

 

 

'Computer Science' 카테고리의 다른 글

CPU 성능 평가 (CPU Times)  (0) 2021.05.24
Floating Point  (0) 2021.03.19
SQL & NoSQL  (0) 2021.02.10
Semaphore & Mutex  (0) 2021.02.09
Dynamic Programming & Greedy Algorithm  (0) 2021.02.09
Comments