컴퓨터 공학 & 통신

[개념 정리/운영체제] 가상메모리와 관련 개념들

왈왈디 2023. 7. 25. 22:36
728x90

가상 메모리(virtual memory)

가상 메모리는 OS에서 사용되는 메모리 관리 기법 중 하나로,

컴퓨터가 실제로 이용 가능한 메모리 자원(실제 주소, physical address)추상화하여

사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다.

가상 주소는 MMU와 페이지 테이블(page table)에 의해 실제 주소로 변환된다.

 

*페이지: 가상 메모리를 사용하는 최소 크기 단위

*프레임: 실제 디스크나 메모리를 사용하는 최소 크기 단위

 

페이지 테이블

가상 메모리는 가상 주소와 실제 주소가 매핑 되어있는 페이지 테이블로 관리되며,

이 때 속도 향상을 위해 캐싱 계층인 TLB를 사용한다.

 

가상 주소에서 바로 페이지테이블로 가지 않고,

TLB에 실제 주소가 있는지 확인하고,

만약 없다면 페이지 테이블로 가 실제 주소를 가져온다.

 

페이지 폴트와 스와핑

가상 메모리는 작은 메모리를 매우 큰 메모리로 보이게끔 하는 것이기에

참조하려는 메모리 영역이 실제 메모리 주소에는 없을 수 있다.

 

가상 메모리에는 존재하지만 실제 메모리인 RAM에는 현재 없는

데이터나 코드에 접근하는 경우가 있으며,

이 때 페이지 폴트가 발생한다.

 

페이지 폴트가 발생했을 때,

메모리의 당장 사용하지 않는 영역을 하드디스크로 옮기고 

하드디스크의 일부분을 마치 메모리처럼 불러와 사용하는 것을

스와핑이라고 한다.

 

페이지 폴트 과정

페이지 폴트는 아래와 같은 일련의 과정을 거쳐 발생한다.

 

  1. 어떤 명령어가 유효한 가상 주소에 접근했으나, 해당 페이지가 없다면 트랩이 발생되어 운영체제에 알린다.
  2. 운영체제는 실제 디스크에서 사용하지 않은 프레임을 찾는다.'
  3. 해당 프레임을 실제 메모리에 가져와, 페이지 교체 알고리즘을 기반으로 특정 페이지와 교체한다. 이 때 스와핑이 일어난다.
  4. 페이지 테이블을 갱신시킨 후 해당 명령어를 다시 시작한다.

 

스레싱

스레싱은 메모리의 페이지 폴트율이 높은 것을 의미한다.

스레싱은 메모리에 너무 많은 프로세스가 동시에 올라가게 되면,

스와핑이 많이 일어나게 되면서 발생하는 현상이다.

 

페이지 폴트가 일어나면 CPU 이용률이 낮아지게 되고,

CPU 이용률이 낮아지게 되면, 운영체제는 CPU의 가용성을 높이기 위해

더 많은 프로세스를 메모리에 올린다.

이러한 악순환이 반복되는 것을 스레싱이라고 한다.

 

이를 하드웨어적으로 해결하는 방법으로는

메모리를 늘리거나

HDD를 사용한다면, 더 빠른 SSD로 바꾸는 방법이 있고,

운영체제에서 해결하는 방법은 작업세트PFF가 있다.

 

  • 작업세트(working set): 프로세스의 과거 사용 이력을 기반으로 많이 사용하는 페이지 집합을 만들어 한 번에 미리 메모리에 로드하는 것을 말한다.
  • PFF(page fault frequency): 페이지 폴트 빈도를 조절하는 방법으로, 상한선과 하한선을 만들고 상한선에 도달하면 프레임을 늘리고, 하한선에 도달하면 프레임을 줄이는 방법이다.

 

가상 메모리의 필요성

주기억장치 효율적 관리(스와핑)

하드디스크를 주기억장치에 대한 캐시로 설정하여,

당장 사용하는 영역만 유지하고

쓰지 않는 데이터는 하드디스크로 옮겨 필요할 때에만

램에 데이터를 불러와 올리고

다시 사용하지 않으면 하드디스크로 내림으로써 

램을 효과적으로 관리하게 된다.

 

메모리 관리 단순화

각 프로세스마다 가상 메모리의 통일된 주소 공간을 배정할 수 있어

메모리 관리가 단순해진다.

 

메모리 용량 및 안정성 보장

한정된 공간의 램이 아닌 

거의 무한한 가상 메모리 공간을 배정함으로써

프로세스들끼리 메모리 침범이 일어날 여지를 크게 줄이게 된다.

 

참고: inflearn 강의 'CS 지식의 정석 - 큰돌'

 
728x90