paging기법은 앞서 살펴본 MMU에서 두 개의 register만으로 물리적 주소를 알아낼 수가 없다.
process들을 여러 page로 조각내어 frame에 올릴 때 각각의 주소 공간을 page table에 따로 저장해야 하기 때문이다.
p라는 논리적 주소에 d만큼 offset되어 있다.(=d만큼 떨어져 있다.)
보통 페이지 공간은 4KB정도 되며 프로그램마다 여러개의 페이지가 존재한다. 그런데 page table은 각 프로그램마다 존재하며 큰 용량을 요구하기 때문에 레지스터에 저장할 수도 없다. 때문에 메모리에 존재한다.
따라서 실제 데이터를 얻기 위한 메모리 접근은 2번이 필요하다. 주소변환을 위한 page table 접근과 실제 데이터를 얻기 위한 접근을 말한다.
앞서 살펴본 MMU의 두개의 register는 paging에서 page table을 가리키는 page-table base register와 테이블 크기를 보관하는 page-table length register로 사용된다.
paging에서는 두 번의 메모리접근이 필요하기 때문에 속도향상을 위해 TLB(Transition Look-aside Buffer)라는 고속 cache를 사용한다.
TLB에는 빈번히 참조되는 일부의 page table엔트리만을 담고 있기 때문에, 그 이외의 엔트리는 두 번 접근이 필요하다.
TLB가 가지고 있는 주소의 경우 한 번의 접근으로 주소변환하여 메모리접근이 가능하다.
TLB는 논리적 주소를 나타내는 p와 실제 주소인 f값까지 쌍으로 가지고 있어야 하고, 해당 주소를 가지고 있는지 전체를 검색해야 한다. 때문에 parellel search가 가능한 associative register로 구현하고 있다.
page table과 마찬가지로 TLB또한 프로세스마다 존재해야 하기 때문에 context switch될 때 flush해서 모든 엔트리를 비워야 한다.
사용 목적: 시간은 더 걸릴 수 있으나, page table의 공간을 줄이기 위함. 전체 주소 공간에서 낭비되는 주소 공간은 안쪽 테이블이 만들어지지 않으므로 공간을 절약할 수 있다.
주소를 표현하는 공간은 32bit를 쓰고(64bit를 사용하기도 함), virtual memory는 byte를 사용함.
32bit address체계를 쓴다면 2^23만큼을 주소 공간(4GB)을 나타낼 수 있다. 그런데 실제 프로그램이 차지하는 주소 공간이최대 크기보다 적고, 사용되지 않는 공간이 많기 때문에 tow-level page table을 사용한다.
v페이지 하나의 크기가 4KB이고, 각각의 엔트리는 4byte를 차지. 엔트리 수는 1K개이다.
Reference
반효경 -운영체제
http://www.kocw.net/home/search/kemView.do?kemId=1046323
'운영체제' 카테고리의 다른 글
Memory Management4 (0) | 2021.06.30 |
---|---|
Memory Management3 (0) | 2021.06.30 |
Memory Management (0) | 2021.06.29 |
Deadlock (0) | 2021.06.29 |
Process Synchronization (0) | 2021.06.28 |