[WIL] Jungle TIL : Virtual Memory 관련 Keyword 정리.

@developer/takealittle.time·2024년 11월 27일
1

Jungle

목록 보기
20/21

관련 이전글

Weekly - KeyWord

  • Virtual Memory
  • Page Table
  • Translation Lookaside Buffer (TLB)
  • Page Fault
  • Page Replacement Policy
  • Lazy Loading
  • Anonymous Page
  • File-Backed Page
  • Swap Disk
  • Direct Memory Access (DMA)

1. Virtual Memory

세 줄 요약

  1. CPU가 가상 주소 (Virtual Address) 를 생성한다.

    • 가상 주소 =가상 페이지 번호 (VPN) + 오프셋(Offset)
  2. 가상 주소를 페이지 테이블(Page Table)을 통해 관리한다.

  3. 주소 참조가 필요할 때, 가상 주소를 물리 주소로 변환 해 참조한다.

왜? 이렇게 할까? 🤔

  • 각 프로세스마다 물리 메모리 용량에 구애받지 않고 각자의 메모리를 무한히 쓰고있다는 느낌을 받도록 하기 위해서.

2. Page Table

  • 가상 메모리 시스템 (VM System)에서 가상 주소 (Virtual Address)와 물리 주소 (Physical Address)를 매핑하는데 사용되는 자료 구조.

  • 페이지 테이블 엔트리 (PTE : Page Table Entry) 의 집합으로 구성.

  • PTE는 보통 아래와 같은 정보들을 포함 한다.

    • 유효 비트 (Valid bit): 해당 페이지가 물리 메모리에 존재하는지 유무
      (1은 존재, 0은 없음)

    • 프레임 번호: 가상 페이지가 매핑된 물리 페이지의 프레임 번호.

    • 보호 비트: 페이지의 접근 권한
      (읽기,쓰기,실행 가능 여부)

    • 사용 비트: 페이지가 최근에 참조 되었는지.
      (LRU 등 교체 정책에 사용)

    • 수정 비트: 페이지가 수정되었는지를 나타냄.
      (수정된 File Bakced Page라면 Swap-out 이전에 디스크에 이를 기록 해야 함.)

    • 캐시 비트: 해당 페이지가 캐싱 가능한지 여부

2-1. TLB (Translation Lookaside Buffer)

  • 주소 변환 속도를 높이기 위한 캐시 메모리.
    (즉, 페이지 테이블의 캐시 메모리)
    • 페이지 테이블을 반복적으로 참조하지 않고도 가상 주소 → 물리 주소로 빠르게 변환.

TLB의 장점

  1. 빠른 주소 변환
    → TLB는 하드웨어적으로 레지스터 또는 SRAM에 저장되며, 접근 속도가 매우 빠름.

  2. 페이지 테이블 접근 감소
    → 페이지 테이블 조회 시간을 절약 해 시스템 성능 향상.

  3. 효율적인 메모리 사용
    → 자주 참조되는 페이지 정보를 캐싱 해 주소 변환 효율을 극대화.
    (물론, 지역성에 의거)

3. Page Fault

  • 프로세스가 참조하기 위해 요청한 페이지가 물리 메모리에 없을 때 → 'Page Fault 발생'
  • OS는 디스크에서 해당 페이지를 물리 메모리에 로드하고 페이지 테이블을 업데이트.
    • 이 때,데이터가
      디스크 → 물리 메모리로 적재되는 것을 스왑-인(Swap-in)
      물리 메모리 → 디스크로 적재되는 것을 스왑-아웃(Swap-out)
      이라고 한다.

      이번 주차 학습에 DMA keyword가 있는 이유? 💡

      • 바로 이 때 (디스크에서 페이지를 메모리로 올릴 때), DMA 개념이 사용된다!
        • CPU: 나는 안그래도 할 일들이 많으니까, 디스크에 데이터를 로드하는 정도의 일들은 너희들이 알아서 해!
  • 갱신된 페이지 (Dirty Page)의 고려: 운영체제가 교체 대상을 선택할 때, 해당 페이지가 메모리에 할당된 후 변경되었는지를 판단.
    ( Modified Bit/Dirty Bit를 확인하고, 이를 디스크에 변경 내용 기록 )
  • 쓰래싱 (Thrashing): 프로세스가 요구하는 메모리 용량 > 가용 물리 메모리 용량인 경우, 시스템은 '끊임없이' 페이징 (Swap-in, Swap-out 발생) 함.

    • 메모리 페이징 하느라 다른 작업을 못하게 되어 문제!

3-1. Page Replacement Policy

  • 페이지 교체 정책 (Page Replacement Policy): 가상 메모리 시스템에서 물리 메모리가 가득 찼을 때, 교체할 (evict)할, 희생자 페이지(victim)를 선택하는 규칙.
    Page Fault 발생 시 중요한 역할을 하며, 시스템 성능에 큰 영향을 미친다.

0. Optimal

  • 사실, 미래를 알고 있다면 단순하게 앞으로 가장 사용되지 않을 페이지를 교체하면 된다.

  • 장점: 이론적으로 가장 적은 Page Fault를 보장.
  • 단점: 미래의 접근 패턴을 알고 있어야 하기 때문에 실질적으로 구현이 어렵다.

1. FIFO (First-In, First-Out)

  • 정책 설명: 가장 오래된 페이지를 교체.

  • 장점: 구현이 간단.
  • 단점: 오래된 페이지가 자주 사용되는 페이지라면 오히려 성능 저하.

2. LRU (Least Recently Used)

  • 정책 설명: '과거의 기록을 보고' → 가장 오래 전에 사용된 페이지를 교체.

  • 장점: 최대한 자주 사용되는 페이지를 유지하려하므로, 실제 환경에서 좋은 성능이 나온다.
  • 단점: 구현이 복잡하고, 시간 및 공간의 오버헤드가 크다.

2-1. Clock (Second Chance)

  • LRU는 실제 구현이 가능하지만, 연산량의 관점에서 LRU를 '근사'하는 식으로 더 쉽게 구현한다.

  • 정책 설명: 시스템의 페이지에 사용 비트(use bit)를 부여하고, 이 페이지들이 환형 리스트를 이루고 있다고 가정

    → 페이지를 교체해야 할 때, 현재 clock pointer가 가리키고 있는 페이지 P의 use bit가 0인지 1인지를 검사.

    → 1이라면 0으로 설정하고, use bit가 0으로 설정되어 있는 페이지를 찾을 때까지 pointer를 +1 연산하며 이동한다.
    * 페이지 P의 use bit가 1 이라는 것은 최근에 사용된 페이지라는 뜻이며, 이는 바람직한 교체 대상이 아니라는 것을 뜻하므로.

    → use bit가 0인 페이지를 희생자 페이지로 교체한다.

  • 장점: FIFO보다 효율적이고, LRU보다 구현이 간단.
  • 단점: 최악의 경우 페이지를 전부 돌며 use bit를 0으로 설정해야 할 수도.

4. Lazy Loading

  • 지연 로딩 (Lazy Loading): 데이터나 리소스를 실제로 필요할 때(사용할 때)에서야 로드하는 최적화 기법.

왜? 이렇게 할까? 🤔

  • 현재 작업의 지연 시간을 줄일 수 있게 되어 응답성을 개선
    • 즉, 응답 시간이 짧아짐.

  • 경우에 따라 작업을 해야 할 필요 자체를 제거할 수도.
    • 파일이 지워질 때까지 쓰기를 지연하면 쓰기 자체가 필요가 없어진다.

5. Anonymous Page와 File-Backed Page

  • ex) PintOS에서의 VM System 일부
    • 아래 그림에서 Anonymous Page, File-Backed Page에 대한 감을 잡을 수 있다.

5-1. Anonymous Page

  • 파일 시스템에 연결되지 않고, 메모리만 사용하는 가송 메모리 페이지.

    • 프로세스가 힙, 스택, 또는 공유 메모리, 또는 mmap()으로 생성된 익명 메모리 영역 등.
  • 운영체제는 Anonymous Page의 초기 내용을 0으로 초기화 한다.

    왜? 이렇게 할까? 🤔

    • Anonymous Page가 이전에 다른 프로세스에 의해 사용된 경우, 이전 프로세스의 데이터가 그대로 남아있으면 새로운 프로세스가 이 데이터에 접근할 수 있는 보안 취약점이 발생할 수 있다.

5-2. File-Backed Page

  • 디스크의 특정 파일에 매핑된 가상 메모리 페이지.

    • 물리 메모리에 로드 되었더라도, 디스크의 파일이 원본 데이터를 보관.
  • Swap-Out 발생 시, modified-bit (또는 dirty-bit)를 확인하고 디스크에 수정 내용을 반영해주는 작업 필요.

<정리>

특징File-Backed PageAnonymous Page
파일 연관성파일 시스템의 특정 파일과 연결파일과 연결되지 않음
초기화파일의 내용으로 초기화0으로 초기화
스왑 공간 사용파일로 직접 기록 가능스왑 공간에만 저장
사용 사례실행 파일, 라이브러리, 메모리 매핑 I/O힙, 스택, 공유 메모리

6. Swap Disk (Swap Space)

  • 가상 메모리 시스템에서 사용되지 않는 데이터를 임시로 저장하는 디스크 일부 영역.
    • 위에서 Swap-in, Swap-out이 발생하는 디스크의 영역이라고 생각하면 되겠다!

왜? 이렇게 할까? 🤔

  • 물리 메모리는 디스크에 비해 용량이 훨씬 한정적 → 물리 메모리 크기를 초과하는 작업을 Swap Space를 통해 지원한다.
    • 물리 메모리를 추가로 설치하지 않고도 메모리 확장 효과를 제공한다!
    • 여러 프로세스가 동시에 실행될 수 있도록 지원한다.
  • Disk는 보통 바이트, 블럭 단위로 데이터를 저장하는데, Swap space에는 페이지 단위로 데이터를 저장한다.
    • 따라서, 메인 메모리와 swap 작업을 할 때 데이터 변환 과정 없이 효율적으로 사용할 수 있다!

* 참고 자료 / 이미지 출처

profile
능동적으로 사고하고, 성장하기 위한. 🌱

0개의 댓글

관련 채용 정보