페이징 주소 변환과 TLB, 유효 접근 시간 계산으로 이해하는 가상 메모리 (정보처리기사)

프로그램이 보는 주소와 실제 RAM의 주소는 다르다. 그 차이를 메우는 장치가 페이징이고, 변환이 느려지지 않게 받쳐 주는 캐시가 TLB다. 정보처리기사 운영체제의 가상 메모리 단원과 정보관리기술사의 메모리 관리 주제에서 단골로 나오며, 특히 유효 접근 시간 계산은 숫자만 바꿔 반복해서 출제되는 유형이다.

페이징은 논리 주소를 페이지 번호와 오프셋으로 쪼개 프레임에 대응시킨다

페이징(Paging)은 논리 주소 공간을 같은 크기의 페이지로, 물리 메모리를 같은 크기의 프레임으로 나누어 페이지를 프레임에 임의로 배치하는 기법이다. 외부 단편화가 생기지 않고, 마지막 페이지에만 내부 단편화가 남는다. 핵심 키워드는 페이지 테이블, 페이지 번호(p), 오프셋(d), 프레임 번호(f), 유효 비트다.

주소 변환은 페이지 테이블 조회와 오프셋 결합, 두 단계로 끝난다

  1. CPU가 낸 논리 주소를 상위 비트(페이지 번호 p)와 하위 비트(오프셋 d)로 나눈다.
  2. 페이지 테이블의 p번째 항목에서 프레임 번호 f를 읽는다. 유효 비트가 0이면 페이지 부재 인터럽트가 발생한다.
  3. 물리 주소 = f × 페이지 크기 + d. 오프셋은 변하지 않고 그대로 붙는다.
페이징 주소 변환과 TLB 흐름을 나타낸 개념도
그림 1. 페이징 주소 변환과 TLB 흐름 (개념도). 실측 데이터가 아니다.

페이지 테이블이 메모리에 있으면 접근 한 번이 두 번으로 늘어난다

페이지 테이블 자체가 메모리에 있으므로 데이터 한 번을 읽으려면 테이블 조회와 데이터 접근, 총 두 번이 필요하다. 여기에 테이블 크기 문제까지 겹친다. 32비트 주소, 4KB 페이지, 항목 4바이트라고 가정하면 페이지 번호가 20비트라서 항목이 220개이고, 프로세스 하나당 테이블이 4MB다.

문제 원인 대응
접근 속도 저하 변환마다 메모리 추가 접근 TLB로 최근 변환 캐싱
테이블 용량 과다 사용하지 않는 영역까지 항목 보유 다단계·역 페이지 테이블
문맥 교환 비용 프로세스마다 주소 공간이 다름 TLB 플러시 또는 ASID 태깅

TLB는 최근 변환 결과를 담은 연관 메모리 캐시다

TLB(Translation Lookaside Buffer)는 (페이지 번호, 프레임 번호) 쌍을 저장하는 소형 고속 캐시로, 모든 항목을 동시에 비교하는 연관 검색을 한다. 히트면 메모리의 페이지 테이블을 건너뛰고, 미스면 테이블을 읽은 뒤 그 결과를 TLB에 채운다. 한 번에 커버하는 주소 범위, 즉 TLB 도달 범위는 항목 수 × 페이지 크기다. 항목이 64개, 페이지가 4KB면 256KB에 그친다. 그래서 지역성이 좋은 프로그램일수록 유리하고, 큰 페이지(huge page)는 도달 범위를 넓히는 수단이 된다.

변환 방식은 표 크기와 속도 사이의 균형으로 고른다

기법 원리 장점 한계
단일 단계 테이블 페이지마다 항목 하나를 배열로 보관 구조가 단순, 변환 빠름 주소 공간이 크면 테이블이 거대
다단계 테이블 테이블을 트리로 나눠 쓰는 영역만 생성 (예: 10+10+12비트) 메모리 절약 미스 시 접근 횟수 증가
해시 테이블 페이지 번호를 해시해 연결 리스트 탐색 넓은 주소 공간에 적합 충돌 처리 필요
역 페이지 테이블 물리 프레임마다 항목 하나, 시스템 전체 하나만 유지 테이블 크기가 물리 메모리에 비례 탐색이 느려 해시와 병행, 공유 구현이 복잡

유효 접근 시간은 히트율에 따라 선형으로 변한다

TLB 검색 시간을 ε, 메모리 접근 시간을 m, 히트율을 α라 하면 단일 단계 테이블의 유효 접근 시간(EAT)은 다음과 같다.

EAT = α(ε + m) + (1 − α)(ε + 2m)

ε = 10ns, m = 100ns, α = 90%이면 0.9 × 110 + 0.1 × 210 = 99 + 21 = 120ns다. 히트율이 98%면 112ns, 80%면 130ns로, 히트율이 10%포인트 떨어질 때마다 약 10ns씩 늘어난다. 2단계 테이블이면 미스 비용이 ε + 3m = 310ns가 되어 α = 90%에서 0.9 × 110 + 0.1 × 310 = 130ns다. 계산 결과는 코드로 다시 검산했다.

TLB 히트율에 따른 유효 접근 시간 변화 그래프
그림 2. 히트율별 유효 접근 시간. 위 공식과 가정값으로 계산한 그래프이며 실측 데이터가 아니다.

주소 변환 예도 하나 보자. 페이지 크기 4KB(오프셋 12비트)일 때 논리 주소 0x00012A7C는 페이지 번호 0x12(18), 오프셋 0xA7C다. 페이지 테이블이 18번 페이지를 프레임 0x2B에 대응시킨다면 물리 주소는 0x2B × 0x1000 + 0xA7C = 0x2BA7C가 된다.

답안에는 정의, 계산식, 문맥 교환 영향까지 함께 써야 점수가 난다

서술형이라면 정의 → 변환 과정 그림 → 문제점(속도·용량) → TLB와 다단계 구조 → 비교표 순으로 쓰면 흐름이 자연스럽다. 계산형은 식을 먼저 쓰고 단위를 붙이며, 문제에 TLB 검색 시간이 주어졌는지, 테이블이 몇 단계인지 조건부터 확인한다. 실무 연결로는 문맥 교환 때 TLB를 비우면 새 프로세스가 잠시 미스를 연달아 맞는다는 점, 이를 ASID(주소 공간 식별자) 태깅으로 줄인다는 점, 대용량 메모리를 쓰는 데이터베이스나 가상화 환경에서 huge page로 미스를 줄인다는 점을 덧붙이면 좋다.

시험 직전 한 줄 요약

물리 주소는 프레임 번호에 오프셋을 붙인 값이고, TLB가 변환 접근을 줄여 주며, EAT는 α(ε+m) + (1−α)(ε+2m)이다.

이 글은 학습용 정리이며 실제 시험 문항과 다를 수 있다. 출제 기준은 큐넷·한국산업인력공단 등 공식 공지를 확인하라. 그림은 개념 이해를 위한 도식과 계산 그래프로, 실측 데이터가 아니다.

Leave a Comment