中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 00:04
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS开发编程 & 发展交流 (开发室) » [讨论]保护模式下的中断响应时间?
可打印版本  1,310 / 0
第1楼 ATLaS 发表于 2003-07-09 00:00
初级用户 发帖 29 积分 169
[讨论]保护模式下的中断响应时间?
程序是基于DJGPP V2.03, GCC 3.23的。DPMI HOST用的是CWSDPMI r5和PMODE 1.3。
问题描述:假定程序运行于纯保护模式下(pure protected mode),我想测量系统对硬件中断的响应时间,因为我希望这个时间能够<10微秒。实际上在watcom c + dos4g/w下这一点是可以保证的。

中断信号源:信号发生器,4KHz的方波。接入到机器的IRQ7。
测试程序:纯保护模式,用_go32_dpmi_allocate_iret_wrapper(), _go32_dpmi_set_protected_mode_inerrupt_vector()来设置保护模式下的ISR。ISR非常简单,只是在进ISR的时候向并口写1,出来的时候写0,中间只有一个COUNTER++。在主程序中把除了IRQ7以外的所有的可屏蔽中断(IRQ0~IRQ15)都屏蔽掉,只有一个死循环:for (; {}。而且当dpmi host是cwsdpmi时,通过cwsparam.exe关闭了virtual memory。
测量:把中断信号源和并口的输出信号都接入逻辑分析仪来测量时间差。

这种测试在watcom c + dos4g/w下做过,经过通宵测试最大时间差在10微秒左右。但是在djgpp + cwsdpmi或者pmode下测试时,绝大多数时间内,时间差<6微秒,但有时会突然增大到20、30甚至60~80微秒!我今天的试验程序跑了大概7小时,出现了一次20微秒,一次80微秒!这种情况在那种对实时性稍微有些要求的场合都无法让人满意。

我不知道问题会出在什么地方,如果有,大概也是dpmi host的问题?有没有人做过类似的实验?结果又是如何呢?我在comp.os.msdos.djgpp新闻组上发帖子问过,但还没有人回我。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023