반응형
virtual Memory 4GB를 physical Address 로 바꾸기 위해서 가장 흔히 쓰는 페이징 기법에 대해 소개한다.
페이징의 공간은 4KB, 128MB, 1GB 다양하게 쓰지만 리눅스에서는 고정적인 4KB를 사용한다
가상 메모리에 4KB 마다 각각의 페이지 번호를 두고 해당 페이지가 사용되면 실제 메모리에 할당되어 쓰인다
만약, 2KB 만 남게되도 나머지를 공란처리하고 고정적인 4KB로 맞춘다
페이징 테이블은 가상메모리 페이징의 번호에 따라 페이징 가상주소, 물리주소가 담겨있는데 이것은 프로세스 PCB에 있다.(프로세스 PCB에 있으니 실질적으로는 메모리에 있다는 말이다)
페이지번호 | 가상주소 | 물리주소 |
page1 | 000000h | 0000h |
page2 | 000005h | 0005h |
page3 | 00000Ah | 000Ah |
페이지는 4KB = 32bit로 구성되는데
0~11 bit는 페이지에서 변위를 나타낸다 .
12~31 bit는 페이지의 번호를 나타낸다.
데이터 또는 코드 | 페이지 |
apple | page1-0 |
banana | page1-1 |
soap | page1-2 |
foo | page1-3 |
변위는 페이징 테이블에 접근했을때 각 페이지번호 마다 적혀있는 물리적주소에 자신의 변위를 더하여 자신의 물리주소를 알수 있게 해주는 정보이다
추가적으로 프로세스가 구동 되었을때 해당 페이지 테이블의 base Address는 별도 레지스터(CR3)에 저장된다
CPU가 가상주소로 접근 시 MMU가 페이지 테이블의 base Address접근해서 물리 주소를 가져온다.
반응형