-
페이징 기법
가상 주소의 분할된 각 영역을 페이지(page)라 부르며, 물리 메모리의 각 영역은 프레임(frame)이라 한다. 프레임과 페이지는 크기가 같으며, 둘 다 번호를 매겨서 관리한다. 페이징을 구현하기 위해서는 결국 페이지 번호와 프레임 번호를 매칭하는 테이블을 페이지 테이블을 관리해야 한다.
페이징 기법의 주소 변환
주소 변환 과정
CPU에서 접근하는 모든 논리 주소는 페이지 번호(p)와 페이지 시작 주소로부터의 거리인 offset(d)로 구성된다. 예를 들어 CPU의 비트 수가 m이고, 각 페이지 크기가 2^n이라 하면, 앞의 m - n 비트는 페이지 번호로 사용하고, 뒤의 n개 비트는 페이지 시작 주소로부터의 offset으로 사용한다.
페이지 테이블을 통해 페이지 번호로부터 프페임 번호를 얻은 다음 offset을 그대로 뒤에 붙여주면, 물리 주소를 얻을 수 있는 것이다.
페이지 테이블 관리
페이지 테이블 관리가 복잡한 이유는 각 프로세스마다 페이지 테이블을 하나씩 있기 때문이다. 각 프로세스의 똑같은 n번째 페이지라도 대응되는 프레임의 번호는 달라야 하기 때문에 각 프로세스마다 테이블을 가지는 것이다.
각 프로세스가 메모리에 접근하려 하면 메모리 관리자는 페이지 테이블의 위치를 빠르게 파악해야 한다. 그래서 물리 메모리 내의 각 페이지 테이블의 시작 주소를 페이지 테이블 기준 레지스터(Page Table Base Register, PTBR)에 보관한다. 이러한 PTBR은 각 프로세스의 PCB에 저장된다.
페이지 테이블은 메모리 관리자가 자주 사용하기 때문에 빨리 접근할 수 있어야 하며, 따라서 물리 메모리에서 운영체제 영역의 일부분에 모아놓는다. 동시에 실행하는 프로세스 수가 많을수록 페이지 테이블들이 차이하는 영역이 커진다. 이를 감당하기 위해서는 운영체제 영역이 커지고, 결국 사용자 영역이 줄어들게 된다. 따라서 페이지 테이블의 크기를 적절하게 유지하는 것이 중요하다.
페이징 테이블 매핑 방식
직접 매핑
페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식이다. PTBR을 통해 테이블의 시작 주소를 얻은 다음, 논리 주소값의 앞의 비트들을 페이지 번호로 사용하여 테이블로부터 프레임 번호를 얻는다. 페이지 번호로부터 바로 프레임 번호를 얻어 물리 주소를 얻기 때문에 주소 변환 속도가 빠르다. 그러나 테이블이 메모리를 많이 차지한다는 단점이 존재한다.
연관 매핑
전체 페이지 테이블을 스왑 영역에 두고 일부만 물리 메모리로 가져오는 방식이다. 물리 메모리에 저장된 테이블 일부를 변환 색인 버퍼(Translation Look-aside Buffer, TLB)라 한다. TLB는 일부 페이지만 무작위로 저장되기 때문에 프레임 번호와 대응되는 페이지 번호도 저장되어 있다.
연관 매핑에서는 메모리에 접근하기 위해 먼저 TLB부터 찾아본다. TLB에 원하는 페이지 번호가 있는 경우를 TLB hit, 아닌 경우 TLB miss라 한다. TLB miss가 발생한 경우 스왑 영역에 있는 직접 매핑 테이블을 사용하여 프레임 변호로 변환한다.
연관 매핑은 전체 페이지 테이블을 메모리에 보관하지 않기 때문에 메모리를 절약할 수 있지만, TLB miss가 빈번하게 발생하면 시스템의 성능이 떨어진다. 이는 TLB가 페이지 번호를 무작위로 가지기 때문에, TLB의 모든 페이지 번호를 검색한 후에야 TLB miss를 판별할 수 있기 때문이다.
집합-연관 매핑
앞서 말한 연관 매핑의 단점을 보완한 방식으로, 디렉터리 매핑(directory mapping) 또는 멀티페이지 매핑(multi-page mapping)이라고도 한다. 페이지 테이블을 같은 크기의 여러 묶음으로 나누고, 각 묶음의 시작 주소를 가진 디렉터리 테이블을 만들어 관리한다. PTBR은 디렉토리 테이블의 시작 주소를 저장한다. 디렉터리 테이블은 해당 묶음이 메모리의 어느 주소에 있는지, 혹은 스왑 영역에 있는지를 저장한다. 따라서 스왑 영역에 있는지 여부를 바로 판단할 수 있다.
집합-연광 매핑의 경우 가상 주소의 비트들을 3등분한다. 첫번째 부분은 디렉터리 테이블 안에서의 묶음 페이지 테이블의 번호, 두번째 부분은 묶음 페이지 테이블 안에서의 페이지 번호에 해당한다.
역매핑
역매핑의 경우 프레임 번호를 기준으로 테이블을 작성하여, 각 프레임이 어느 프로세스의 몇번째 프레임과 대응되는지를 역매핑 테이블에 저장한다. 테이블에 원하는 데이터가 없으면 스왑 영역에서 가져온다. 그러나 테이블을 다 검사해야 하기 때문에 검색 시간이 낭비된다.
Reference
'운영체제' 카테고리의 다른 글
가상 메모리 개요 (0) 2022.07.14 메모리 분할 방식 (0) 2022.07.08 단일 프로그래밍의 메모리 할당 (0) 2022.07.06 메모리 관리 및 메모리 주소 (0) 2022.07.03 교착 상태 - (2) 해결 방법 (0) 2022.06.19