Board logo

标题: 关于CONFIG.SYS的内存管理疑问? [打印本页]

作者: hulongzhuo     时间: 2007-3-18 07:03    标题: 关于CONFIG.SYS的内存管理疑问?
最近学习DOS,很早以前虽然学习过,但对有些不是很清楚,这两天翻了很多资料,
关于系统配置方面的,如CONFIG.SYS,其中有几点看到很多人讲得混淆了,首先我是这样认为的:
1,DOS管理的内存应分为:
常规内存 1-640K
上位内存(UMB) 640-1024K
高端内存(HMA) 扩展内存的前64K部分
扩允内存(EMS) 和扩展内展差不多
扩展内存(XMS) 1024K以后的部分

2, DEVICE=是把驱动装于常规内存,
DEVIDEHIGH=是把驱动装于高端内存(HMA)
dos=high,umb 表示DOS管理由EMM386.EXE创建的UMB,并将自身的一部分装入HMA

但是看到很多资料都是把上位内存UMB 与高端内存HMA相混淆了,
比如说DEVIDEHIGH=是装入上位内存UMB,
dos=high 也是装入上位内存UMB,
不知道到底哪种是正确的,还有就是高端内存HMA只有64K,如果都把驱动和DOS部分加载到这一部分,有没有什么影响,如果超过了64K呢,
另外,是不是所有和DOS程序只能在640K的空间运行,即然如此,那用HIMEM.SYS驱动出来的扩展内存,到底有多大意义呢??

本人太菜,希望版本或哪位高手作答,不尽感激!!!!

Last edited by hulongzhuo on 2007-3-17 at 06:06 PM ]

作者: Michael     时间: 2007-3-18 07:36
dos程序可以将扩展内存做为数据区。

作者: hulongzhuo     时间: 2007-3-18 12:15
各位高手都进来谈谈!!!

作者: ywcn     时间: 2007-3-19 04:10
640-1024那块叫保留内存,不是UMB,UMB是利用保留内存剩余的地址空间影射的一块内存区域,注意是"地址空间",也就是说UMB并不在保留内存中.
DEVIDEHIGH是将程序装入UMB,dos=high是将dos装入HMA

作者: Michael     时间: 2007-3-19 05:17
错误。

作者: Michael     时间: 2007-3-19 05:19
能上wikipedia的,可以去查一下。很详尽的解释。

作者: hulongzhuo     时间: 2007-3-19 08:02
5楼的,什么错误,

干嘛不说说呢??

作者: Michael     时间: 2007-3-19 08:24
ems和xms可不是差不多,而是差很多。ems是映射到1M以下地址存取的,xms则不是这样。

作者: hulongzhuo     时间: 2007-3-19 21:18
还有吗?楼上的

作者: ywcn     时间: 2007-3-25 11:08
Originally posted by Michael at 2007-3-18 07:24 PM:
ems和xms可不是差不多,而是差很多。ems是映射到1M以下地址存取的,xms则不是这样。


汗,还以为你说我错误呢!

作者: GOTOmsdos     时间: 2007-3-25 12:43
"DEVIDEHIGH是将程序装入UMB,dos=high是将dos装入HMA "
这种说法,可能得商榷.
所谓HIGH 可能是指 HMA和UMB, 所以DEVICEHIGH 可能是由DOS决定是装入 HMA还是UMB,并不限于UMB
如果说 DOS=HIGH是将DOS装入HMA,那么 DOS=HIGH,UMB 的 UMB怎么解释?
解释为 DOS可以使用HIGH和UMB,比较说的通..是一种开关
当然,先决条件是:
DEVICE=HIMEM.SYS
DEVICE=EMM386.EXE


原先的扩充内存和扩展内存都是装在各自的插槽里的,现在来说只是规范了,其实它们都是在你的那一根内存条上的,不是什么其他东西.

先有常规内存
后有扩充内存
再有扩展内存
现在都在一个实体上

Last edited by GOTOmsdos on 2007-3-25 at 12:48 PM ]

作者: darkradx     时间: 2007-3-25 13:29
DOS=HIGH和DOS=UMB起效的先决条件是
A20 can be turned on ------Any XMS Manager installed
UMB Exist ------UMBPCI/EMS Manager

XMS管理规范下定义整个内存区域(常规+扩展)是flat的, HMA位于XMS最低端, 大小是FFFF:FFFF-0xFFFFF, dos接收到dos=high而且尝试开a20成功, 则可以利用HMA
EMS是page mapping的(EMS manager操作过后才会有UMB(Unused UMA))
DOS=HIGH和DOS=UMB各有功用

我的记忆很不清楚, 只能说个大概

作者: darkradx     时间: 2007-3-25 13:29
DEVICEHIGH一定是用UMB

http://support.microsoft.com/kb/95555