alphapiao
驱动小牛
驱动小牛
  • 注册日期2002-06-21
  • 最后登录2011-05-04
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望155点
  • 贡献值0点
  • 好评度109点
  • 原创分1分
  • 专家分0分
阅读:1515回复:16

一个关于存储器管理的概念性问题,请赐教.

楼主#
更多 发布于:2002-08-19 09:25
我在看<<WINDOWS环境下的设备驱动程序设计>>的时候,看到了这样两句话,我有一点不解
1。在保护模式下的虚拟地址是由两部分构成的:一个16位的段选择器和一个32位的地址偏移量。综合段选择器和地址偏移量,一个保护模式下的应用程序可以访问64TB的虚拟地址空间。
2。VMM采用Inter 86或更新处理器的分页分段内存管理技术,为系统虚拟机建立了32位的虚拟地址空间,操作系统需要管理的内存空间为4GB。

在这上面的两段话中为什么一会说虚拟地址空间是64TB,一会又说是32位的虚拟空间(4GB)呢,不解中,望大家赐教

最新喜欢:

dj_ukyodj_uky...
我的博客:xpddk.bokee.com
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-19 10:15
我的理解:
平坦内存模式一个段可以利用4G的空间(32位)。有16位的段选择器,所以说有64T的虚拟空间,但是我觉得真正能利用的就是4G,其他的是重复算得,正如第二句所说的
“系统虚拟机建立了32位的虚拟地址空间,操作系统需要管理的内存空间为4GB。”

不知道说对了没有,关注中
我不仅要金子,我还要点石成金的手指!
fnight
驱动小牛
驱动小牛
  • 注册日期2001-10-20
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-19 14:56
单个程序可访问虚拟地址空间为4GB,超过则需系统换程序段,段选择器为16位,所以系统可管理的虚拟地址空间为64TB :)
sorry,
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-19 16:01
呵呵,刚看到

由于全局和局部描述符表都可以包含多达8192个描述符,而每个描述符所描述的段的最大值可达4G字节,因此最大的虚拟地址空间可为:
4GB*8192*2=64MMB=64TB
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
Goge
驱动牛犊
驱动牛犊
  • 注册日期2002-07-26
  • 最后登录2004-10-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-19 16:37
在windows中,每个进程在地址编码上是相互独立的。所以每个进程具有自己的4G的虚拟地址空间。至于64TB,楼上老大说的没错。
alphapiao
驱动小牛
驱动小牛
  • 注册日期2002-06-21
  • 最后登录2011-05-04
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望155点
  • 贡献值0点
  • 好评度109点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2002-08-19 16:48
单个程序可访问虚拟地址空间为4GB,超过则需系统换程序段,段选择器为16位,所以系统可管理的虚拟地址空间为64TB :)


\"VMM采用Inter 86或更新处理器的分页分段内存管理技术,为系统虚拟机建立了32位的虚拟地址空间,操作系统需要管理的内存空间为4GB。\"

64TB与4GB好象矛盾了呀???
我的博客:xpddk.bokee.com
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-20 09:20
4G是实在的,32位地址决定的,至于64T,是把这4G重复算了16k次,OS管理的就4G,而在用户使用上,每个段都是4G可用(当然你用不了那么多了),然后有多个进程,好像每个进程都有4G。
我不仅要金子,我还要点石成金的手指!
alphapiao
驱动小牛
驱动小牛
  • 注册日期2002-06-21
  • 最后登录2011-05-04
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望155点
  • 贡献值0点
  • 好评度109点
  • 原创分1分
  • 专家分0分
7楼#
发布于:2002-08-20 12:15
操作系统能访问的虚拟地址空间是64TB,它需要管理的空间是4GB,难道能访问的空间与需要管理的空间不一样大吗?
我的博客:xpddk.bokee.com
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-20 13:14
64T只是给你的感觉(我觉得根虚拟的概念有点像),实际上管理的就是4G。
0-4m,DOS区
4m-2G,用户进程私有
2G-3G,共享内存区
3-4G,系统内存区
好像是这样的把。
我不仅要金子,我还要点石成金的手指!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2002-08-20 14:02
64T只是给你的感觉(我觉得根虚拟的概念有点像),实际上管理的就是4G。
0-4m,DOS区
4m-2G,用户进程私有
2G-3G,共享内存区
3-4G,系统内存区
好像是这样的把。
 

这是98的
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-08-20 14:43
64T只是给你的感觉(我觉得根虚拟的概念有点像),实际上管理的就是4G。
0-4m,DOS区
4m-2G,用户进程私有
2G-3G,共享内存区
3-4G,系统内存区
好像是这样的把。
 


加入真的给计算机插上64T内存,他能管吗? :P
fnight
驱动小牛
驱动小牛
  • 注册日期2001-10-20
  • 最后登录2005-06-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-08-20 14:57
 

OS管理的就4G,而在用户使用上,每个段都是4G可用(当然你用不了那么多了)
 

不对!OS是管理64TB,4GB是CPU直接管理的,当程序需要超过4GB时再由OS切换为另4GB,所以程序以4GB为一段。

[编辑 -  8/20/02 by  fnight]
sorry,
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-08-20 15:27
cpu管理是什么意思?4G本来就是虚拟出来的,没有OS支持行吗?

有个问题
一个进程能用4G以上内存吗?
我不仅要金子,我还要点石成金的手指!
emailxj
驱动牛犊
驱动牛犊
  • 注册日期2002-05-15
  • 最后登录2009-04-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-08-20 19:50

根据80x86的cpu功能,运行在保护模式下时,每个段选择器不是dos下的段选择器概念,每个段选择器对应一个段描述符,描述指定内存空间区域的属性,在每个段选择器描述符中,内存开始地址和结束地址都是32位的,所以单从cpu的功能来看,不可能超过4g空间;

但是微软为了其他的应用,使用软件的方法,利用其他一套机制AWE来达到64gb的访问空间,但从没听说过64tb;


alphapiao
驱动小牛
驱动小牛
  • 注册日期2002-06-21
  • 最后登录2011-05-04
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望155点
  • 贡献值0点
  • 好评度109点
  • 原创分1分
  • 专家分0分
14楼#
发布于:2002-08-21 09:11
我想应该是这样的对于每个程序来说都可以使用4G的虚拟地址空间
而操作系统可以管理多个(原理上是16K个)使用4G虚拟地址空间的程序,所以又说可以管理64TB的空间,不知对不对??
我的博客:xpddk.bokee.com
trent
驱动老牛
驱动老牛
  • 注册日期2002-03-01
  • 最后登录2014-09-18
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望185点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-08-21 09:25
我想差不多这意思吧,98的和2k的具体好像有些不一样,可以查查资料,不误人子弟喽 :D :D
我不仅要金子,我还要点石成金的手指!
alphapiao
驱动小牛
驱动小牛
  • 注册日期2002-06-21
  • 最后登录2011-05-04
  • 粉丝0
  • 关注0
  • 积分1004分
  • 威望155点
  • 贡献值0点
  • 好评度109点
  • 原创分1分
  • 专家分0分
16楼#
发布于:2004-07-26 09:30
谢谢~
附件名称/大小 下载次数 最后更新
2004-07-26_jxc.rar (846KB)  1
我的博客:xpddk.bokee.com
游客

返回顶部