0
주소를 0xABCD
이 0xFFFFFF800000ABCD
이되도록 사용자 정의 운영 체제 커널을 높은 메모리에 리베이스하는 방법은 무엇입니까? (커널은 부트 로더에 의해 주소 0x100000
에서 이미로드되었습니다.) 현재 솔루션은 매핑되지 않은 주소에 페이지 폴트를 생성합니다. 이는 IDT가 아직 초기화되지 않았기 때문에 트리플 폴트로 에스컬레이션됩니다.커널을 높은 메모리로 리베이스
왜 중요한가요? 맵이있는 OS를 사용하려는 경우 편리한 공간에 넣으십시오. 이미 실제 주소 001xxxxx를로드하고 실제 001xxxxx를 가상 01xxxxxx에 매핑하는 맵을 설정하면 다른 속임수없이 실제 가상으로 전환 할 수 있어야합니다. 가상 페이지 0xFFFFFF에서 OS 페이지를 복제하고 싶다면 ... 메모리 맵을 수정하는 것만으로도 충분하다. –