读书人

诚心请问关于Windows内存管理的有关问

发布时间: 2012-04-10 21:03:56 作者: rapoo

诚心请教关于Windows内存管理的问题
想弄明白Windows的内存管理方式,借了本《汇编语言程序设计-从DOS到Windows》看,对书中提到的问题有点想不通,请大家指点。具体如下
(1)Windows内存布局:经常说前2G内存空间是用户空间,后2G内存空间是系统空间,这里说的内存空间是物理地址还是虚拟地址空间?如果是虚拟地址空间,那又怎么可能会有长度为4G的段呢?如果是物理地址空间,这显然有问题了,因为如果我的电脑是512M内存,根本就没系统空间的地方了。希望能给解释一下。

(2分段管理:根据书上说的,每个段的最大长度为4G,这个想不通,比如数据段是4G的话,这一下子不就占了全部的内存空间吗,如果代码段的大小也是4G,那么DS:1000,和CS:1000的所代表的线性地址是不是一样呢?如果不一样,请讲讲为什么?如果一样,请看(3)
(3)如果DS:1000,和CS:1000所代表的线性地址是一样的,那对它们进行转化时得到的物理地址就应该一样的吧,因为CR3(控制寄存器),也就是PDBR是一样的。但这就矛盾了啊。就我个人的想法,应该是DS:1000,和CS:1000所指向的线性地址应该是一样的,在由线性地址往物理地址转换时,先看看是CS还是DS,然后选择不同的CR3来转换,可系统就一个CR3,显然不可行,大家说说到底是怎么实现这个分段管理的

[解决办法]
1 虚拟空间,有 系统分页 虚拟内存,什么的,再说有些地址段没用到,操作系统就不会给他一个内存分页.
2 分段管理这个 16位系统时代的东西了,32位用的是平坦模式,没有分段.
3 DS:1000什么意思? DS赋值了没有?

读书人网 >VC/MFC

热点推荐