中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-29 05:41
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 内存问题,急问 查看 702 回复 13
楼 主 内存问题,急问 发表于 2005-09-29 10:33 ·  中国 上海 联通
初级用户
积分 28
发帖 9
注册 2005-09-29 09:20
20年会员
UID 42940
性别 男
状态 离线
我按照新dos时代斑竹的config.sys设置以后,发现我的Upper Memory Block只几k,而他的就有102k,这是为什么啊。
2 发表于 2005-09-29 16:19 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re xixixiao:

请贴出你的 config.sys 和 autoexec.bat 文件以及你所查看到的内存使用报告,以便查明问题所在;以后有此类问题,也请贴出相关文件内容以及作用结果。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
3 是这样的配置 发表于 2005-09-29 17:04 ·  中国 上海 联通
初级用户
积分 28
发帖 9
注册 2005-09-29 09:20
20年会员
UID 42940
性别 男
状态 离线
这是我在新dos时代copy下来的。我用的是MS-DOS7.10。其中,hiram.exe由于在dos软件下载中没有链接,所以我从其他地方拿到的。下面的config.sys就是那位斑竹的。然后这是他的mem /c/p后的结果。我做了同样的设置但是不行。upper memory总是出不来。
device=d:\dos\echo.sys L/o/a/d/i/n/g CONFIG.SYS...
device=d:\dos\echo.sys
device=d:\dos\umbpci.sys
device=d:\dos\hiram.exe
devicehigh=d:\dos\himem.sys
devicehigh=d:\dos\setver.exe
devicehigh=d:\dos\ifshlp.sys
devicehigh=d:\dos\vide-cdd.sys /d:IDE-CD
shell=d:\dos\command.com /p /e:640
set temp=e:\temp
set tmp=e:\temp
accdate=c+ d+ e+
dos=high,umb,auto
country=086
numlock=off
fileshigh=30
buffershigh=30,0
stackshigh=9,256
lastdrivehigh=n

Modules using memory below 1 MB:

Name Total Conventional Upper Memory
-------- ---------------- ---------------- ----------------
SYSTEM 32,736 (32K) 9,664 (9K) 23,072 (23K)
HIMEM 1,168 (1K) 0 (0K) 1,168 (1K)
SETVER 864 (1K) 0 (0K) 864 (1K)
VIDE-CDD 5,024 (5K) 0 (0K) 5,024 (5K)
CLOAKING 1,168 (1K) 0 (0K) 1,168 (1K)
IFSHLP 2,864 (3K) 0 (0K) 2,864 (3K)
COMMAND 7,424 (7K) 0 (0K) 7,424 (7K)
KILLER 400 (0K) 0 (0K) 400 (0K)
WATCH 3,392 (3K) 0 (0K) 3,392 (3K)
MSCDEX 2,816 (3K) 0 (0K) 2,816 (3K)
DOSKEY 5,744 (6K) 0 (0K) 5,744 (6K)
CTMOUSE 3,344 (3K) 0 (0K) 3,344 (3K)
ZENO 1,376 (1K) 0 (0K) 1,376 (1K)
ESCAPE 496 (0K) 0 (0K) 496 (0K)
Free 750,080 (732K) 645,328 (630K) 104,752 (102K)

Memory Summary:

Type of Memory Total Used Free
---------------- ----------- ----------- -----------
Conventional 655,360 10,032 645,328
Upper 163,904 59,152 104,752
Reserved 393,216 393,216 0
Extended (XMS) 49,119,168 82,880 49,036,288
---------------- ----------- ----------- -----------
Total memory 50,331,648 545,280 49,786,368

Total under 1 MB 819,264 69,184 750,080

Largest executable program size 645,312 (630K)
Largest free upper memory block 103,952 (102K)
Available space in High Memory Area 5,360 (5K)
MS-DOS is resident in the high memory area.
4 发表于 2005-09-29 17:29 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re xixixiao:

那你的 memeory map 呢?这才是最关键的!
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
5 这是我的memory map 发表于 2005-09-29 17:37 ·  中国 上海 联通
初级用户
积分 28
发帖 9
注册 2005-09-29 09:20
20年会员
UID 42940
性别 男
状态 离线
我不知道可不可以上传图片,我只能用这种方式了。
附件
1.JPG
2.JPG
6 发表于 2005-09-29 17:43 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re xixixiao:

从你的 map 来看,应该是使用了 emm386 的缘故,它会占用大量的 UMB 作为页面帧,因此你的 config.sys 应该是不同于你贴出的原文的。详细的信息,你可以搜索查阅本站关于 “DOS内存管理” 的文章。


EMM386.EXE实际上是一个扩充内存(Expanded Memroy, 其协议为EMS)管理程序,他的主要作用是在保留内存(Reserved Memory,384KB)中创建上端内存块(Upper Memory Block,UMB,大小不定且不一定连续)后利用它将扩展内存(Extended Memory, 其协议为XMS)模拟为扩充内存。

开关 "/RAM" 指示EMM386在上端内存块中创建一个64KB的扩充内存所需要的页面帧(page frame),页面帧相当于一个窗口,可以允许程序通过这个它访问任意位置的扩充内存,但是同一时刻只能访问64K,另外EMM386还需要44KB的UMB表格管理扩充内存中将要与页面帧进行的内存块,所以总共会消耗114KB的UMB空间。

  开关 "/NOEMS" 则可以禁止模拟扩充内存, 从而回收UMB中64KB的页面帧空 间,那可以使更多的程序通过DEVICEHIGH(CONFIG.SYS)和LH(AUTOEXEC.BAT)加载入UMB中(需要DOS=UMB支持),从而节约有限的基本内存(Conventional Memory,640KB)。


[ Last edited by willsort on 2005-9-29 at 17:56 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
7 对5楼的补充 发表于 2005-09-29 17:45 ·  中国 上海 联通
初级用户
积分 28
发帖 9
注册 2005-09-29 09:20
20年会员
UID 42940
性别 男
状态 离线
那个free中的upper memory 7k本来是没有的,是我在hiram后加了一句himem.exe noems novcpi i=b600-b7ff才有的,
8 继续请教config.sys是在c:\还是在c:\dos71我的安装目录下? 发表于 2005-09-29 17:46 ·  中国 上海 联通
初级用户
积分 28
发帖 9
注册 2005-09-29 09:20
20年会员
UID 42940
性别 男
状态 离线
9 发表于 2005-09-29 17:52 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re xixixiao:

一般情况下,config.sys 在根目录下才会被 IO.SYS 所读取。安装目录下可能会保留它的备份。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
10 天啊。那我完了。彻底服输了。 发表于 2005-09-29 17:58 ·  中国 上海 联通
初级用户
积分 28
发帖 9
注册 2005-09-29 09:20
20年会员
UID 42940
性别 男
状态 离线
是不是我用VmWare做虚拟会引起不同?
11 发表于 2005-09-29 18:10 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re xixixiao:

VMWare 应该不会有什么不同,还应该是你的启动环境的问题。请查看根目录下是否有 config.old/config.w40/config.dos/cofig.000 之类的文件,以及 msdos.sys 中是否有异常。emm386似乎在某些情况下会自动加载,如同ifshlp一样,但我不清楚其中的细节。

另外,VM下应该可以拷贝文字吧,贴图是有些奢侈了。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
12 我继续观察 发表于 2005-09-29 18:15 ·  中国 上海 联通
初级用户
积分 28
发帖 9
注册 2005-09-29 09:20
20年会员
UID 42940
性别 男
状态 离线
用F8我发现在调用HIRAM以后,EMS是 not found。而游戏里面应该会要这个东西。EMM386可以加载,那个HIRAM行吗,还是我参数不对?

[ Last edited by xixixiao on 2005-9-29 at 18:18 ]
13 发表于 2005-09-29 18:48 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re xixixiao:

EMS 并不是所有的游戏都必需的,这个你可以查看一下游戏的对应说明,或不加载 emm386 启动游戏测试一下。如果确需 ems ,hiram 应该无法提供,必须使用emm386 时,可以适当使用一些参数来扩充 UMB ;实在不行,就将 config.sys 做成多启动环境,专为游戏做一个。
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
14 发表于 2005-09-30 12:21 ·  中国 湖北 武汉 联通
高级用户
★★★
积分 587
发帖 302
注册 2005-07-25 17:31
20年会员
UID 41046
性别 男
状态 离线
另外楼主的MSCDEX这个光驱驱动占了不少空间啊
欢迎造访DOS的小屋!
http://risky.ik8.com
论坛跳转: