[운영체제] 페이징(Paging)이란? 페이지 테이블이란?
- Computer Science/[운영체제]
- 2021. 12. 10.
블로그 이사합니다
아래에서 확인 가능합니다.
https://code-lab1.com/%ED%8E%98%EC%9D%B4%EC%A7%95/
페이징(Paging)이란?
페이징이란 논리주소의 메모리를 고정된 크기의 페이지(Page)로 나누어 관리하는 기법이다.
페이징은 아래와 같은 특징들을 갖고 있다.
- 물리주소 공간(Physical address)은 연속적이지 않을 수 있다(noncontiguous)
- 페이지는 모두 같은 크기를 가진다.
- 물리주소 공간을 페이지와 같은 사이즈로 나눈 것들을 프레임(Frame)이라고 한다.
- 페이지 사이즈(=프레임 사이즈)는 하드웨어에 의해 정해진다.
- 페이지의 크기는 일반적으로 2의 제곱수를 사용한다. 일반적으로 4KB(2^12) ~ 1GB(2^20)
- 페이지 테이블(page table)을 이용해 논리주소에서 프레임을 가리키는 물리주소로 매핑한다.
- 외부 단편화는 발생하지 않으나, 내부 단편화는 발생한다.
단편화에 대해서 잘 모른다면 다음 포스팅을 참고하자.
페이지 테이블(Page Table) 이란?
페이지 테이블은 논리주소의 페이지를 물리주소의 프레임으로 매핑시켜주는 정보를 담고 있는 테이블이다.
페이지 테이블은 다음과 같은 특징들을 갖고 있다.
- 페이지 테이블은 per-process 데이터 구조이다. 즉, 모든 프로세스가 페이지 테이블을 가지고 있다.
- 페이지 테이블은 메인 메모리에 저장된다.
- Page Table Base Register(PTBR)가 페이지 테이블을 가리키고 있다.
- Page Table Length Register(PTLR)가 페이지 테이블의 사이즈를 가리키고 있다.
- 이러한 레지스터들의 내용은 PCB에 저장되어 있다. 따라서 문맥교환(context switching)이 일어날 때 교체된다.
- 모든 data/instruction 접근은 두 번의 메모리 접근이 필요하다 -> 페이지 테이블에 접근하는 overhead가 존재한다.
- 한 번은 페이지 테이블 접근, 한 번은 실제 physical 메모리 접근
- 두번의 메모리를 접근해야 하는 문제는 fast-lookup hardware cache라고 불리는 associative memory 혹은 translation look-aside buffers(TLBs)를 이용해 해결할 수 있다.
PCB와 문맥교환에 대해 잘 모르겠다면 다음을 참고하자.
반응형