1

메모리 칩을 설계 중입니다. 관련 시스템 소프트웨어 질문을하는 데 가장 좋은 장소 인 것 같습니다. ...링 0 프로그램이 실제 메모리 주소를 사용합니까?

최신 x86 프로세서에서 시스템 수준 코드 (보호 링 0)가 실행되고 있습니까 물리적 메모리 주소? 64 비트 사양과 동일합니까?

는 (I 그래서 난 시스템 코드의 주소가 가상/세그먼트 메모리 서브 시스템 여부 통과 여부를 알 알 필요가있다.)

답변

3

그들은 다른 코드로 실행합니다. 링 0과 다른 링 사이의 유일한 차이점은 링 0이 권한있는 명령어를 실행할 수 있으며 따라서 메모리 주소 공간과 구조를 수정한다는 것입니다. 그러나이 권한은 링 0이 다른 코드와 마찬가지로 가상 메모리를 사용할 수 없다는 것을 의미하지는 않습니다. 프로세스가 수정하지 않는다고 가정 할 때 기술적으로 모든 프로세스를 링 0에서 실행하고 동일한 가상 메모리 동작을 유지할 수 있습니다. 가상 메모리 주소 공간없이 덜 특권이있는 링 프로세스를 실행할 수도 있습니다.

+0

아. 하나의 최적화가 있습니다 ... 고맙습니다. – root

1

아니요, 아직 플랫 가상 메모리 모델입니다. 페이지를 잠그기위한 특정 대책이 없으면 드라이버 코드와 데이터를 정상적으로 페이징 할 수 있습니다. 일반적인 블루 스크린 중지 코드는 예를 들어 KERNEL_DATA_INPAGE_ERROR입니다.

실제 메모리 맵핑에 대한 일반적인 호출은 MmAllocatePagesForMdl()입니다.