中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 关于CONFIG.SYS的内存管理疑问? 上一主题 | 下一主题
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『楼 主』:  关于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 ]

2007-3-18 07:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





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

dos程序可以将扩展内存做为数据区。



简单就是美
2007-3-18 07:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 3 楼』:  

各位高手都进来谈谈!!!

2007-3-18 12:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ywcn
初级用户





积分 155
发帖 68
注册 2007-2-2
状态 离线
『第 4 楼』:  

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

2007-3-19 04:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





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

错误。



简单就是美
2007-3-19 05:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





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

能上wikipedia的,可以去查一下。很详尽的解释。



简单就是美
2007-3-19 05:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 7 楼』:  

5楼的,什么错误,

干嘛不说说呢??

2007-3-19 08:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





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

ems和xms可不是差不多,而是差很多。ems是映射到1M以下地址存取的,xms则不是这样。



简单就是美
2007-3-19 08:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 9 楼』:  

还有吗?楼上的

2007-3-19 21:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ywcn
初级用户





积分 155
发帖 68
注册 2007-2-2
状态 离线
『第 10 楼』:  



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

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

2007-3-25 11:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 11 楼』:  

"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 ]

2007-3-25 12:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
darkradx
高级用户





积分 972
发帖 420
注册 2004-5-16
状态 离线
『第 12 楼』:  

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各有功用

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



平生进退如飙风
2007-3-25 13:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
darkradx
高级用户





积分 972
发帖 420
注册 2004-5-16
状态 离线
『第 13 楼』:  

DEVICEHIGH一定是用UMB

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



平生进退如飙风
2007-3-25 13:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: