首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

CPU有4G寻址空间,如果寻址超过这个范围怎么处理呢

2013-09-16 
CPU有4G寻址空间,如果寻址超过这个范围怎么办呢?假设CPU的地址总线的是32位的,也就是说可以寻找到4G的地址

CPU有4G寻址空间,如果寻址超过这个范围怎么办呢?
假设CPU的地址总线的是32位的,也就是说可以寻找到4G的地址空间,
这4G有内核空间 用户空间,有物理内存有虚拟内存,
如果一个应用程序它所需的寻址是5G或者6G或者10G....
那这时候CPU或者操作系统怎么做呢?
将从硬盘换入虚拟内存吗?

不知道叙述明白了没有……
[解决办法]
不可能提出超越地址界限的请求的,CPU的寻址机制已经进行限定了,那些可以存储地址的寄存器例如EIP、ESP、EBP等等都是32位的,你不可能放一个超出32位的地址进去。
[解决办法]
CPU做不了,操作系统找谁帮忙?执行命令的是CPU,不是操作系统。
[解决办法]
你好像把物理内存和虚拟内存搞混了
[解决办法]

引用:
那如果4G的地址空间不够用怎么办?
会有这种情况吗 这时候是从外存储器进行换入换出吗


在你所描述的情景中,代码只能使用4G的地址空间,是无法超出这个地址空间的。虚拟内存与这个4G地址空间是两回事,你搞混了。虚拟内存是用来解决物理内存空间不足的问题的,物理内存是有限的,但是里面要运行成百上千的进程,不可能一一满足,因此需要把进程的一部分交换到虚拟内存,运行的时候再交换回来,这样每个进程只需要物理内存的一小部分就可以运行了,留在物理内存中的这部分通常称为驻留集,WINDOWS称为workingset。
[解决办法]
AWE:地址窗口化扩展插件,允许在 32 位版本的 Windows 操作系统上使用 4 GB 以上的物理内存。最多可支持 64 GB 的物理内存。
[解决办法]
引用:
AWE:地址窗口化扩展插件,允许在 32 位版本的 Windows 操作系统上使用 4 GB 以上的物理内存。最多可支持 64 GB 的物理内存。

AWE并没有扩展32位的地址空间,只不过通过非分页内存动态映射到进程的驻留集,使进程可以使用4G之外的物理内存而已,但32位的地址空间是没有变的。
[解决办法]
引用:
Quote: 引用:

AWE:地址窗口化扩展插件,允许在 32 位版本的 Windows 操作系统上使用 4 GB 以上的物理内存。最多可支持 64 GB 的物理内存。

AWE并没有扩展32位的地址空间,只不过通过非分页内存动态映射到进程的驻留集,使进程可以使用4G之外的物理内存而已,但32位的地址空间是没有变的。


那是一定的,LZ已经假设了:CPU的地址总线的是32位的,这是改变不了的。
我猜LZ是想访问更多的物理内存。
[解决办法]
如果楼主需要更多的物理内存,windows提供的AWE的确可以做到,除此之外,还可以使用内存映射文件及intel的PAE。
[解决办法]
引用:
那如果4G的地址空间不够用怎么办?
会有这种情况吗 这时候是从外存储器进行换入换出吗


以386为例,实模式寻址4g,保护模式64tb(字母大写)。

[解决办法]
我想到一个问题,不知道谁可以给解答一下,
地址总线是32的,也就是有4G的地址空间,
如果真是内存是小于4g的话,
一个真是物理地址总是可以被访问到的,
也就是映射 某一个虚拟地址到真是物理地址。
但是如果内存是大于4g的,那岂不是有一部分内存是不被映射的。
[解决办法]

热点排行