阅读:10130回复:9
CR3寄存器里存的是物理地址还是虚拟地址?
刚刚看了undocument NT 里面描述的不清楚。
我的理解是CR3 存放的是页目录的物理地址。系统发生进程切换时,会把相应的页目录的物理地址存入CR3寄存器 ??,并把4K的页目录内容映射到0xC0300000 ??4K的页目录里存放的是页表的物理地址?然后再根据这些物理地址取出相应的4K大的页表,依次映射到0xC0000000---0xC03FFFFF ?? 这些都是我的理解,正确吗? |
|
沙发#
发布于:2008-02-12 13:56
我想也是物理地址,因为页目录就是要用作虚拟地址到物理地址转换的;如果是虚拟地址,
系统首先要把该地址转换成物理地址才能找到物理地址中的页目录,而这个转换又要通过 CR3... |
|
板凳#
发布于:2008-02-01 00:15
|
|
地板#
发布于:2008-01-29 10:31
物理地址。。。
|
|
|
地下室#
发布于:2008-01-13 20:25
根据线形地址到物理地址的转换过程,CR3应该是物理地址,否则分页怎么搞
|
|
5楼#
发布于:2008-01-11 10:45
了解这个要看cpu的spec,而不是nt undocument,否则会把人看晕
|
|
6楼#
发布于:2008-01-11 10:44
应用程序和一般驱动访问的是虚拟地址
但是OS里负责页面映射的程序访问页目录表的时候肯定使用物理地址,页表可能也是,而这两部分应该不会被映射到别的应用或驱动的虚拟地址空间的 CR3的说明,amd是在这个文档里 AMD64 Technology AMD64 Architecture Programmer’s Manual Volume 2 http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24593.pdf intel的应该在System Programming Guide里 http://www.intel.com/products/processor/manuals/index.htm |
|
7楼#
发布于:2008-01-11 01:22
cr3里面的是物理地址不是虚拟地址
|
|
8楼#
发布于:2008-01-10 23:02
引用第1楼boly81于2008-01-10 19:02发表的 : cpu的spec是什么? windows开启了分页机制后,访问的所有的地址都是虚拟地址,所以要把页目录和页表也映射到虚拟地址空间。忘了是看那本书上说的了。 |
|
9楼#
发布于:2008-01-10 19:02
页目录和页表可能不会映射成逻辑地址吧
正确答案要看cpu的spec,到intel,amd的网站上下载吧 |
|