μC/OS、RTT等大多数实时内核都是抢占式的,准备运行的最高优先级任务始终被赋予 CPU 控制权。
当一个任务使更高优先级的任务准备好运行时,当前任务被抢占(挂起)并且更高优先级的任务立即获得 CPU 的控制权。
如果 ISR 使更高优先级的任务准备就绪,当 ISR 完成时,被中断的任务被挂起并恢复新的更高优先级任务。

(1) 任务正在执行但被中断。(2) 如果中断被使能,CPU 向量(跳转)到 ISR。(3) ISR 处理事件并使更高优先级的任务准备好运行。ISR 完成后,调用内核提供的服务(即调用内核提供的函数)。(4) & (5) 该函数知道一个更重要的任务已经准备好运行,因此内核将执行上下文切换并执行更重要的代码而不是返回到被中断的任务任务。当更重要的任务完成时,内核提供的另一个函数被调用,让任务进入休眠状态,等待事件(即 ISR)发生。(6) & (7) 然后内核“看到”需要执行一个较低优先级的任务,并完成另一个上下文切换以恢复被中断任务的执行。
使用抢占式内核,最高优先级任务的执行是确定性的;你可以确定它何时可以控制 CPU。因此,通过使用抢占式内核可以最大限度地减少任务级响应时间。
使用抢占式内核的应用程序代码不应使用不可重入函数,除非通过使用互斥信号量确保对这些函数的独占访问,因为低优先级和高优先级任务都可以使用公共函数。如果较高优先级的任务抢占正在使用该功能的较低优先级的任务,则可能会发生数据损坏。
总而言之,抢占式内核始终执行准备运行的最高优先级任务。中断抢占任务,完成 ISR 后,内核将继续执行准备运行的最高优先级任务(而不是被中断的任务)。任务级别的响应是最佳的和确定性的,当系统响应性很重要时,建议使用抢占式内核。
-
内核
+关注
关注
4文章
1436浏览量
42482 -
cpu
+关注
关注
68文章
11216浏览量
222877 -
函数
+关注
关注
3文章
4406浏览量
66816 -
RTT
+关注
关注
0文章
66浏览量
18126 -
ISR
+关注
关注
0文章
38浏览量
15115
发布评论请先 登录
Linux内核printk日志级别全解析:从参数解读到实操配置
RT-Thread v5.2.2 正式发布:内核稳健性增强,驱动组件全面升级 | 技术集结
单片机的操作系统
国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—Linux-RT应用开发案例
一文读懂:嵌入式Linux实时性进阶
基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究
使用TFTP加载内核设备树

抢占式内核
评论