|
johnsonlam
银牌会员
阿林
积分 1410
发帖 497
注册 2004-6-28 来自 九龍,香港
状态 离线
|
『楼 主』:
QHIMEM V1.3 (可 以 取 代 其 它 HIMEM)
http://johnson.tmfc.net/freedos
或
http://johnson.tmfc.net/freedos/qhimem.html
作 者 : Jack R. Ellis ( 亦 是 前 UDMA/XDMA 作 者 )
为 甚 么 要 转 用 QHIMEM?
因 为 其 它 的 HIMEM 驱 动 有 兼 容 问 题 。 QHIMEM 使 用 正 常 的 XMS 存 取 , 没 有 使 用 "mapping" 或 "protected-mode" 方 法 , 兼 容 MS-DOS, FreeDOS, 或 其 它 类 型 的 DOS 。
QHIMEM 是 为 了 配 合 UMBPCI 而 编 写 , 当 使 用 "过 渡 程 序" QHMBOOT 时 , QHMBOOT 能 暂 时 接 管 XMS , 把 UMBPCI 置 于 UMB ( 暂 时 未 有 其 它 驱 动 可 以 这 样 做 ) , 往 后 再 交 接 到 QHIMEM , 这 样 做 的 好 处 是 QHIMEM 只 有 80 bytes 留 在 640K 传 统 记 忆 体 内 , 省 下 1600-2400 bytes , 那 就 可 以 执 行 更 大 的 程 序 !
***使 用 FDXMS/FreeDOS-HIMEM 时 会 有 资 料 损 毁 的 风 险 , 由 于 原 文 颇 难 翻 译 , 我 直 接 贴 在 这 里 :
And yet, it can run the same MS-DOS and FreeDOS software as me, doing
I-O with an old ATA-33 UltraDMA disk drive, and using my QDMA driver.
The ATA-33 drive is only FOUR times slower (not 10 or 30) than my new
Maxtor ATA-133, meaning it "loads down" the Pentium much more. Also
there is nothing in DOS or QDMA that limits read/write block sizes on
a slower CPU.
So, the old Pentium may be asked to handle up to 64K bytes at a time,
same as my new Athlon. Not too-much a problem for a DMA transfer on
the Pentium. It has little time for much-else while DMA is running,
but it will "get there" without errors.
However, what if QDMA gets a "misaligned" I-O request and must do XMS
buffered I-O? User data must be moved into the buffer before output
and must be moved from the buffer when input ends. The XMS "moves"
are the problem.
If FDXMS/FDHIMEM do such moves, interrupts are OFF the whole time, as
you and your friends can see in the "xms_move" subroutine. I do not
have exact timings, but for an old Pentium I, my guess is each 4-byte
dword will take about 30-microseconds to "move". 30-usec times 16K
4-byte words is 500 MILLISECONDS, or half a second, in which FDXMS or
FDHIMEM keep interrupts DISABLED while doing a "move"! NOT GOOD!
And it can be WORSE! Say your friends are ALSO doing Ethernet work,
which can involve its own DMA. If Ethernet data "comes in" or "goes
out" when FDXMS or FDHIMEM is doing a "move", that DMA "steals" clock
cycles from the running program and makes the "move" take longer! I
don't know how-much longer, but it hurts interrupts even more!
It does NOT get better with faster CPUs, since Pentium-II systems can
have ATA-66 disk drives, and Pentium-III systems have ATA-100 drives.
As the CPUs got faster, so did the hard-disks, and the problem caused
by FDXMS/FDHIMEM and their uninterruptable moves is "still there"!
This is why QHIMEM does NOT move more than 512 4-byte words without a
"break" for interrupts. MS-DOS HIMEM allows interrupts at any time,
which is better but results in a bigger driver, due to their "General
Protection Fault" logic which must be active on any move. I got RID
of the G.P.F. code by doing moves in "protected mode" with interrupts
off, BUT every 512 dwords they DO get re-enabled again. On the old
Pentium-I, this means it cannot go over 15 milliseconds without being
able to interrupt, which is not too bad. 500 milliseconds is AWFUL,
and 250 milliseconds on a Pentium-II is still NOT-good!
Rather than just telling your friends "Try QHIMEM", you might want to
say "FDXMS/FDHIMEM are too slow, try QHIMEM". If any of them ask to
know why, then have them read Till Gerken's comments at the beginning
of FDXMS. No need to say how much of an ERROR I think it is, but do
let them see what Gerken wrote. That should be all they need.
( 为 甚 么 危 险 ? 可 参 考 FDXMS 源 码 开 始 时 Till Gerken 的 留 言 )
[ Last edited by johnsonlam on 2006-4-26 at 12:21 ]
|
我 的 網 站 - http://optimizr.dyndns.org
|
|
2006-4-24 10:29 |
|
|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『第
2 楼』:
我试了一下,发现好像和MS EMM386不太兼容?EMM386启动时会提示警告信息。
另外,有没有办法手工指定要分配的XMS内存的大小?或者在命令行下调整?比如可以设置为64MB、32MB、16MB等等,如有这个功能的话运行一些程序时还是很有用的。
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2006-4-25 02:55 |
|
|
johnsonlam
银牌会员
阿林
积分 1410
发帖 497
注册 2004-6-28 来自 九龍,香港
状态 离线
|
『第
3 楼』:
编 写 QHIMEM 的 原 因 是 HIMEM + EMM386 太 占 空 间 , 所 以 作 者 Jack Ellis 选 了 UMBPCI 来 做 配 对 , 因 为 QHIMEM 做 了 很 多 调 整 迁 就 UMBPCI, 可 能 未 有 兼 顾 某 些 EMM386 版 本 , 会 不 太 配 合 , 我 问 问 是 甚 么 回 事 。
QHIMEM.SYS 可 以 自 选 XMS Handle , 预 设 是 32 但 你 可 以 用 /N 选 择 , 如 /N16 或 /N128 等 , README.TXT 有 详 尽 资 料 , 如 果 你 指 的 不 是 这 个 , 请 告 诉 我 。
现 在 1.3 版 更 可 以 把 QHIMEM 和 UMBPCI 上 载 UMB , 我 试 过 可 以 腾 空 传 统 记 忆 至 621K 来 , 如 果 配 合 SHELLHIGH, DOSDATA=HIGH 可 到 625K 。
[ Last edited by johnsonlam on 2006-4-26 at 15:19 ]
|
我 的 網 站 - http://optimizr.dyndns.org
|
|
2006-4-26 15:02 |
|
|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『第
4 楼』:
UMBPCI畢竟目前還不支持許多電腦(比如我的新電腦),所以對一些常見的EMM386版本提供支持我想應該會有許多用處的。
QHIMEM.SYS的XMS Handle選擇和XMS內存的大小應該不一樣的。QHIMEM的/Nxx類似於MS HIMEM的/NUMHANDLES=xx選項,可以指定XMS Handle的數量,但其無法指定想要的XMS內存的大小。
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2006-4-27 02:07 |
|
|
johnsonlam
银牌会员
阿林
积分 1410
发帖 497
注册 2004-6-28 来自 九龍,香港
状态 离线
|
『第
5 楼』:
好 消 息 !
Jack 已 著 手 解 决 那 个 EMM386 的 投 诉 , 他 试 过 跑 V4.49 版 的 EMM386 没 有 问 题 , 只 是 EMM386 不 喜 欢 QHIMEM 的 "节 省" 才 会 警 告 。
相 信 下 个 版 本 会 很 快 出 来 , 到 时 候 跑 EMM386 一 定 没 问 题 了 。
|
我 的 網 站 - http://optimizr.dyndns.org
|
|
2006-4-27 13:41 |
|
|
wl00560
银牌会员
积分 1384
发帖 709
注册 2005-10-29
状态 离线
|
『第
6 楼』:
难道DOS的640限制那样难以突破么?应该出现一个可以使dos直接使用大内存的dos程序啊。现在windows下的内存都快到1G了,dos却还在为640而烦恼,有些可笑吧。
|
|
2006-4-27 17:59 |
|
|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by wl00560 at 2006-4-27 05:59 PM:
难道DOS的640限制那样难以突破么?应该出现一个可以使dos直接使用大内存的dos程序啊。现在windows下的内存都快到1G了,dos却还在为640而烦恼,有些可笑吧。 |
|
HIMEM/QHIMEM能使DOS支持直接访问XMS内存,最大高达4GB,也不错啊!
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2006-4-27 23:40 |
|
|
wl00560
银牌会员
积分 1384
发帖 709
注册 2005-10-29
状态 离线
|
『第
8 楼』:
我是想说,dos应该彻底抛弃什么基本内存,xms,umb内存的概念,如同win所做的那样,内存拿起来就用,也不需怎样配置,就好了。
我不明白的是,现在新dos也不少,为什么没有人可以走出msdos的那一套呢?一个全新界面、全新的dos,如同winNT下的命令行一样的纯dos,32位,甚至是64位的,多
好啊。呵呵,一个梦想而已。
|
|
2006-4-28 00:32 |
|
|
johnsonlam
银牌会员
阿林
积分 1410
发帖 497
注册 2004-6-28 来自 九龍,香港
状态 离线
|
『第
9 楼』:
一 切 都 是 为 了 兼 容 ...
不 用 兼 容 就 没 有 了 历 史 的 负 累 , 但 是 从 前 的 程 序 都 要 全 部 重 写 , 太 浪 费 了 。
其 实 , 有 了 XMS 后 记 忆 已 不 是 大 问 题 , 程 序 自 己 也 可 以 DOS extender 突 破 640K 关 口 , 问 题 是 很 多 人 还 未 懂 利 用 这 些 新 功 能 编 程 。
|
我 的 網 站 - http://optimizr.dyndns.org
|
|
2006-4-28 12:06 |
|
|
johnsonlam
银牌会员
阿林
积分 1410
发帖 497
注册 2004-6-28 来自 九龍,香港
状态 离线
|
『第
10 楼』:
Quote: | Originally posted by wl00560 at 2006-4-28 12:32 AM:
我是想说,dos应该彻底抛弃什么基本内存,xms,umb内存的概念,如同win所做的那样,内存拿起来就用,也不需怎样配置,就好了。
我不明白的是,现 ... |
|
那 就 是 XBOX360 了 :)
|
我 的 網 站 - http://optimizr.dyndns.org
|
|
2006-4-28 12:07 |
|