페이지가 주 메모리에 없으면 CPU가 스왑 파일에서 가져옵니다. 따라서 가상 주소에 실제 주소가 없으면 CPU가 디스크에서 가져옵니다. 따라서 가상 주소로의 매핑은 물리적 메모리 또는 디스크의 두 위치 중 하나에있을 수 있습니다. 내 질문은 가상 주소 자체가 어디에 있습니까? 매핑을 수행하려면 CPU가이 가상 주소를 필요로하기 때문입니다. CPU가이 주소를 어디에서 얻습니까? gdb를 사용하여 가상 주소 공간을 살펴볼 때 gdb는 어디에서이 가상 주소를 모두 가져갈 수 있습니까? 예를 들어가상 메모리 주소는 어디에 있습니까?
:
가상 주소 0x420000
페이지의 표 20
RAM 0x800000
여기에 20 (페이지 테이블 항목) RAM에 있습니다. 0x800000 (실제 주소)은 RAM에 있습니다. 0x420000 정보는 어디에 있습니까? CPU는 어딘가에서이 정보가 필요합니까? 그렇지 않으면 주소 변환을 어떻게 수행할까요?
지금 나는 가상 주소 정보가 어디에서 왔는지 알고 있다고 생각합니다. 응용 프로그램 자체에서 pc 카운터를 통해 CPU로 전달한 다음 CPU가 변환을 수행합니다.
어디에도 위치하지 않으며 가상입니다. 유일하게 물리적 인 표현은 운영 체제와 스왑 파일에 의해 관리되는 페이지 매핑 테이블입니다. –
존재하지 않는 우편 주소는 어디에 있습니까? 그들은하지 않습니다. 주소는 실제 존재하지 않습니다. 존재하지 않는 것을 찾기 위해 사용할 수있는 정보입니다. 가상 주소는 단순히 프로세스의 주소 공간에 매핑 된 데이터를 찾는 데 사용되는 정보입니다. 그 자체가 주소는 "거주"하지 않습니다. – jalf
그러나 당신은 어딘가부터 우편 주소를받습니다. 그렇지 않으면 존재를 어떻게 찾을 수 있습니까? –