프로세스를 일정한 크기의 page로 잘라서 메모리에 적재하는 가상메모리와 물리메모리의 매핑 기술
외부 단편화 해결 방법입니다. 논리적 주소를 동일한 크기로 자르고 물리적 주소도 동일한 크기로 잘라 자투리 공간(hole)이 발생하지 않도록 하는 기법입니다.
가상기억장치를 모두 같은 크기의 블록으로 편성합니다(고정분할)! 이때 일정한 크기를 가진 블록이 페이지가 됩니다. 논리적 메모리의 나누어진 블록을 Page, 물리적 메모리의 나누어진 블록을 Frame이라고 합니다. (다른 의미가 있는게 아니라 어떤 대상이냐에 따라 구별하기 위해 명칭만 다릅니다) 이렇게 되면 hole이 프로세스 영역 외부에 생겨 발생하는 외부 단편화를 해결할 수 있겠죠?! 프로세스가 (page 크기)에 나누어 떨어지지 않을 경우 내부 단편화는 해결할 수 없습니다. 하지만 내부 단편화는 외부 단편화에 비해 낭비되는 메모리 공간은 무시할 정도로 작은 크기(page size - 1)입니다 ^-^
그럼 이렇게 조각난 프로세스들은 어떻게 실행할 수 있을까요? page, frame을 매핑해 마치 연속적인거처럼 연결해야할텐데요~ 바로 Page Mapping Table을 사용합니다!
정상적으로 프로세스를 실행하기 위해 사용하는 MMU의 재배치 레지스터 여러개
논리주소는 페이지번호, 변위가져서 논리주소를 분리하고... 십진수로 바꿔서 페이지테이블의 페이지번호 알아내고.. 물리주소 알아내서 프레임 시작주소를 알아내고.. 이런 과정이 있는데 자세히는 다루지 않겠습니다.
결국 실질적으로 메모리에 위치한 변수에 접근하기 까지 (페이지 테이블) -> (참조) -> (논리주소 to 물리주소 변환) -> (접근!) 이런 depth가 있습니다. 이런건 페이징 성능에 큰 영향을 끼치게 되죠! 이를 TLB(Translation Lock aside Buffer)라는 페이지 테이블을 위한 소형의 하드웨어 캐시를 이용해 해소합니다~