[CS:APP] 컴퓨터 시스템 9장 (~9.5 메모리 보호를 위한 도구로서의 VM) - 가상 메모리

@developer/takealittle.time·2024년 10월 22일
0

Reading Book

목록 보기
4/5

요점만 간단히.


9.0 가상 메모리

  • 가상 메모리 (Virtual Memory): 메인 메모리의 추상화.

기능

1. '디스크에서 활성화 영역' → '메인 메모리' 로 취급
2. 각 프로세스에 통일된 주소 공간 제공 → 메모리 관리 단순화
3. 각 프로세스의 주소 공간을 다른 프로세스에 의한 손상으로부터 보호.

9.1 물리 / 가상주소 방식

  • 물리 주소 방식: 메인 메모리가 M개의 연속적인 바이트 크기 셀의 배열로 구성.
    각 바이트가 물리주소(Physical Address)를 가지고 있고, 이를 통해 데이터에 접근.

  • 가상 주소 방식:

    1. CPU가 가상 주소 지정으로 가상 주소 (Virtual Address) 생성
    2. 메모리 참조하기 전에 MMU를 통해 적절한 물리 주소로 변환 해 사용

9.2 주소 공간

  • 선형 주소 공간: 주소 공간이 연속적.
  • 주소 공간의 크기: 가장 큰 주소를 표시하는 데 필요한 비트 수.
    ex) N=2ⁿ 주소 갖는 가상 주소 공간은 'n-비트 주소공간'

9.3 캐싱 도구로서의 VM

  • 가상 메모리: 디스크에 저장된 N개의 바이트 크기 셀 배열로 구성.
    각 바이트는 가상 주소를 가지며, 이는 배열의 인덱스로 사용.

  • SRAM (V1 ~ V3 캐시): 메모리 ↔ 디스크 간 징검다리 역할.

  • VM system은 가상 메모리를 규정된 사이즈 블록 단위로 분할 → 분할된 블록 = '가상 페이지'라고 부름.

* 위의 큰 그림을 먼저 이해하고, 안의 디테일한 내용들을 이해하자!

  • 결국, 어떤 데이터를 가져올 때 해당 데이터를 디스크 / 메인 메모리 사이에서 핸들링 하는 것을 운영체제 내의 VM system이 한다.
  • 이는 운영체제가 '가상 주소'와 '페이지 테이블'이라는 자료구조를 갖고 관장한다.

<페이지 테이블>

  • 물리 메모리에 저장된 자료구조로, 운영체제 S/W, MMU 내 주소 번역 H/W, 가상 페이지를 물리 페이지로 매핑.

  • PTE(페이지 테이블 엔트리)의 배열. 1개의 유효 비트와 n개의 주소 필드라고 생각해보자.
    아래의 그림과 같이 생겼다.

  • 아래 그림과 예시들을 보며 페이지 테이블의 동작에 대해 조금 더 이해해보자.

*Page Hit

  • ex) 위 그림에서 VP2에 접근
    1. 가상 주소를 이용해 주소 번역 H/W가 페이지 테이블의 PTE2를 읽어들임.
    2. 'PTE2를 봤더니 유효 비트가 1 이네?' → PTE 내 주소 필드 참조 해 물리 주소 사용.

* Page Fault (=DRAM 캐시 미스)

  • ex) 위 그림에서 CPU가 VP3에 접근
    1. 가상 주소를 이용해 주소 번역 H/W가 페이지 테이블의 PTE3을 읽어들임.
    2. 'PTE3을 봤더니 유효 비트가 0 이네?' → 'Page Fault' 발생페이지 오류 예외 핸들러 호출!
    3. PP3에 있는 희생자 페이지 VP4를 선택.
    4. VP4가 수정된 사항이 있다면 디스크로 다시 복사.
    5. 커널은 VP3를 디스크 → 메인 메모리(PP3 자리)로 복사. → PTE3도 갱신해주고 리턴.
    6. 핸들러가 리턴할 때 오류 인스트럭션을 재시작.

* 페이지 할당

  • ex) malloc을 호출 → VP5가 디스크 상에 공간 만듦. → PTE5를 디스크의 VP5를 가리키도록 함.
    (여기서는 swap 영역을 말하는 듯)

* 지역성

  • 가상 메모리 시스템의 효율 ∝ 지역성

* Thrashing

  • '동작 집합의 크기 > 물리 메모리의 크기'인 경우, 페이지들이 연속적으로 swap 해 들어오고 나가기 반복.

9.4 메모리 관리를 위한 도구로서의 VM (프로세스 간 가상 공간 분리)

  • 운영체제: 각 프로세스 마다 별도의 가상 주소 공간을 제공. → 각 프로세스가 사용하는 메모리 공간을 쉽게 분리할 수 있다.
    *단, 다수의 가상 페이지들이 동일한 공유된 물리 페이지에 매핑 될 수 있다.

9.5 메모리 보호를 위한 도구로서의 VM (권한 문제)

  • 운영체제가 메모리 시스템에 접근하는 것을 제어할 수 있는 수단 제공
  • 별도의 가상 주소 공간을 사용하면 사적 메모리를 다른 프로세스로부터 분리하기 용이하다. (PTE에 아래 그림과 같이 허가 비트를 추가하기)

9.6 주소의 번역

  • N-원소 가상 주소 공간 (VAS) →(매핑)→ M-원소 물리 주소 공간 (PAS)

참고 자료 / 이미지 출처

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

0개의 댓글

관련 채용 정보