📚 CS/운영체제

[OS] 가상 메모리

수댕ʕت̫͡ʔ 2024. 10. 14. 20:52

가상 메모리란?

가상 메모리란 무엇일까? 가상 메모리 (virtual memory)는 메모리 관리 기법 중 하나이다.실제로 사용 가능한 물리적 메모리 RAM보다 더 큰 메모리를 프로그램에 제공하는 것처럼 보이게 한다. 이를 통해서 프로그램은 더 많은 메모리를 사용할 수 있는 것처럼 동작하게 되고, RAM의 한계를 극복하는데 도움을 주는 것이다.

 

위키피아

 

여기서 메모리관리장치(MMU)는 가상 주소를 물리 주소로 변환해주는 역할을 한다. 

 

 

이 주소 정보는 페이지 테이블로 관리된다. 페이지 테이블 안에는 가상 주소와 물리 주소간의 매핑 정보가 존재한다. CPU는 가상 주소를 통해 메모리에 접근하고, MMU는 페이지 테이블을 참조해서 가상 주소를 실제 물리 메모리 주소로 변환해주는 것이다.

 

여기서 TLB라는 캐시 메모리를 이용한다. TLB는 페이지 테이블의 일부를 캐싱하여 CPU가 직접 페이지 테이블에 가지 않아도 페이지 테이블 리스트에 접근가능하도록 하여 속도를 향상시키는데 도움을 준다.

 

🙋‍♀️ 먼저 여기서 페이지와 프레임을 구분하는 것이 중요하다.

 

페이지는 가상 메모리를 사용하는 최소 크기 단위를 의미한다.

프레임은 실제 메모리를 사용하는 최소 크기 단위를 의미한다.

 

 

페이지 폴트

가상 메모리에는 존재하지만 실제 메모리인  RAM에는 존재하지 않을 때, 페이지 폴트가 발생한다. 즉, 프로그램이 메모리에 없는 데이터를 접근하려고 할 때 발생하는 것이다. 페이지 폴트가 너무 자주 발생하면 성능 저하가 발생할 수 있다.

 

스와핑

스와핑은 페이지 폴트가 발생할 때, 메모리에서 당장 필요하지 않는 영역을 하드디스크에 옮기는 과정이다. 그리고 하드디스크의 일부분을 메모리인것처럼 불러와서 쓰는 것을 말한다. 필요할 때는 다시 하드디스크에서 메모리로 불러와 사용한다. 

 

🔊 페이지 폴트가 발생할 때, 스와핑 과정

1) 어떤 명령어가 가상 주소에 접근했지만 해당 페이지가 없다면 트랩이 발생되어 운영체제에게 알리게 된다.

 

2) 운영제체는 실제 디스크로부터 사용하지 않은 프레임을 찾는다.

 

3) 해당 프레임을 실제 메모리에 가져와서 페이지 교체 알고리즘을 기반으로 특정 페이지와 교체한다.

 

4) 페이지 테이블을 갱신시키고 해당 명령어를 다시 시작한다.

 

 

스레싱 

스레싱 (Thrashing)은 페이지 폴트율이 높아져서 CPU 이용률이 급격히 낮아지는 현상을 말한다. 메모리에 너무 많은 프로세가 동시에 올라가면 스와핑은 자주 발생한다. 그러면서 페이지 폴트가 증가하고 CPU 사용률이 낮아지는 것이다. 그때, CPU 사용률을 높이기 위해서 더 많은 프로세스를 메모리에 올리게 되고, 이는 계속된 악순환으로 반복되는 것이다.

 

이때 해결할 수 있는 방법이 바로 작업 세트와 PFF가 있는 것이다.

 

1️⃣ 작업 세트

작업 세트는 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합이다. 즉, 지역성을 통해 미리 자주 사용되는 페이지를 메모리에 로드하여, 불필요한 페이지 폴트를 줄이는 것이다.

 

2️⃣ PFF (Page Fault Frequency)

페이지 폴트가 발생하는 빈도를 조절하는 방법이다. 상한선과 하한선을 만들어서 상한선에 도달하면 프레임을 늘리고 하한선에 도달하면 프레임을 줄이는 것이다.

 

 

https://ahnanne.tistory.com/15

 

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

들어가기 전.. 메모리(memory)란? 메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치임. 메모리는 크게 내부 기억장치인 주기억장치와 외부 기억장치인 보조 기억장치

ahnanne.tistory.com

https://velog.io/@anjaekk/OS-Thrashing

 

[OS] 스레싱(Thrashing)과 해결방법

Thrashing과 해결방법

velog.io

https://lordofkangs.tistory.com/626

 

[OS] 가상메모리(Virtual Memory)란?

가상메모리에 대해서 알아보기 전에, 우선 CPU부터 간략히 알아보자. 32bit CPU, 64bit CPU라는 말을 많이 들어보았을 것이다. 여기서 32bit와 64bit는 무엇일까? 바로. CPU가 접근할 수 있는 메모리(RAM) 주

lordofkangs.tistory.com

https://product.kyobobook.co.kr/detail/S000001834833

 

면접을 위한 CS 전공지식 노트 | 주홍철 - 교보문고

면접을 위한 CS 전공지식 노트 | 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지! CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다! 개발자 면

product.kyobobook.co.kr