page fault가 발생하는 상황이 언제가 있나요, 가상주소와 물리주소의 관계


페이지 폴트는 유저가 유효하지 않은 주소 (NULL, 할당되지 않은 위치)를 읽거나 쓰려고 할때 발생합니다.

페이지 폴트는 하드웨어가 발생하나요, 소프트웨어가 발생하나요?

페이지 폴트는 mmu 하드웨어에 의해서 발생하며, 외부 인터럽트 입니다. 가상주소에 대한 페이지 테이블을 참조했을때 매핑이 없을 경우 발생됩니다.

가상주소와 물리주소의 관계가 어떻게 되나요?

유저 프로그램이 컨트롤 하는 모든 메모리 주소는 가상주소입니다. MMU는 페이지 테이블을 사용하여 가상주소를 물리주소로 변환한 후 DRAM에 저장된 페이지를 읽어옵니다.

가상주소를 물리주소로 변환하는 과정을 설명해주세요

x86-64 체계는 총 4단계의 테이블을 구성하고 있습니다. 모든 프로세스마다 CR3 레지스터에 PML4 테이블의 시작주소를 가지고 있고, 가상주소의 각 9비트씩을 오프셋으로 활용하여 PML4 엔트리를, PDP 엔트리를, PD 엔트리를 , 마지막으로 PT 엔트리를 참조하게 됩니다. 마지막으로 PTE에 들어있는 값은 DRAM의 페이지 시작주소를 가리키게 되고, 가상주소의 하위 12비트를 오프셋으로 실제 주소를 참조하게 됩니다.

물리주소를 참조하기까지의 시간복잡도는 어떻게 될까요?

총 4회로 고정돼있기 때문에 상수시간복잡도를 갖습니다.