CS/Operating System

[운영체제] 가상메모리(Virtual Memory)

테리는당근을좋아해 2020. 6. 20. 01:40

가상메모리

- 프로세스 전체가 메모리 내에 적재되지 않더라도 실행이 가능하도록 하는 기법

- 가상 메모리 기법을 통해 물리 메모리 크기에 제약받지 않고 더 많은 프로그램을 동시에 실행할 수 있음

- 프로세스에서 실제로 사용되지 않는 영역을 제외하고 메모리에 적재함으로싸, 메모리에 적재하는 용량을 줄임

 

 

가상메모리의 크기

- 가상메모리의 크기는 이론상 CPU bit, 버스의 대역폭에 따르게 됨

- CPU 비트 수로 표현할 수 있는 주소값의 범위

- 32 bit CPU에서 가상메모리의 크기는 2^32 - 1(4GB)

- 64 bit CPU에서 가상메모리의 크기는 2^64 - 1(16,000,000 TB)

 

 

요구 페이징(Demand Paging)

- 가상 메모리에서 프로그램 실행을 위해 초기에 필요한 것만 적재하는 전략

- 프로세스 내의 개별 페이지들은 페이저에 의해 관리

- 프로세스 실행에 실제 필요한 페이지만 메모리에 적재해 사용되지 않을 페이지를 가져오는 시간과 메모리 낭비를 줄임

 

 

페이지 부재 트랩(Page Fault)

- 요구 페이징에서는 프로그램에 대한 모든 내용이 물리 메모리에 올라오지 않기 때문에 메모리에 없는 페이지에 접근하려할 때 페이지 부재 트랩이 발생

- 페이지 부재 트랩이 발생하면 원하는 페이지를 저장 장치에서 가져오게 되고, 만약 물리 메모리가 가득 차있는 상태라면 페이지 교체가 이루어짐

 

1) 페이지 부재 트랩 처리 과정

(1) 페이지 부재 트랩 발생

(2) 디스크에서 해당 페이지를 찾음

(3) 빈 페이지 프레임을 찾음

(4) 페이지 교체 알고리즘을 통해 Victim 페이지 선택

(5) Victim 페이지를 디스크에 저장

(6) 비워진 페이지 프레임에 새 페이지를 읽어옴

(7) 재시작

 

 

페이지 교체 알고리즘

1) FIFO(First In First Out)

- 선입 선출

- 물리 메모리에 올라온 페이지 순으로 페이지 교체시점에 나가게 됨

- 큐를 이용해 쉽게 구현이 가능

- 오히려 페이지 부재율을 높일 수 있으며, Belady의 모순이 발생 가능

 

! Belady의 모순

- 페이지 프레임의 개수를 늘려도 페이지 부재가 줄어들지 않는 모순 현상

 

2) 최적 페이지 교체(OPT, Optimal Page Replacement)

- 가장 오랫동안 사용되지 않을 페이지를 찾아 교체하는 것

- 낮은 페이지 부재율을 보장하지만, 구현이 어려움

 

3) LRU 페이지 교체(Least-Recently-Used Page Replacement)

- 최적 페이지 교체에 근사한 알고리즘

- 가장 오랫동안 사용되지 않은 페이지를 선택해 교체

- FIFO보다 낮은 페이지 부재율을 보장

- 우선순위 큐, Double Linked Queue&HashTable로 구현 가능

https://dheldh77.tistory.com/entry/LRU-Cache

 

LRU Cache

캐시란 속도가 빠른 장치와 속도가 느린 장치 간의 병목현상을 줄이기 위한 범용 메모리로, 지역성을 이용해 사용할 데이터를 예측해 저장한다 쉽게 말하면 사용했던 데이터를 속도가 빠른 저��

dheldh77.tistory.com

 

4) LFU 페이지 교체(Least-Frequently-Used Page Replacement)

- 참조 횟수가 가장 작은 페이지를 교체

- 참조 횟수가 높을수록 앞으로 계속 참조할 것이라는 가정에 기인

- 어떤 프로세스가 특정 페이지를 집중적으로 사용하다가 다른 페이지를 집중적으로 사용하게 되면 초기 가정을 만족하지 못함

 

5) MFU 페이지 교체(Most-Frequently-Used Page Replacement)

- 참조 횟수가 가장 많은 페이지를 교체

- 참조 횟수가 낮을수록 최근에 페이지 프레임에 올라왔고, 앞으로 사용될 가능성이 많다는 가정에 기인

 

 

쓰레싱(Thrashing)

- 메모리에 페이지 부재율이 과도하게 높아지는 현상

- 심각한 성능저하를 초래

 

1) 원인 

(1) 운영체제는 CPU 이용율이 떨어질 때, 새로운 프로세스를 추가해 degree of multiprogramming을 높이려 하는데, 이때 전역 페이지 교체 알고리즘으로 페이지 교체가 일어나기 때문

 

(2) CPU 이용률이 최대값에 도달했을 때, degree of multiprogramming을 더 높였을 경우 발생

 

2) 해결 방법

- 지역 교체 알고리즘이나 우선순위 교환 알고리즘으로 한 프로세스가 쓰레싱을 유발했더라도 다른 프로세스로부터 페이지 프레임을 뺏어올 수 없도록 함

 

3) 방지법

- 각 프로세스가 필요로하는 최소한의 프레임 개수를 보장

- 페이지 프레임을 늘림