0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

抢占式内核

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-09-29 18:40 次阅读

μC/OS、RTT等大多数实时内核都是抢占式的,准备运行的最高优先级任务始终被赋予 CPU 控制权。

当一个任务使更高优先级的任务准备好运行时,当前任务被抢占(挂起)并且更高优先级的任务立即获得 CPU 的控制权。

如果 ISR 使更高优先级的任务准备就绪,当 ISR 完成时,被中断的任务被挂起并恢复新的更高优先级任务。

poYBAGM1dd6AGl4QAAFO_HeIp_U136.png

(1) 任务正在执行但被中断。(2) 如果中断被使能,CPU 向量(跳转)到 ISR。(3) ISR 处理事件并使更高优先级的任务准备好运行。ISR 完成后,调用内核提供的服务(即调用内核提供的函数)。(4) & (5) 该函数知道一个更重要的任务已经准备好运行,因此内核将执行上下文切换并执行更重要的代码而不是返回到被中断的任务任务。当更重要的任务完成时,内核提供的另一个函数被调用,让任务进入休眠状态,等待事件(即 ISR)发生。(6) & (7) 然后内核“看到”需要执行一个较低优先级的任务,并完成另一个上下文切换以恢复被中断任务的执行。

使用抢占式内核,最高优先级任务的执行是确定性的;你可以确定它何时可以控制 CPU。因此,通过使用抢占式内核可以最大限度地减少任务级响应时间。

使用抢占式内核的应用程序代码不应使用不可重入函数,除非通过使用互斥信号量确保对这些函数的独占访问,因为低优先级和高优先级任务都可以使用公共函数。如果较高优先级的任务抢占正在使用该功能的较低优先级的任务,则可能会发生数据损坏。

总而言之,抢占式内核始终执行准备运行的最高优先级任务。中断抢占任务,完成 ISR 后,内核将继续执行准备运行的最高优先级任务(而不是被中断的任务)。任务级别的响应是最佳的和确定性的,当系统响应性很重要时,建议使用抢占式内核。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1372

    浏览量

    40293
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10863

    浏览量

    211791
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62625
  • RTT
    RTT
    +关注

    关注

    0

    文章

    65

    浏览量

    17133
  • ISR
    ISR
    +关注

    关注

    0

    文章

    38

    浏览量

    14435
收藏 人收藏

    评论

    相关推荐

    嵌入学习-飞凌嵌入ElfBoard ELF 1板卡-Linux内核移植之内核简介

    学到本章节,大家应该对Linux操作系统都有了一定的了解,但可能还不知道我们拿到手的内核源码都经历了什么。linux有一个庞大的开源社区,每个人都可以向开源社区提交代码。由于linux内核十分庞大
    发表于 12-16 13:08

    飞凌嵌入ElfBoard ELF 1板卡-Linux内核移植之内核简介

    学到本章节,大家应该对Linux操作系统都有了一定的了解,但可能还不知道我们拿到手的内核源码都经历了什么。linux有一个庞大的开源社区,每个人都可以向开源社区提交代码。由于linux内核十分庞大
    发表于 12-13 09:03

    嵌入工程师都在找的【Linux内核调试技术】建议收藏!

    在嵌入系统的开发中,Linux内核调试是一个至关重要的环节。 随着处理器技术的不断进步和嵌入领域的蓬勃发展,掌握有效的内核调试技术成为了开发者们的一项必备技能。本文将介绍几种常见
    发表于 11-28 15:37

    嵌入Hypervisor:架构、原理与应用 阅读体验 +分离内核的嵌入Hyperviso

    读后感:分离内核与SKH架构的深刻洞察 在阅读了关于分离内核和SKH(分离内核Hypervisor)的详细阐述后,我深感这一技术在现代计算机系统,尤其是嵌入系统和安全关键系统中的重要
    的头像 发表于 10-12 17:06 326次阅读
    嵌入<b class='flag-5'>式</b>Hypervisor:架构、原理与应用 阅读体验 +分离<b class='flag-5'>内核</b>的嵌入<b class='flag-5'>式</b>Hyperviso

    rtthread是抢占的rtos,那么线程的timeout参数具体的作用是什么呢?

    查阅相关说明,rtthread是抢占的rtos,那么线程的timeout参数具体的作用是什么呢, 假如线程A,B的优先级分别是1和2,timeout是10ms。当线程B 在运行中,还未到timeout,此刻挂起的线程A被触发,是直接
    发表于 09-27 08:39

    新书发布——《RT-Thread嵌入实时操作系统内核、驱动和应用开发技术》

    我们非常高兴地宣布,由郑苗秀、沈鸿飞和廖建尚编著的《RT-Thread嵌入实时操作系统内核、驱动和应用开发技术》一书正式发布。本书的编写团队由多位在嵌入和实时操作系统领域有着丰富经验的专家组
    的头像 发表于 09-03 08:06 599次阅读
    新书发布——《RT-Thread嵌入<b class='flag-5'>式</b>实时操作系统<b class='flag-5'>内核</b>、驱动和应用开发技术》

    Linux内核测试技术

    Linux 内核是Linux操作系统的核心部分,负责管理硬件资源和提供系统调用接口。随着 Linux 内核的不断发展和更新,其复杂性和代码规模也在不断增加。因此,确保内核的稳定性和可靠性变得尤为重要
    的头像 发表于 08-13 13:42 493次阅读
    Linux<b class='flag-5'>内核</b>测试技术

    欢创播报 华为宣布鸿蒙内核已超越Linux内核

    1 华为宣布鸿蒙内核已超越Linux内核   6月21日,在华为开发者大会上, HarmonyOS NEXT(鸿蒙NEXT)——真正独立于安卓和iOS的鸿蒙操作系统,正式登场。这是HarmonyOS
    的头像 发表于 06-27 11:30 845次阅读

    实时操作系统之RT-Thread及FreeRTOS

    (RTOS),它们在设计理念、内核架构、生态系统和应用领域等方面有一些区别:内核设计:FreeRTOS的内核是基于优先级的抢占
    的头像 发表于 05-29 08:10 3901次阅读
    实时操作系统之RT-Thread及FreeRTOS

    相同的代码,不同的工程出现定时器抢占的现象怎么解决?

    如题,相同的代码,不同的工程出现定时器抢占的现象,事情是这样的 ​项目功能描述:emwin作为人机交互,根据界面的输入值,8个TIM依次输出驱动电机,驱动方式为定时器中断翻转IO电平的方式
    发表于 05-15 08:27

    求助,关于stm32F4中断优先级0无法抢占的问题求解

    使用F407遇到一个抢占优先级的问题: 现设置优先级分组 HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);也就是15个优先级分组。按照手册说明0
    发表于 04-23 07:26

    嵌入实时操作系统优先级抢占调度机制解析

    抢占发生时,任务即使没有完成也会被迫放弃处理器,此时任务并没有被挂起,而是会返回就绪队列。任务在队列中的位置是由优先级决定的,它会在队列中等待到下一次被调度。
    的头像 发表于 04-05 05:22 2817次阅读
    嵌入<b class='flag-5'>式</b>实时操作系统优先级<b class='flag-5'>抢占</b><b class='flag-5'>式</b>调度机制解析

    STM32F103的寄存器NVIC_IPRx抢占优先级和子优先级是怎么设置的?

    STM32F103的寄存器NVIC_IPRx有些不明白,抢占优先级和子优先级是怎么设置的? 如果,中断分组2,抢占优先级3,子优先级3 那下面这样写对吗? SCB->AIRCR|=0x05FA0500; NVIC->IP[1]|=11110000;
    发表于 03-27 07:48

    鸿蒙使用的是微内核

    我们常说,看一个系统是不是自研,就看它的内核,常见的内核分为:宏内核和微内核,当然还有两者结合体,他们到底有什么区别? 白话宏内核和微
    的头像 发表于 01-30 16:43 487次阅读
    鸿蒙使用的是微<b class='flag-5'>内核</b>?

    智能集成:整合模拟元件和ARM微控制器内核,解决棘手嵌入系统问题

    智能集成:整合模拟元件和ARM微控制器内核,解决棘手嵌入系统问题
    的头像 发表于 01-05 18:18 727次阅读
    智能集成:整合模拟元件和ARM微控制器<b class='flag-5'>内核</b>,解决棘手嵌入<b class='flag-5'>式</b>系统问题