※ 전남대학교 박태준 교수님의 운영체제 강의를 듣고, 정리한 내용입니다.
주소 변환
페이징에선 가상 주소를 VA = <P, O> 로 표현합니다.
- VA ( Virtual Address ) : 가상 주소
- P ( Page number ) : 페이지 번호
- O 혹은 D ( Offset 혹은 Distance ) : 페이지의 처음 위치에서 해당 주소까지의 거리
물리주소는 PA = < F, O > 로 표현합니다.
- PA ( Physical Address ) : 물리 주소
- F ( Frame number ) : 프레임 번호
- O 혹은 D ( Offset, Distance ) : 프레임의 처음위치에서 해당 주소까지의 거리

페이징의 논리 주소 구성
페이지 크기가 4KB ( 2 의 12제곱 ) 이라고 가정한다면, 페이지 내를 표현하기 위해 필요한 주소공간은 12bit 의 크기만큼 필요합니다.
즉, 오프셋은 12bit 로 표현될 수 있습니다.
32bit 논리 주소 체계에서,
- 상위 20bit 는 페이지 번호
- 하위 12bit 는 오프셋이라고 생각해볼 경우,
- 예시로 가상주소 0x12345678 은 0x12345000 ~ 0x12345FFF 에 속함
- 따라서, VA = <12345, 678 > 로 표기할 수 있음

페이지 주소의 물리주소 변환
이후 페이지 테이블에서 물리 페이지 주소를 확인하여 주소를 확인 후, 해당 프레임에 접근하고 678 만큼 떨어진 위치에 접근하는 방식으로 물리 주소에 접근할 수 있습니다.
하지만 이 경우, 접근을 2번이나 해야하다보니 속도가 느리다는 단점이 존재합니다.

Page Table Base Register ( PTBR )
- 프로세스가 페이지 테이블에 빠르게 접근하기 위한 레지스터
- 각 페이지 테이블의 시작 주소는 PTBR 에 저장됨
- Context Switching 시에는 PCB 에 저장

페이지 테이블 매핑
테이블 자체의 관리 방식에 따라 가상주소를 물리주소로 변환하는 방법또한 달라질 수 있습니다.
- 직접 매핑 : 메모리 주소와 페이지의 순소를 일치시켜 매핑
- 연관 매핑 : 일부 페이지만 저장, 순서도 무작위
- 집합 - 연관 매핑 : 순서를 일치시키되, 일정 그룹을 두어 그룹 내에서 저장 ( 둘의 하이브리드 )

Direct Mapping ( 직접 매핑 )
- 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재
- 모든 페이지 테이블을 물리 메모리에 가지고 있는 가장 단순한 방식
- 모든 페이지를 물리 메모리에 가지고 있기 때문에 주소 변환 속도가 빠르지만, 용량낭비가 심함

연관 매핑
- 일부 페이지 정보만 물리메모리 상 테이블에서 관리
- 실제 물리 메모리에 올라와있는 페이지만 관리하기 때문에, 용량 절약
- 나머지 부분은 스왑 영역에 존재함 → 스왑 영역에 따로 전체 테이블이 존재
- 연관 매핑 테이블은 저장된 페이지와 프레임번호가 함께 저장됨
- 저장된 페이지 번호에는 순서가 따로 없기 때문에, 페이지 참조시 모든 테이블을 검색할 필요가 있음
- 이를 위해 병렬 처리 → 별도 로직 존재
- TLB / 연관 레지스터 등으로 캐시
- Miss 시 스왑 영역에 대한 검색이 다시 필요함

집합 - 연관 매핑
- 연관 매핑의 문제점을 개선한 방식
- 만약 메모리에 필요한 프레임이 올라와있지 않은 경우, 스왑영역의 모든 테이블을 검색해야한다는 점
- 페이지 테이블을 같은 크기의 여러 묶음으로 나누고, 그 묶음의 시작 주소를 가진 Set Table ( 혹은 Directory Table ) 을 만들어 관리
- 페이지 테이블 참조시, 디렉토리 테이블을 먼저 참조하여 물리메모리 상에 있는지 확인
- 있다면 해당 주소를 참조하여 필요한 프레임 번호 매핑
- VA = <P1, P2, O>

좋은 글 감사합니다. 자주 방문할게요 :)