中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 彻底理解内存概念 转贴 上一主题 | 下一主题
tiancai4126
初级用户





积分 38
发帖 10
注册 2006-11-11
状态 离线
『楼 主』:  彻底理解内存概念 转贴

这几天在论坛里面转悠,像深入学习一下dos,可是遇到些问题,在论坛里面找了很久,也没有个全面详细的帖子,我就转贴一次吧!

经常用dos的人都知道,配置 config.sys 里面经常出现的 emm386.exe,himem.sys。还有什么 扩充内存,扩展内存,上位内存,高端内存区,什么保护模式,真实模式的,把你弄得头痛了吧?没关系只要你细心看完此帖你必定会有收获。

  物理存储器是指实际存在的具体存储器芯片。如主板上装插的内存条和装载有系统的BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片都是物理存储器。
  存储地址空间是指对存储器编码(编码地址)的范围。所谓编码就是对每一个物理存储单元(一个字节)分配一个号码,通常叫作“编址”。分配一个号码给一个存储单元的目的是为了便于找到它,完成数据的读写,这就是所谓的“寻址”(所以,有人也把地址空间称为寻址空间)。
  地址空间的大小和物理存储器的大小并不一定相等。举个例子来说明这个问题:某层楼共有17个房间,其编号为801~817。这17个房间是物理的,而其地址空间采用了三位编码,其范围是800~899共100个地址,可见地址空间是大于实际房间数量的。
  对于386以上档次的微机,其地址总线为32位,因此地址空间可达232即4GB。但实际上我们所配置的物理存储器通常只有1MB、2MB、4MB、8MB、16MB、32MB等,远小于地址空间所允许的范围。从下图中我们可以看到地址空间与物理存储器之间的关系。
  
  好了,现在可以解释为什么会产生诸如:常规内存、保留内存、上位内存、高端内存、扩充内存和扩展内存等不同内存类型。

  各种内存概念

  这里需要明确的是,我们讨论的不同内存的概念是建立在寻址空间上的。
  IBM推出的第一台PC机采用的CPU是8088芯片,它只有20根地址线,也就是说,它的地址空间是1MB。
  PC机的设计师将1MB中的低端640KB用作RAM,供DOS及应用程序使用,高端的384KB则保留给ROM、视频适配卡等系统使用。从此,这个界限便被确定了下来并且沿用至今。低端的640KB就被称为常规内存即PC机的基本RAM区,请看图1。保留内存中的低128KB是显示缓冲区,高64KB是系统BIOS(基本输入/输出系统)空间,其余192KB空间留用。从对应的物理存储器来看,基本内存区只使用了512KB芯片,占用0000至80000这512KB地址。显示内存区虽有128KB空间,但对单色显示器(MDA卡)只需4KB就足够了,因此只安装4KB的物理存储器芯片,占用了B0000至B10000这4KB的空间,如果使用彩色显示器(CGA卡)需要安装16KB的物理存储器,占用B8000至BC000这16KB的空间,可见实际使用的地址范围都小于允许使用的地址空间。
  在当时(1980年末至1981年初)这么“大”容量的内存对PC机使用者来说似乎已经足够了,但是随着程序的不断增大,图象和声音的不断丰富,以及能访问更大内存空间的新型CPU相继出现,最初的PC机和MS-DOS设计的局限性变得越来越明显。

  1.什么是扩充内存?
  EMS工作原理
  到1984年,即286被普遍接受不久,人们越来越认识到640KB的限制已成为大型程序的障碍,这时,Intel和Lotus,这两家硬、软件的杰出代表,联手制定了一个由硬件和软件相结合的方案,此方法使所有PC机存取640KB以上RAM成为可能。而Microsoft刚推出Windows不久,对内存空间的要求也很高,因此它也及时加入了该行列。
  在1985年初,Lotus、Intel和Microsoft三家共同定义了LIM-EMS,即扩充内存规范,通常称EMS为扩充内存。当时,EMS需要一个安装在I/O槽口的内存扩充卡和一个称为EMS的扩充内存管理程序方可使用。但是I/O插槽的地址线只有24位(ISA总线),这对于386以上档次的32位机是不能适应的。所以,现在已很少使用内存扩充卡。现在微机中的扩充内存通常是用软件如DOS中的EMM386把扩展内存模拟或扩充内存来使用。所以,扩充内存和扩展内存的区别并不在于其物理存储器的位置,而在于使用什么方法来读写它。下面将作进一步介绍。
  前面已经说过扩充存储器也可以由扩展存储器模拟转换而成。EMS的原理和XMS不同,它采用了页帧方式。页帧是在1MB空间中指定一块64KB空间(通常在保留内存区内,但其物理存储器来自扩展存储器),分为4页,每页16KB。EMS存储器也按16KB分页,每次可交换4页内容,以此方式可访问全部EMS存储器。图2给出了EMS的工作原理。符合EMS的驱动程序很多,常用的有EMM386.EXE、QEMM、TurboEMS、386MAX等。DOS和Windows中都提供了EMM386.EXE。

  2.什么是扩展内存?
  我们知道,286有24位地址线,它可寻址16MB的地址空间,而386有32位地址线,它可寻址高达4GB的地址空间,为了区别起见,我们把1MB以上的地址空间称为扩展内存XMS(eXtend memory)。
  在386以上档次的微机中,有两种存储器工作方式,一种称为实地址方式或实方式,另一种称为保护方式。在实方式下,物理地址仍使用20位,所以最大寻址空间为1MB,以便与8086兼容。保护方式采用32位物理地址,寻址范围可达4GB。DOS系统在实方式下工作,它管理的内存空间仍为1MB,因此它不能直接使用扩展存储器。为此,Lotus、Intel、AST及Microsoft公司建立了MS-DOS下扩展内存的使用标准,即扩展内存规范XMS。我们常在Config.sys文件中看到的Himem.sys就是管理扩展内存的驱动程序。
  扩展内存管理规范的出现迟于扩充内存管理规范。

  3.什么是高端内存区?
  在实方式下,内存单元的地址可记为:
       段地址:段内偏移
  通常用十六进制写为XXXX:XXXX。实际的物理地址由段地址左移4位再和段内偏移相加而成。若地址各位均为1时,即为FFFF:FFFF。其实际物理地址为:FFF0+FFFF=10FFEF,约为1088KB(少16字节),这已超过1MB范围进入扩展内存了。这个进入扩展内存的区域约为64KB,是1MB以上空间的第一个64KB。我们把它称为高端内存区HMA(High Memory Area)。HMA的物理存储器是由扩展存储器取得的。因此要使用HMA,必须要有物理的扩展存储器存在。此外HMA的建立和使用还需要XMS驱动程序HIMEM.SYS的支持,因此只有装入了HIMEM.SYS之后才能使用HMA。

  4.什么是上位内存?
  为了解释上位内存的概念,我们还得回过头看看保留内存区。保留内存区是指640KB~1024KB(共384KB)区域。这部分区域在PC诞生之初就明确是保留给系统使用的,用户程序无法插足。但这部分空间并没有充分使用,因此大家都想对剩余的部分打主意,分一块地址空间(注意:是地址空间,而不是物理存储器)来使用。于是就得到了又一块内存区域UMB。
  UMB(Upper Memory Blocks)称为上位内存或上位内存块。它是由挤占保留内存中剩余未用的空间而产生的,它的物理存储器仍然取自物理的扩展存储器,它的管理驱动程序是EMS驱动程序。

  5.什么是SHADOW(影子)内存?
  对于细心的读者,可能还会发现一个问题:即是对于装有1MB或1MB以上物理存储器的机器,其640KB~1024KB这部分物理存储器如何使用的问题。由于这部分地址空间已分配为系统使用,所以不能再重复使用。为了利用这部分物理存储器,在某些386系统中,提供了一个重定位功能,即把这部分物理存储器的地址重定位为1024KB~1408KB。这样,这部分物理存储器就变成了扩展存储器,当然可以使用了。但这种重定位功能在当今高档机器中不再使用,而把这部分物理存储器保留作为Shadow存储器。Shadow存储器可以占据的地址空间与对应的ROM是相同的。Shadow由RAM组成,其速度大大高于ROM。当把ROM中的内容(各种BIOS程序)装入相同地址的Shadow RAM中,就可以从RAM中访问BIOS,而不必再访问ROM。这样将大大提高系统性能。因此在设置CMOS参数时,应将相应的Shadow区设为允许使用(Enabled)。

  总 结

  经过上面分析,内存储器的划分可归纳如下:
  ●基本内存 占据0~640KB地址空间。
  ●保留内存 占据640KB~1024KB地址空间。分配给显示缓冲存储器、各适配卡上的ROM和系统ROM BIOS,剩余空间可作上位内存UMB。UMB的物理存储器取自物理扩展存储器。此范围的物理RAM可作为Shadow RAM使用。
  ●上位内存(UMB) 利用保留内存中未分配使用的地址空间建立,其物理存储器由物理扩展存储器取得。UMB由EMS管理,其大小可由EMS驱动程序设定。
  ●高端内存(HMA) 扩展内存中的第一个64KB区域(1024KB~1088KB)。由HIMEM.SYS建立和管理。
  ●XMS内存 符合XMS规范管理的扩展内存区。其驱动程序为HIMEM.SYS。
  ●EMS内存 符合EMS规范管理的扩充内存区。其驱动程序为EMM386.EXE等。

2007-5-27 17:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





积分 10046
发帖 3039
注册 2002-11-11
状态 离线
『第 2 楼』:  

我现在只想把内存扩充到3000000K。



简单就是美
2007-5-28 19:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DayDreamer
新手上路





积分 13
发帖 7
注册 2007-5-27
状态 离线
『第 3 楼』:  

受教了
楼上滴 最近的内存太便宜 扩展到3000000K不是问题 ^_^

2007-5-28 22:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





积分 10046
发帖 3039
注册 2002-11-11
状态 离线
『第 4 楼』:  

是啊,便宜了。



简单就是美
2007-5-29 18:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zook0000
初级用户




积分 32
发帖 14
注册 2005-9-11
来自 ah
状态 离线
『第 5 楼』:  

可是 DDR 还是居高不下啊,伤心……

2007-6-1 21:05
查看资料  发送邮件  发短消息 网志  OICQ (376920579)  编辑帖子  回复  引用回复
mm56789mm
新手上路





积分 11
发帖 6
注册 2006-10-20
状态 离线
『第 6 楼』:  

进来学习的,长知识,谢谢了!

2007-6-2 11:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
雨露
管理员

DOS非常爱好者


积分 6209
发帖 2598
注册 2006-1-20
状态 离线
『第 7 楼』:  

听说已到谷底了,有可能马上上涨,赶快买:)



2007-6-2 19:32
查看资料  发短消息 网志  OICQ (156647374)  编辑帖子  回复  引用回复
elite
初级用户




积分 24
发帖 11
注册 2007-5-4
来自 beijing
状态 离线
『第 8 楼』:  

很详细...顶

2007-6-8 10:57
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (570427585)  编辑帖子  回复  引用回复
xixixi
初级用户




积分 78
发帖 23
注册 2007-2-27
状态 离线
『第 9 楼』:  

复制一份吧.

2007-6-9 10:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
enjoyer
中级用户

部落守望者


积分 351
发帖 140
注册 2006-6-19
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by tiancai4126 at 2007-5-27 17:47:
上位内存(UMB) 利用保留内存中未分配使用的地址空间建立,其物理存储器由物理扩展存储器取得。UMB由EMS管理

既然说“UMB由扩展存储器取得”,那就应该由扩展内存规范XMS(himem.sys)来管理,为什么同时又说UMB由EMS管理呢?这不矛盾吗?请楼上的朋友解答一下,谢谢喽!



一切从底层开始
2007-6-9 23:52
查看资料  发送邮件  发短消息 网志  OICQ (363852426)  编辑帖子  回复  引用回复
hzwzd
新手上路





积分 8
发帖 4
注册 2007-6-18
状态 离线
『第 11 楼』:  

谢谢你的内存概念

2007-6-18 14:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yzf200305
新手上路





积分 2
发帖 1
注册 2007-11-28
状态 离线
『第 12 楼』:  

谢谢,说得非常好

2007-11-28 13:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wazap
新手上路





积分 10
发帖 5
注册 2007-11-27
状态 离线
『第 13 楼』:  

好帖,学了就顶

2007-11-28 14:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vinchoster
新手上路





积分 7
发帖 4
注册 2007-11-29
状态 离线
『第 14 楼』:  

好帖,谢谢

2007-11-29 13:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: