中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-16 13:53
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » [讨论]保护模式下的中断响应时间? 查看 1,104 回复 0
楼 主 [讨论]保护模式下的中断响应时间? 发表于 2003-07-09 00:00 ·  新加坡 星和视界(StarHub)宽带
初级用户
积分 169
发帖 29
注册 2003-07-09 00:00
UID 6654
性别 男
状态 离线
程序是基于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新闻组上发帖子问过,但还没有人回我。
论坛跳转: