가상 메모리와 스레싱

라멘커비·2023년 6월 29일

CS

목록 보기
1/4

Virtual Memory

키워드

MMU(메모리관리장치)
Page Table
TLB
Page Fault
Swapping

가상 메모리

  • 가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 사용자들에게 매우 큰 메모리로 보이게 만드는 기법이다.
  • 가상주소(logical address)가 주어지며, 실제 메모리상에 있는 주소를 실제 주소(physical address)라고 한다. 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 실제주소를 의식할 필요 없이 프로그램을 구축할 수 있다.
  • 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어있는 Page Table로 관리된다. 이때 속도 향상을 위해 TLB를 쓴다.
    • TLB는 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시이다. Page Table에 있는 리스트를 보관하며 CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는 캐시 계층이다.

스와핑

  • 만약 가상 메모리에는 존재하지만 실제 메모리인 RAM에는 현재 없는 데이터나 코드에 접근할 경우 페이지 폴트가 발생한다.
  • 이때 메모리에서 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와 쓰는 것을 스와핑(swapping)이라고 한다.
  • 이를 통해 마치 페이지 폴트가 일어나지 않은 것처럼 만든다.

페이지 폴트

  • 페이지 폴트(page fault)란 프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근할 경우 발생
  • 페이지 폴트와 그로 인한 스와핑은 다음 과정으로 이루어짐
      1. CPU는 물리 메모리를 확인하여 해당 페이지가 없으면 트랩을 발생해서 운영체제에 알린다.
      1. 운영체제는 CPU의 동작을 잠시 멈춘다.
      1. 운영체제는 Page Table을 확인해서 가상 메모리에 페이지가 존재하는지 확인하고, 없으면 프로세스를 중단하고 현재 물리 메모리에 비어 있는 프레임이 있는지 찾는다. 물리 메모리에도 없다면 스와핑이 발동됨.
      1. 비어 있는 프레임에 해당 페이지를 로드하고, Page Table을 최신화.
      1. 중단되었던 CPU를 다시 시작한다.

스레싱

스레싱(thrashing)은 메모리의 페이지 폴트율이 높은 것을 의미하며, 이는 컴퓨터의 심각한 성능 저하를 초래한다.

위 이미지 출처

  • 스레싱은 메모리에 너무 많은 프로세스가 동시에 올라가게 되면 스와핑이 많이 일어나서 발생
  • 다음과 같은 악순환이 반복되어 스레싱이 일어남

    페이지 폴트가 일어나면 CPU 이용률이 낮아짐
    -> 운영체제는 CPU의 가용성을 더 높이기 위해 더 많은 프로세스를 메모리에 올리게 됨
    -> 페이지 폴트 일어남

해결 방법

  • 메모리를 늘린다
  • HDD를 사용한다면 SSD로 바꾼다.
  • 작업 세트
    • 프로세스의 과거 사용 이력인 지역성(locality)을 통해 결정된 페이지 집합을 만들어 미리 메모리에 로드하는 것. 미리 로드하면 탐색에 드는 비용을 줄일 수 있고 스와핑 또한 줄일 수 있다.
  • PFF(Page Fault Frequency)
    • 페이지 폴트 빈도를 조절하는 방법
    • 상한선과 하한선을 만드는 방법
    • 상한선에 도달하면 프레임을 늘리고, 하한선에 도달한다면 프레임을 줄인다.
profile
일단 시작해보자

0개의 댓글