Board logo

标题: 内存问题,急问 [打印本页]

作者: xixixiao     时间: 2005-9-29 10:33    标题: 内存问题,急问

我按照新dos时代斑竹的config.sys设置以后,发现我的Upper Memory Block只几k,而他的就有102k,这是为什么啊。
作者: willsort     时间: 2005-9-29 16:19
Re xixixiao:

      请贴出你的 config.sys 和 autoexec.bat 文件以及你所查看到的内存使用报告,以便查明问题所在;以后有此类问题,也请贴出相关文件内容以及作用结果。
作者: xixixiao     时间: 2005-9-29 17:04    标题: 是这样的配置

这是我在新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.
作者: willsort     时间: 2005-9-29 17:29
Re xixixiao:

      那你的 memeory map 呢?这才是最关键的!
作者: xixixiao     时间: 2005-9-29 17:37    标题: 这是我的memory map

我不知道可不可以上传图片,我只能用这种方式了。
附件 1: 1.JPG (2005-9-29 17:42, 50.54 K, 下载附件所需积分 1点 ,下载次数: 1)


附件 2: 2.JPG (2005-9-29 17:42, 45.58 K, 下载附件所需积分 1点 ,下载次数: 1)



作者: willsort     时间: 2005-9-29 17:43
Re xixixiao:

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

  Quote:
      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 ]
作者: xixixiao     时间: 2005-9-29 17:45    标题: 对5楼的补充

那个free中的upper memory 7k本来是没有的,是我在hiram后加了一句himem.exe noems novcpi i=b600-b7ff才有的,
作者: xixixiao     时间: 2005-9-29 17:46    标题: 继续请教config.sys是在c:\还是在c:\dos71我的安装目录下?


作者: willsort     时间: 2005-9-29 17:52
Re xixixiao:

      一般情况下,config.sys 在根目录下才会被 IO.SYS 所读取。安装目录下可能会保留它的备份。
作者: xixixiao     时间: 2005-9-29 17:58    标题: 天啊。那我完了。彻底服输了。

是不是我用VmWare做虚拟会引起不同?
作者: willsort     时间: 2005-9-29 18:10
Re xixixiao:

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

      另外,VM下应该可以拷贝文字吧,贴图是有些奢侈了。
作者: xixixiao     时间: 2005-9-29 18:15    标题: 我继续观察

用F8我发现在调用HIRAM以后,EMS是 not found。而游戏里面应该会要这个东西。EMM386可以加载,那个HIRAM行吗,还是我参数不对?

[ Last edited by xixixiao on 2005-9-29 at 18:18 ]
作者: willsort     时间: 2005-9-29 18:48
Re xixixiao:

      EMS 并不是所有的游戏都必需的,这个你可以查看一下游戏的对应说明,或不加载 emm386 启动游戏测试一下。如果确需 ems ,hiram 应该无法提供,必须使用emm386 时,可以适当使用一些参数来扩充 UMB ;实在不行,就将 config.sys 做成多启动环境,专为游戏做一个。
作者: fdsiuha     时间: 2005-9-30 12:21
另外楼主的MSCDEX这个光驱驱动占了不少空间啊