Computer Science

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

Supreme_YS 2022. 3. 6. 12:00

가상 메모리란?

  • 물리적인 메모리의 크기 한계를 극복하기 위한 기술
  • 가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할 수 있다. (수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법)

가상메모리가 구동하는 아이디어

  1. cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다.
  2. 가상메모리는 실제 메모리를 참조한다.

1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다.

MMU(Memory Management Unit): CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치.

가상 메모리의 구동 아이디어

페이징 시스템(Paging System) : 페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다.

  • Page : 고정된 크기의 block
  • Paging : 가상메모리와 물리메모리를 연결하는 과정입니다.
  • Paging Table : 연결하는 과정에서 매핑을 위한 테이블입니다.

가상 메모리 구현에 많이 사용되는 페이징 기법

  • 다중 페이징 기법
    • 만약 4GB의 프로세스를 모두 페이지로 만든다면 매핑될 양이 엄청 많아져서 효율적이지않다.
    • 그래서 페이징 정보를 단계별로 나누어서 생성을 하면 필요없는 페이지는 만들지 않아도 된다.(공간절약)
  • 페이징 시스템과 공유 메모리
    • 두개 혹은 N개의 프로세스가 동일한 물리메모리를 참조하여 공간절약과 메모리 할당 시간을 절약할수 있다.

    MMU와 TLB
  • Demanding Page
    • Paging Sytem은 프로세스가 실행을 시작하자마자 page를 다올린다.
    • Demanding Page는 필요할 때만 올린다
      • 프로세스의 모든 데이터를 메모리로 적재하는 것이 아니라, 실행중 필요한 시점에만 메모리에 올린다.
      • 이때, valid/invalid bit가 사용된다.
  • Page Fault
    • 요구되는 페이지만 올리니까 필요할 때 페이지를 찾는 데 없을 수가 있다.
  • 운영체제가 페이지 테이블을 이용하여 페이징하는 순서
    • CPU는 물리 메모리을 확인하여 페이지가 없으면 trap을 발생하여 운영체제에 알린다.
    • 운영체제는 CPU의 동작을 잠시 멈춘다.
    • 운영체제는 페이지 테이블을 확인하여 가상 메모리에 페이지가 존재하는지 확인하고, 없으면 프로세스를 중단한다.
    • 페이지 폴트면, 현재 물리 메모리에 비어있는 프레임을 찾는다.
      • 비어있는 프레임에 해당 페이지를 로드하고, 페이지 테이블을 최신화 한다.
      • 중단되었던 CPU를 다시 시작한다.
  • 근데, 만약에 비어있는 프레임을 찾지 못하면 어떻게 하나?
    • 희생 프레임을 골라서 이를 가상 메모리에 저장 후 필요한 페이지를 물리 메모리에 로드한다.
    • 이 과정에서 페이지 교체 알고리즘이 사용된다.

  • 페이지 교체 알고리즘
    • FIFO : 가장 먼저 물리 메모리에 적재된 페이지를 선택하는 방식
    • LRU : 가장 오랫동안 사용되지 않았던 페이지를 선택하는 방식
    • LRU Approximation : LRU와 같지만, 페이지에 Second-Chance를 준다.

 

'Computer Science' 카테고리의 다른 글

[DB] 트랜잭션이란? Transaction  (0) 2022.03.11
[DB] 인덱스를 사용하는 이유  (0) 2022.03.10
[운영체제] Thread-safe  (0) 2022.03.06
[운영체제] 캐시 메모리, Cache Memory  (0) 2022.03.05
[운영체제] 단편화  (0) 2022.03.05