实时框架的内核、事件传递与内存管理解析
1. 内核类型及其特点
1.1 香草内核(Vanilla Kernel)
香草内核的任务级响应与其他非抢占式内核相同。在运行过程中,当在某点(2a)一个中断抢占了低优先级活动对象时,中断服务程序(ISR)执行,并向高优先级活动对象发布一个事件(3a)。中断返回后,恢复原来被抢占的低优先级活动对象(4a)。低优先级对象运行完成后返回主循环,此时香草调度器开始运行,选择最高优先级的非空队列,即高优先级活动对象的队列(6a),然后调用高优先级活动对象的 dispatch() 函数并运行至完成。
香草内核的优势在于,它无需为每个任务设置栈或进行复杂的上下文切换就能实现响应性。活动对象自然地协作共享 CPU,并在每个运行至完成(RTC)步骤结束时隐式地相互让步。其实现具有完全的可移植性,适用于低端嵌入式系统。由于通常 RTC 步骤相当短,即使在低端 CPU 上,内核也能实现足够的任务级响应。鉴于其简单性、可移植性和最小的开销,香草内核是首选。只有当这种类型的内核无法满足时序要求时,才考虑使用抢占式内核。
此外,香草内核还允许在更大的多任务系统的单个线程内执行多个活动对象。在这种情况下,当所有事件队列为空时,香草调度器应有效地阻塞,而不是浪费 CPU 周期来轮询事件队列。向任何活动对象队列发布事件应解除内核的阻塞,这需要将香草内核与底层多任务系统集成。
1.2 抢占式 RTC 内核
如果任务级响应要求必须使用抢占式内核,可以考虑一种超级简单的运行至完成(RTC)抢占式内核,它与活动对象计算模型完美匹配。这种内核在软件中实现了与大多数优先级中断控制器在硬件中
超级会员免费看
订阅专栏 解锁全文
3764

被折叠的 条评论
为什么被折叠?



