|
|
|
|
|
|
|
Windows内核调试
帖子发起人: Thomson 发起时间: 2009-12-07 21:07 下午 回复: 9
|
帖子排序:
|
|
|
|
2009-12-07, 21:07 下午
|
Thomson
注册: 2008-07-03
发 贴: 211
|
|
|
在不启用PAE的情况下,在32位系统上只能看到3.5G,或者3G的物理内存, 即使插入的4G内存.
我BIOS有shadow的,但是要具体讲不是很明白...
求指教.
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-07, 21:34 下午
|
王半仙
注册: 2009-12-07
发 贴: 1
|
|
|
很简单,外设要占用内存地址空间,比如显卡的显存:256M或512M等。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-07, 22:13 下午
|
Thomson
注册: 2008-07-03
发 贴: 211
|
|
|
谢谢.
独立显卡也是用物理地址空间吗?
有没有一张图来说明整个4G空间是怎么映射到物理内存上的呢?
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-07, 22:27 下午
|
格蠹老雷
注册: 2005-12-19
发 贴: 1,303
|
|
|
Thomson, 你可以阅读英特尔的北桥手册,通常在System Address Map一章中有详细描述
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-07, 22:53 下午
|
Coding
注册: 2008-05-31
发 贴: 103
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-07, 23:07 下午
|
麻大烦
注册: 2009-09-01
发 贴: 6
|
|
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-07, 23:29 下午
|
Thomson
注册: 2008-07-03
发 贴: 211
|
|
|
谢谢张老师和coding, 都是非常好的resource.
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-08, 11:14 上午
|
Coding
注册: 2008-05-31
发 贴: 103
|
|
|
至于"独立显卡也是用物理地址空间吗?"的问题。
虽然没有深入的玩过独立显卡,不过比如说
程序要从文件中读出一些纹理来渲染,当一部分独立显卡的显存拥有物理地址的话,就可以直接写到显存中了。
"集成显卡需要额外的物理地址空间吗?"也可以有。
比如说,一块内存它既有一个普通的CPU访问物理地址(总线上的地址),他还有另外一个虚拟的"物理地址",当CPU用这个"虚拟的物理地址"访问内存的时候,这个访存请求会被翻译成实际的物理地址。
据个例子说明为什么要有这种需求。
不如说一块内存作为集成显卡的显存,里面放着一张图片。CPU当然可以根据内存在总线的实际物理地址访问这张图片。不过,如果显卡对于这张图片的布局作了优化,并且这个优化对于程序来说是透明的,那么程序根据位置(X,Y)算出的偏移,进而通过页表得到的物理地址就不是真正想要访问的内存单元了。于是集成显卡就可以预留一段"虚拟"的物理地址空间,然后OS可以在页表中把虚拟地址映射到这段"虚拟的”的物理空间上,当内存控制器发现对这段"虚拟的”的物理空间的访问,可以在翻译一次到真正的物理地址。
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-11, 11:24 上午
|
Thomson
注册: 2008-07-03
发 贴: 211
|
|
|
还有一个问题是,即使是在64位系统上,安装了4G内存,然后用mark 文章里面提到的meminfo -r,来但是PFN的映射,发现总共加起来仍然没有4096M, 我算出来好像是4029M, 不知道是什么问题...4G内存应该就是4096M吧?
meminfo -r信息如下:
Physical Memory Range: 0000000000001000 to 000000000009F000 (158 pages, 632 KB)
Physical Memory Range: 0000000000100000 to 00000000BFDFF000 (785663 pages, 3142652 KB)
Physical Memory Range: 0000000100000000 to 000000013C000000 (245760 pages, 983040 KB)
MmHighestPhysicalPage: 1294336
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
2009-12-15, 16:07 下午
|
skyworth
注册: 2008-06-07
发 贴: 55
|
Re: 32位系统为什么不能完全4G的物理内存?
|
|
|
|
还有些内存是不分页的,并不是所有的内存都是分页内存
内核有一个未分页内存池
|
|
|
IP 地址: 已记录
|
报告
|
|
|
|
高端调试 » 软件调试 » Windows内核调试 » Re: 32位系统为什么不能完全4G的物理内存?
|
|
|
|
|
|