운영체제8 - 페이징과 TLB

운영체제를 공부하기 위해 운영체제 아주 쉬운 세 가지 이야기 라는 책을 읽고 공부한 내용을 정리합니다.
잘못되거나 부족한 부분이 있으면 언제든 댓글로 가르침 부탁드립니다.

목차

  1. 페이징
  2. 물리 주소 메모리 접근 과정
  3. TLB

1. 페이징

1.1 개요

세그멘테이션은 가변 크기 의 조각으로 분할하기 때문에 메모리에 빈 공간이 많이 생기는 외부 단편화 문제가 발생한다. 이를 동일 크기 의 조각으로 분할하는 페이징 기법을 통해 해결할 수 있다. 프로세스의 주소 공간을 논리 세그먼트가 아닌 고정 크기의 단위(보통 4KB)로 나누고 이를 페이지 라고 부른다. 또한 상응하는 물리 메모리를 페이지 프레임 이라고 부른다. 그리고 각 페이지와 페이지 프레임의 매칭 정보 및 페이지 관련 정보를 저장하는 자료구조를 페이지 테이블 이라고 한다.

  • PTE : Page Table Entry(페이지 테이블 항목)는 페이지 테이블의 레코드다. 페이지 기본 주소와 Flag 비트가 기록된다.

1.2 장점

  1. 세그먼트와는 달리 힙이나 스택이 어느 방향으로 메모리가 커지는지 생각하지 않아도 되기 때문에 매우 유연하다.
  2. 또한 빈공간 관리가 매우 단순해진다.

1.3 주소 변환

프로세스마다 페이지 테이블을 가지고 있다. 프로세스가 생성한 가상 주소를 물리 주소로 변환하기 위해서는, 가상주소를 가상 페이지 번호(Virtual Page Number, VPN) 와 페이내 데이터의 위치를 나타내는 오프셋으로 분할한다. 이중 오프셋은 물리 주소에서 그대로 사용되고, VPN만 물리 프레임 번호(Physical Frame Number)로 변환되어 물리 주소가 된다.

1.4 페이지 테이블 저장

페이지 테이블은 프로세스가 많아 지는 만큼 커질 수 있다. 따라서 MMU안에 저장하지 않고 메모리나 디스크(스왑)에 저장된다.

  • MMU(Memory Management Unit : 메모리 관리 장치) 이란?
    CPU가 메모리에 접근하는 것을 관리한다. 가상주소를 물리주소로 변환하는 역할을 수행한다.

2. 물리 주소 메모리 접근 과정 : 가상주소를 정확한 물리 주소로 변환하기

  1. 가상주소에서 VPN 추출
  2. 페이지 테이블 자체의 물리 주소를 저장하는 PTBR(Page Table Base Register)과 VPN 이용하여 PTE 반입 (메모리 접근 1회)
  3. PTE를 통해 PFN(Physical Frame Number : 물리 프레임 번호 혹은 물리 페이지 번호)를 추출하고 가상 주소의 오프셋과 함께 물리 주소 변환
  4. 물리주소를 통해 데이터 로드 (메모리 접근 2회)

메모리 참조는 비용이 비싸고 느리다. 그런데 2회나 발생한다. 또한 데이터를 저장하기도 부족한 마당에 페이지 테이블 자체가 많은 메모리를 차지한다. 즉 비효율적이다.

3. TLB

3.1 TLB 란?

위에서 살펴본 바에 따르면, 단순히 페이지 테이블을 이용하여 주소를 변환하는 방식은 매우 비효율적이다. 이를 개선하기 위해 필요한 것이 TLB이다. TLB(Translation-Lookaside Buffer)는 MMU에 소속된 칩으로, 자주 참조되는 가상주소-물리주소 변환 정보를 저장해놓은 캐시이다. 가상 주소로 데이터 접근시, TLB에 먼저 접근하여 변환 정보가 있는지 확인하고 있으면 바로 변환하고 없으면 페이지 테이블에 찾으러 간다. 단, TLB에 변환 정보가 없는 경우(TLB 미스), 페이지 테이블에서 해당 물리 주소를 찾아 TLB에 갱신 후, TLB 미스가 발생한 명령어를 재실행한다.

3.2 TLB의 문제

TLB 정보는 그것을 탑재시킨 프로세스에서만 유효하다. 따라서 다른 프로세스가 동작할 때는 필요없는 정보가 TLB에 남게 된다. 이를 해결하기 위해서는,

  1. 프로세스의 문맥 교환시 TLB를 비우는 비우는 방법 - 빈번하게 발생할 경우 성능에 부담된다.
  2. TLB 내에 프로세스를 식별하기 위한 주소 공간 식별자(Address Space Identifier ASID) 필드는 추가하는 것

3.3 TLB의 캐시 교체 정책

  1. 최저 사용 빈도(LRU)
    사용되지 않은지 오래된 항목일수록, 앞으로도 사용될 가능성이 작으며 교체 대상으로 적합하다는 가정에 근거한다.
  2. 랜덤 정책
    때때로 잘못된 결정을 내릴 수 있지만, 구현이 간단하고 예상치 못한 상황의 발생을 피할 수 있다.(배열의 경우 최악의 TLB 미스 상황 가능)
Published 25 Jul 2019


jaegoon on github