|
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
状态 离线
|
|
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
状态 离线
|
|
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
状态 离线
|
|
2007-3-25 13:29 |
|