中华网通行证
用户名 密码
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  

虚拟内存管理——地址篇
楚水 2000-12-13 14:53:08

  我们知道在电脑使用内存时,由于主板以及价格的限制,主板上的内存是有限的,而无论是操作系统本身,还是每个被执行的应用程序,都要占用内存空间,而且软件的版本升级对内存容量的要求也越来越多。即使你是512兆的内存也要面临物理内存空间被占用的所剩无几的时候,这时候windows就会调用硬盘来支援,也就是我们大家常说的虚拟内存。

  而做为虚拟内存他也是和物理内存一样有地址空间,做为windows98他是使用32位寻址的平滑模式内存地址空间,将有限的物理内存映射到虚拟内存空间,这样每个应用程序就有了4GB(2的32次方)的内存了,当然这是以32位CPU的内存寻址空间为例,而所谓平滑模式,是指地址空间有 0x00000000至0xFFFFFFFF之间是连续的空间(0x代表数值为16进制),不要与Segment:offset的内存模式搞混。

  有了地址,就不能走错了门儿,谁去哪个地址都是由电脑分配好的,而电脑又是如何来分配虚拟内存的地址空间呢?又各自占用多少的空间呢?下表就是这4G空间分配情况。



  从上表可以看出其中0x80000000至0XFFFFFFF的2GB空间是由操作系统、动态连接库(DLL文件)与驱动程序使用,而0x00000000至0x7FFFFFFF的2GB空间是由win32(exe)应用程序等使用。如果大家要想知道程序占用的内存地址可以通过很多软件来看,这次本人为了方便,通过windows98自带的“系统信息工具”切换到“已加载32位模块”来查看内存地址占用的情况,下图是以本人的电脑为例:



                 图一



                 图二

  图一,蓝色部分是部分操作系统、动态连接库(DLL文件)与驱动程序占用的内存地址,注意它是占用0x80000000至0XFFFFFFF 之间的2GB空间的内存地址(蓝框内)。

  图二,蓝色和黑色部分是部分应用程序占用的内存地址,同样也要注意它是占用0x00000000至0x7FFFFFFF之间的2GB空间的内存地址(蓝框内)。

  不知道大家注意到没有,在图二中本人将WIN32程序(.exe)涂成黑色,也许有细心的朋友注意到了。就是这些应用程序的Base address,也就是基地址 ,都是0x00400000,这是为什么呢?这是因为每个WIN32程序是在不同的虚拟机上运行的。有了虚拟机每个WIN32应用程序各自都有独立的内存地址,而且认为全部的4GB空间都由它使用,完全不知道有其他应用程序的存在,所以都是以0x00400000这个起始地址为基地址。而虚拟机的作用也就是让这些应用程序认为自己是在一台独立的电脑上执行,然后windows98就再来处理各程序所送出的信息,进行资源管理,所以不会造成内存地址冲突,互相抢用系统资源,也就达到了多任务的目的(和虚拟光驱意思差不多)。

  由于32位的应用程序各自在虚拟机上执行,即使一个程序死了,也就是“没有响应”。也不会影响其他正在执行的应用程序,按下 Ctrl+Alt+Del(这可是我们常干的事情)把“没有响应”的程序结束任务就行了。16位的就不同了,由于使用同一个虚拟机,例如视窗中的dos程序则是在MS—DOS虚拟机上执行的,共用一个内存地址,如果某个win16程序死了,所有的16位程序也会跟着挂起。

倚天硬件门户
相关报道




本站检索


中华网推荐

·国家级治脑病新药思维源
·中藏药治疗脑病新突破
·治类风湿,强直性脊柱炎
·养肾·痛风·长寿
·肝病泌尿脑萎缩新药介绍
·强直性脊柱炎康复乐园
·让中医辩证不孕不育
·国医治股骨头坏死一绝
·乙肝为何久治不愈?
·二千元垄断批发做老板
·中医中药专治前列腺
·治牛皮癣白癜风已成现实
·专治痛风病的白衣天使
·不孕不育的杏林奇葩
·专卖店零售管理系统




   

科技主编信箱