当前位置: 代码迷 >> 汇编语言 >> 关于windows系统的分段和虚拟地址有关问题
  详细解决方案

关于windows系统的分段和虚拟地址有关问题

热度:8046   发布时间:2013-02-26 00:00:00.0
关于windows系统的分段和虚拟地址问题
windows系统支持分段吗?
      如果支持分段,那么段寄存器如(DS,CS。。。)应该就是存放的是段描述符,而非段基址,那么象:
int   a=9;
  &a   表示的虚拟地址又是怎样得到的呢,难道还要经过查段描述符得段基址在加上32位偏移地址确定得吗,这样会不会很慢?还有如果支持分段+分页,那么虚拟地址得最大寻址空间应该是64T,而我经常听到得windows得最大虚拟内存为4G,这又如何解释呢??

      如果不支持分段,那么我记得微机原理好像没有说过直接经过分页而不经过分段得物理地址得,问一下可以不经过分段而直接分页吗?   CPU有没有提供这种方式?如果没有,那么操作系统又是如何实现得呢??

------解决方案--------------------------------------------------------
我记不清楚了,不过intel IA32 架构好像可以直接就弄一个段,寻址的时候跳过去,也就是直接分页
------解决方案--------------------------------------------------------
windows系统 当然支持分段..看看Windows x.x吧
------解决方案--------------------------------------------------------
lz没有搞清楚虚拟地址,段页式管理内存的实质
------解决方案--------------------------------------------------------
楼主为了这个问题发了好多帖子阿,到汇编版去问问吧。。。
------解决方案--------------------------------------------------------
windows是分段的,但他只使用0x0为基址的一个段,所以WINDOWS的寻址空间是4G(段的最大长度),看上去效果就象直接分页一样.
------解决方案--------------------------------------------------------
当然要分段,你可以查看一下GDT就会明白了
  相关解决方案