Tech Log

[Operating System] 가상 메모리 본문

Computer Science/Operating System

[Operating System] 가상 메모리

yuhee kim 2023. 1. 28. 18:40

가상 메모리(virtual memory)

메모리 관리 기법 중 하나로, 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 사용자들에게 매우 큰 메모리로 보이게 하는 것.

출처 : 면접을 위한 CS 전공지식 노트(2022)

가상적으로 주어진 주소를 가상 주소(logical address)

실제 메모리 상에 있는 주소를 실제 주소(physical address)

가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환

이를 통해 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다.

 

가상 메모리는 가상 주소와 실제 주소가 매핑되어 있으며,

프로세스의 주소 정보가 들어 있는 페이지 테이블로 관리된다.

이때 속도 향상을 위해 TLB를 사용한다.

*TLB : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시. 페이지 테이블에 있는 리스트를 보관. CPU가 페이지 테이블까지 가지 않아도 주소를 변환할 수 있도록 하여 속도를 향상시키는 캐시 계층.

 

스와핑(swapping)

가상 메모리에는 존재하나 실제 메모리인 RAM에 없는 데이터나 코드에 접근할 경우 페이지 폴트가 발생한다.

이때 메모리에서 지금은 사용하지 않는 영역을 하드디스크로 옮기고,

하드디스크의 일부분을 마치 메모리처럼 불러와 쓰는 것을 스와핑이라 한다.

스와핑을 통해 마치 페이지 폴트가 일어나지 않은 것처럼 만든다.

 

페이지 폴트(page fault)

프로세스의 주소 공간에는 존재하지만 지금 해당 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우 발생한다.

페이지 폴트와 스와핑이 일어나는 과정은 다음과 같다.

 

1. CPU가 물리 메모리를 확인하여 해당 페이지가 없으면 트랩을 발생시켜 운영체제에 알린다.

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

*트랩(trap) : 소프트웨어에 의해 발생하는 인터럽트

 

2. 운영체제는 CPU의 동작을 잠시 멈춘다.

3. 운영체제는 페이지 테이블을 확인하여 가상 메모리에 페이지가 존재하는지 확인한다.

없으면 프로세스를 중단하고 현재 물리 메모리(RAM)에 비어 있는 프레임이 있는지 찾는다.

*프레임(frame) : 실제 메모리를 사용하는 최소 크기 단위

 

4. 물리 메모리에도 없다면 스와핑이 일어난다.

5. 비어 있는 프레임에 해당 페이지를 로드하고 페이지 테이블을 최신화한다.

6. 중단되었던 CPU를 다시 시작한다.

 

스레싱(thrashing)

메모리의 페이지 폴트율이 높은 것을 의미.

이는 컴퓨터의 심각한 성능 저하를 초래한다.

출처 : 면접을 위한 CS 전공지식 노트(2022)

스레싱은 메모리에 너무 많은 프로세스가 동시에 올라가게 되면 스와핑이 많이 일어나서 발생한다.

페이지 폴트가 일어나면 CPU 이용률이 낮아진다.

CPU 이용률이 낮아지게 되면 운영체제는 CPU의 가용성을 더 높이기 위해 더 많은 프로세스를 메모리에 올리게 된다.

이렇게 악순환이 반복되며 스레싱이 일어난다.

 

해결 방법

  • 메모리를 늘리기
  • HDD를 사용한다면 HDD를 SSD로 바꾸기
  • 작업 세트(working set)
  • PFF

 

작업 세트(working set)

프로세스의 과거 사용 이력인 지역성을 통해 결정된 페이지 집합을 만들어 미리 메모리에 로드하는 것이다.

미리 메모리에 로드하면 탐색에 드는 비용을 줄일 수 있으며 스와핑도 줄일 수 있다.

 

PFF(Page Fault Frequency)

페이지 폴트 빈도를 조절하는 방법으로 상한선과 하한선을 만드는 방법이다.

만약 빈도가 상한선에 도달한다면 프레임을 늘리고 하한선에 도달한다면 프레임을 줄이는 것이다.

 

 

참조
  • 주홍철, 면접을 위한 CS 전공지식 노트, 길벗(2022)
Comments