OS

[운영체제] 페이징 과 TLB

ch010104 2025. 5. 14. 14:08

1. 페이징의 기본 구조

  • 운영체제는 **각 프로세스마다 페이지 테이블(Page Table)**을 하나씩 가짐
    - 즉, 페이지 테이블은 주기억장치에 위치 ( OS 주소 공간 내)
  • 페이지 테이블은 가상 주소의 페이지 번호를 실제 물리 메모리의 프레임 번호로 변환해주는 역할을 함.
    - 프로세스 실행 중에 하나의 데이터를 접근하려면,두 번의 기억장치 접근이 필요(한 번은 페에지 테이블, 한 번은 데이터 접근)
  • 보통 이 페이지 테이블은 운영체제의 주소 공간 내 RAM에 저장되어 있음

2. 메모리 접근 시간과 성능 문제

프로세스가 메모리 내 데이터를 읽기 위해서는 다음과 같은 두 번의 접근이 필요

  1. 페이지 테이블 접근: 가상 주소를 물리 주소로 변환
  2. 실제 데이터 접근: 물리 주소로 원하는 데이터를 읽기

➤ 이런 방식은 메모리 접근 시간이 두 배로 증가하게 되므로 성능에 큰 영향을 줌.


3. 성능 향상을 위한 해결책: TLB

이 문제를 해결하기 위해 등장한 것이 바로 **TLB (Translation Lookaside Buffer)**

 

1) TLB란?

  • 연관 메모리(Associative Memory) 또는 연관 레지스터라고도 불림
  • 최근에 사용된 페이지 테이블 항목들을 저장하는 고속 캐시
    - 페이지 테이블은 메모리의 OS안에 존재, 페이지 테이블에서 최근에 참조한 것을 TLB에 넣음(캐싱)
    - 이후에 참조할 때 TLB에 있는 정보일 경우 바로 사용 가능
  • 병렬 검색이 가능하여, 매우 빠르게 페이지 번호를 찾을 수 있음

2) 주소 변환 과정

  1. CPU가 가상 주소를 생성하면 먼저 TLB를 참조
  2. TLB hit: 해당 페이지 번호가 TLB에 존재 → 바로 프레임 번호 얻음
  3. TLB miss: TLB에 없으면 → 일반 페이지 테이블(RAM)에 접근하여 매핑

4. TLB 성능 연습문제 예시

문제:

TLB 접근 시간 = 10ns,메인 메모리 접근 시간 = 20ns

TLB miss 시 데이터 참조에 걸리는 시간은?

정답:

  • TLB miss → 페이지 테이블 접근 (20ns) + 실제 데이터 접근 (20ns) = 40ns

5. 페이지 보호 기능 (Protection)

페이징은 단순한 주소 변환 외에도 보호 기능을 제공

  • 각 페이지마다 읽기/쓰기 권한을 설정할 수 있는 보호 비트 존재
  • MMU는 주소를 변환할 때 보호 비트를 검사함
  • 예를 들어, 읽기 전용 페이지에 쓰기를 시도하면 → MMU가 인터럽트를 발생시켜 오류 처리

6. 페이지의 공유 (Shared Pages)

페이징의 또 다른 큰 장점은 여러 프로세스가 특정 페이지(특히 코드)를 공유할 수 있다는 점.

 

✏️ 예시: 문서 편집기 사용

  • 40명의 사용자가 150KB 코드 + 50KB 데이터로 구성된 문서 편집기를 사용 중
  • 페이지 공유 없을 경우: 40 × (150 + 50) = 8000KB 필요
  • 코드 영역만 공유할 경우:
    • 코드: 150KB (공유)
    • 데이터: 40 × 50 = 2000KB
    • 총합: 150 + 2000 = 2150KB
  • ➤ 5850KB의 메모리를 절약할 수 있음!