中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 为何内存加大后 DPMI 不可用?
作者:
标题: 为何内存加大后 DPMI 不可用? 上一主题 | 下一主题
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『楼 主』:  为何内存加大后 DPMI 不可用?

MS-DOS 6.22 ,原内存为256M,加大到384M后发觉原来所有可使用 DPMI 的程序都出错。使用的 DPMI host 程序为 QEMM 9.0 中的 QDPMI 。

QEMM 版本:

  Quote:
Quarterdeck Expanded Memory Manager 386 V9.00.ƒ003ß
Copyright (c) 1986-1997 by Quarterdeck Corporation

QDPMI 和所提供的 DPMI 版本,以及其设置:

  Quote:
QDPMI: Quarterdeck DPMI Host V1.10

DPMI 0.9 Services are.......ON   MaxMem=<MAX>, MinMem=<MIN>, MaxLow=<NONE>
DPMI Virtual Memory is......OFF
Extender Checking is........ON   Overlay=C:\QEMM\QDPMIVM.OVL
Real Mode Int Handling fix..OFF  Client Start Address=40000000H

比如原本 PKZIP / PKUNZIP 是可以通过调用 DPMI 来提高效能的,但现在运行时却无法使用 DPMI ,一旦调用就出错:

  Quote:
PKZIP (R)   FAST!   Create/Update Utility   Version 2.50   03-01-1999
Copr. 1989-1999 PKWARE Inc.  All Rights Reserved.   Shareware Version
PKZIP Reg. U.S. Pat. and Tm. Off.  Patent No. 5,051,745
QDPMI: Nested Page Fault in QDPMI Kernel [PTE=0000-0000h]
       [CR2=0080-0003h at 0020h:0000-5478h]

QDPMI: Unrecoverable Exception: 000Eh at 0020h:0000-5478h.  Error Code = 0002h

还有一些出错时的内存地址和寄存器值如下:

  Quote:
QDPMI: Nested Page Fault in QDPMI Kernel [PTE=02D5-4007h]
       [CR2=0080-0003h at 0020h:0000-23B9h]                                                                              
QDPMI: Unrecoverable Exception: 000Eh at 0020h:0000-23B9h.  Error Code = 0002h





DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-9-21 23:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 2 楼』:  

等待高手回答



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2009-4-13 09:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
stockghost
中级用户





积分 215
发帖 105
注册 2007-6-2
状态 离线
『第 3 楼』:  

DOSforever,你说的问题,DPMI我有过了解,但对具体的东西不太清楚。
估计是内存过大,DOS6.2x下DPMI好像不能超过256M。

下面是我的一点经验,供参考。
曾经用Djgpp为256M的联想无盘站M270S(环境纯DOS6.21)写过程序,原DOS6.21系统别人事先配置好。
CWSDPMI进去后找C:\cwsdpmi.swp,用-s-取消后,分配不了多少内存就出错,无法使用。
用内存盘虚拟c:\,程序大部分正常,但运行时常碰到分配内存的错误,使得程序异常终止退出或死机。
估计是程序要不断地分配释放内存造成内存碎片太多以至于无法再分配内存或者扩展内存管理程序太旧造成的。
后来还是取消内存盘,将cwsdpmi -s,把DOS6.21的himem.sys、emm386.exe换成MSDOS 7.1的,将config.sys中
device=emm386.exe noems xxxx改为device=emm386.exe noems novcpi后,程序运行正常。
该程序在msdos7.1下,256、384内存运行正常。

2009-5-16 23:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: