tbwshc

tbw

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

常用链接

留言簿(4)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 

简单地说,调度点是一组导致调用调度程序的操作系统事件。我们已经遇到了两个这样的事件:任务创建和任务的删除。每一个事件期间,方法os.schedule被调用以选择下一个要运行的任务。如果目前运行的任务仍旧在就绪的任务中具有最高的优先级,那么它将被允许继续使用处理器。否则,接下来,最高优先级的任务将被执行。当然,在任务删除的情况下,选择的总是一个新任务:根据它不再存在的事实,所以目前运行的任务不再处于就绪的状态。一个第三方的调度点叫作时钟节拍。时钟节拍是一个由时钟中断处触发的周期性事件。时钟节拍提供了一个机会以唤醒那些等待软件时钟到期的任务。这和我们在前而章节中看到的时钟节拍几乎是一样的。实际上,对于软件时钟的支持是嵌入式系统的一个普遍特性。在一个时钟节拍期间,操作系统使每一个活动的软件时钟减值并且检测它们。当一个时钟到期了,所有等待它结束的任务从等待状态变为就绪状态。然后,tb调度程序被调用以确定新唤醒的任务和此时钟中断之前运行的任务相比是否具有更高的优先级。

在 ADEOS 中时钟节拍例程几乎与第七章“外围设备”中的那个例程是一样的。实际上,我们仍旧使用相同的Timer 类。只有这个类的实现被轻微地改变了。这些变化是为了考虑到多个任务可能等待同一个软件时钟的事实。此外,所有对于disable()和enable()的调用都被enterCS()和exitCS()替换了,并且时钟节拍的长度从1 ms 增加到10 ms。

 

posted on 2013-09-11 16:28 tbwshc 阅读(263) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理