circlefang
驱动牛犊
驱动牛犊
  • 注册日期2012-06-26
  • 最后登录2012-06-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2176回复:4

windows xp 能否关调度和关中断

楼主#
更多 发布于:2012-06-26 10:56
不知道发到这里是否对了,这些问题困扰我好久了,一直没解决,希望版主不要删。


各位大虾,
       我有一段代码,用gettickcounts   看,   执行时间基本是0。但有时会比较大(基本是15或16ms的整数倍,这个我理解),不知道除了期间发生中断或调度的原因外,还有其他原因吗? 如果仅仅是这两个原因,可临时关掉中断,调度吗, 以使这段代码的执行时间是确定的,至少使得每次执行时间相差很小(我想怎么也得在1ms一下把),而不是隔了一个或几个时钟周期。
 我搜了一下,好像可以通过驱动等某些手段进入到ring 0下执行CLI,STI。有知道的前辈也可以讲讲,是否还有其他方法,让大家系统的了解下。
 可是如果发生调度该怎么办呢?我已经把我的程序提到实时优先级了。


另外,把这个问题扩展一下,
  如果我起了一个周期定时器,比如15ms间隔或31ms间隔(1个或2个周期),如何让定时器的间隔也变成确定的,在我的例子中就是间隔不能突然变为3个或更多个周期。

PS:1. VB写的程序。
  2. 好像可以加RTX扩展可以解决以上两个问题,但是RTX不支持VB。另外我觉得使用起来可能会比关中断和调度复杂(如果可能的话)

我是菜鸟,希望XDJM都能参与讨论,感谢感谢!
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2012-06-26 11:38
可不可以用vc包dll再用vb调?把关键用vc重写
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
circlefang
驱动牛犊
驱动牛犊
  • 注册日期2012-06-26
  • 最后登录2012-06-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2012-06-26 20:12
不太明白,你是指vc的定时器做成dll吗?能否详细说说啊。

据我了解,vc的ontimer与vb的timer半斤八两,都不可靠。

我觉得主要是线程调度导致定时器间隔不确定,通过注册表查到线程分配的时间片配额是2,那么一切换到别的线程就会导致定时延迟2个周期(还不包括切换时间在内),所以即使使用再高精度或再高分辨率的取时间方法可能都没用。我自己的看法+实验

郁闷啊
circlefang
驱动牛犊
驱动牛犊
  • 注册日期2012-06-26
  • 最后登录2012-06-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2012-06-27 14:32
不知道我问的问题太低级,还是这里的xd不肯指点,伤心
sunsea
驱动牛犊
驱动牛犊
  • 注册日期2013-03-09
  • 最后登录2013-06-01
  • 粉丝0
  • 关注0
  • 积分39分
  • 威望231点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分2分
地下室#
发布于:2013-04-09 20:44
如果是驱动的话可以升到DISPATCH_LEVEL来阻止调度
游客

返回顶部