QNX手册学习笔记————中断机制

继续学习QNX_Neutrino_RTOS_Archituecture的interrupt部分。
刚开始学习就遇到了ISR的概念和Interrupt handler 概念的区别问题。查阅维基百科,ISR与Interrupt handler是同一个概念,都是由interrupt引发的callback函数。类似于C#中的event,当我们敲击键盘或移动鼠标时,会产生一个事件,而该事件可以被多个中断监听,从而执行各个callback的回调操作。在linux等操作系统中,优先级的执行分为第一优先级ISR和第二优先级ISR。第一优先级,即interrupt service routine;当它执行时,通常会屏蔽中断,直至执行结束,因此会引起jitter(我的理解是,每个实时任务的执行时间可能长也可能短)。为了减小jitter,应该尽量减少ISR的执行时间;如果有更加复杂的任务,应该放到第二优先级ISR中去执行。第一优先级的执行,包括处理器的context切换等。第二优先级ISR通常指的是process或thread,执行较为复杂的任务,时间限制没有规定得那么死。
   Interrupt的内容在QNX的微内核的最后一节。通常情况下,一个教为重要的延迟是interrupt latency,即从interrupt 发生至interrupt handler的执行,如下图中的Til,产生这个延迟时间是由于操作系统内核中存在屏蔽中断的临界代码。但是QNX将这个时间限制得小。
     QNX手册学习笔记————中断机制

  另外一个重要的延迟是schedule latency,如下图中的Tsl。该延迟在有不同优先级线程切换时产生,包括IR和pc等context资源的保存和加载所占用的时间。Tsl仅是偶尔发生。

例如通过串口发送数据时,每次中断都发送一个数据,都不会产生Tsl。仅当发送缓存快为空时,会引发sigEvent事件产生线程或进程的切换,让新的线程对发送缓存进行装载。
    QNX手册学习笔记————中断机制
        同时QNX中断机制还支持多重中断(Nested interrupt)机制, 即中断在未屏蔽的情况下,这在在执行的
event handler可以被更高优先级的硬中断而中断。但是具体的thread中的task的执行,需要各个中断的event handler执行完毕后,统一调度执行。如下图所示。
    QNX手册学习笔记————中断机制
  QNX手册中详细阐述了两个接口InterruptAttach,和InterruptEventAttach两个常用的接口。通过他们来绑定eventhandler。值得注意的是,一个中断可以绑定多个event handler。
文中给了一个InterruptAttach的例子。该例子是一个循环定时器中断引起eventhandler对thread中的计数器轮询增加的例子。该例子可以看出,event handler 是包含在线程中的;event handler 可以运用和更改thread中的资源变量,并作为条件进行判断;当handler中满足某个条件时,可以向内核返回event,从而引起不同有限级线程之间的切换。为了更好地实现实时效果,应该尽量减少event handler中的程序执行的时间,而将复杂的程序放在线程中处理,这与维基百科中的说法是一致的。即减少硬中断执行的时间,增加软中断的执行时间。
InterruptEventAttach 是一个有限选择的方法,因为使用该方法,在event handler中不能执行用户自己写的代码,从而避免了浪费时间,从而降低实时性。该方法直接将event送给相应的线程执行。
另外,还有内存映射放在线程中而不是放在内核中;最长中断时间可以计算;除中断实现线程导切外,还可通过event hook相关的线程和进程的方式。例如当没有其他认为执行时,系统会通过传递event的方式,执行最低优先级的空闲线程(idle task)。将低功耗线程hook到该event,可以实现低功耗。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要下载QNX开发手册,可以按照以下步骤进行操作: 1. 打开浏览器,进入QNX官方网站。 2. 在官方网站的导航栏或搜索框中寻找并点击“开发者资源”或类似的选项。 3. 在开发者资源页面中,浏览并查找与QNX开发手册相关的下载链接或文档。 4. 选择相应的开发手册版本和语言(例如,英文或中文),然后点击下载链接。 5. 确保你有足够的存储空间,并选择保存位置。 6. 等待下载完成,然后在保存的位置查找并打开下载的QNX开发手册。 下载QNX开发手册能够帮助开发人员更好地理解和使用QNX操作系统及其相关工具。这些手册通常包含了关于如何在QNX平台上进行应用程序开发、系统配置和调试的详细指南和参考资料。根据手册的具体内容,它们可能会包括QNX的架构、API文档、教程示例、代码示例以及最佳实践建议等。 无论是初学者还是有经验的开发者,下载QNX开发手册都有助于提高他们在QNX环境中的开发技能和效率。可以通过了解QNX开发手册中的内容和指导,更好地利用QNX提供的功能和特性,解决开发过程中遇到的问题,并开发出高质量、可靠性强的应用程序。 ### 回答2: QNX开发手册是一本详细介绍QNX实时操作系统开发的参考指南,提供了丰富的开发资料和技术文档。如需下载QNX开发手册,可以通过以下步骤进行: 1. 访问QNX的官方网站:https://www.qnx.com/ 2. 在网站的搜索框中输入“QNX开发手册”。 3. 在搜索结果中找到QNX开发手册的相关页面。 4. 点击相关页面链接,进入QNX开发手册的下载页面。 5. 确认操作系统的版本和你所需的开发手册版本,并选择合适的下载选项。 6. 点击下载按钮,开始下载QNX开发手册。 7. 下载完成后,可以将开发手册保存在本地的合适位置,如电脑的文档文件夹中。 QNX开发手册提供了丰富的开发资料,包括操作系统内核的架构、驱动程序开发、应用程序开发等方面的内容。通过学习和参考开发手册,我们可以深入了解QNX操作系统的原理和功能,并且能够更好地进行应用程序的开发和调试。 同时,QNX开发手册也提供了一些示例代码和使用方法,可以帮助开发者更快地上手和掌握QNX的开发技术。无论是初学者还是有经验的开发者,都可以通过下载和参考QNX开发手册,提高开发效率和质量。 总之,QNX开发手册是从QNX官方网站上下载并学习的,它是一本重要的参考资料,可以帮助开发者在QNX实时操作系统上进行开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值