프로그램이 보는 주소와 실제 RAM의 주소는 다르다. 그 차이를 메우는 장치가 페이징이고, 변환이 느려지지 않게 받쳐 주는 캐시가 TLB다. 정보처리기사 운영체제의 가상 메모리 단원과 정보관리기술사의 메모리 관리 주제에서 단골로 나오며, 특히 유효 접근 시간 계산은 숫자만 바꿔 반복해서 출제되는 유형이다.
페이징(Paging)은 논리 주소 공간을 같은 크기의 페이지로, 물리 메모리를 같은 크기의 프레임으로 나누어 페이지를 프레임에 임의로 배치하는 기법이다. 외부 단편화가 생기지 않고, 마지막 페이지에만 내부 단편화가 남는다. 핵심 키워드는 페이지 테이블, 페이지 번호(p), 오프셋(d), 프레임 번호(f), 유효 비트다.
페이지 테이블 자체가 메모리에 있으므로 데이터 한 번을 읽으려면 테이블 조회와 데이터 접근, 총 두 번이 필요하다. 여기에 테이블 크기 문제까지 겹친다. 32비트 주소, 4KB 페이지, 항목 4바이트라고 가정하면 페이지 번호가 20비트라서 항목이 220개이고, 프로세스 하나당 테이블이 4MB다.
| 문제 | 원인 | 대응 |
|---|---|---|
| 접근 속도 저하 | 변환마다 메모리 추가 접근 | TLB로 최근 변환 캐싱 |
| 테이블 용량 과다 | 사용하지 않는 영역까지 항목 보유 | 다단계·역 페이지 테이블 |
| 문맥 교환 비용 | 프로세스마다 주소 공간이 다름 | TLB 플러시 또는 ASID 태깅 |
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다. 계산 결과는 코드로 다시 검산했다.
주소 변환 예도 하나 보자. 페이지 크기 4KB(오프셋 12비트)일 때 논리 주소 0x00012A7C는 페이지 번호 0x12(18), 오프셋 0xA7C다. 페이지 테이블이 18번 페이지를 프레임 0x2B에 대응시킨다면 물리 주소는 0x2B × 0x1000 + 0xA7C = 0x2BA7C가 된다.
서술형이라면 정의 → 변환 과정 그림 → 문제점(속도·용량) → TLB와 다단계 구조 → 비교표 순으로 쓰면 흐름이 자연스럽다. 계산형은 식을 먼저 쓰고 단위를 붙이며, 문제에 TLB 검색 시간이 주어졌는지, 테이블이 몇 단계인지 조건부터 확인한다. 실무 연결로는 문맥 교환 때 TLB를 비우면 새 프로세스가 잠시 미스를 연달아 맞는다는 점, 이를 ASID(주소 공간 식별자) 태깅으로 줄인다는 점, 대용량 메모리를 쓰는 데이터베이스나 가상화 환경에서 huge page로 미스를 줄인다는 점을 덧붙이면 좋다.
물리 주소는 프레임 번호에 오프셋을 붙인 값이고, TLB가 변환 접근을 줄여 주며, EAT는 α(ε+m) + (1−α)(ε+2m)이다.
이 글은 학습용 정리이며 실제 시험 문항과 다를 수 있다. 출제 기준은 큐넷·한국산업인력공단 등 공식 공지를 확인하라. 그림은 개념 이해를 위한 도식과 계산 그래프로, 실측 데이터가 아니다.
11월에 일정이 있는 외환전문역 2종 시험을 정리했습니다. 접수, 시험, 합격 발표 날짜를 한 번에 볼…
한국 개발자들이 해외로 떠나는 이유는 연봉만이 아니다. 야근 문화, 수직적 조직, AI 기술 격차, 원격근무…
27일 코스피가 하루 만에 3% 넘게 반등했습니다. 전날 1%대 하락에 이어 지수가 5,500선 언저리에서 출렁이던…
SK하이닉스가 3분기 성적표를 내놓습니다. 시장 평균 전망(FnGuide 컨센서스)대로라면 영업이익이 약 77조 원으로, 분기 기준 사상…
환자 1,000명 중 암 환자가 20명뿐인 데이터로 모델을 만들었는데 정확도가 98%라면 훌륭한 모델일까? 안타깝게도 "모두…
코드를 고칠 때 한 군데만 바꿨는데 엉뚱한 곳이 줄줄이 깨진 경험이 있다면, 그것이 결합도가 높은…