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

    文章

    1188

    浏览量

    39613
  • cpu
    cpu
    +关注

    关注

    68

    文章

    9372

    浏览量

    204813
  • 函数
    +关注

    关注

    3

    文章

    3248

    浏览量

    60675
  • RTT
    RTT
    +关注

    关注

    0

    文章

    52

    浏览量

    16773
  • ISR
    ISR
    +关注

    关注

    0

    文章

    33

    浏览量

    14231
收藏 人收藏

    评论

    相关推荐

    实用单片机系统MS3再分析

    抢占操作系统内核。消息处理机制比较简单,由于MCU
    发表于 11-25 19:37

    精选Linux入门教材之设备驱动程序+内核设计与实现

    内核,包括0(1)调 度程序、抢占内核。块I/O层以及I/O调度程序等。本书还包含了Linux内核开发者在开发时需要用到的很多信息,包括调试技术、编程风格
    发表于 10-16 15:29

    Linux内核抢占和用户抢占的概念和区别

    内核抢占实现机制。首先介绍了内核抢占和用户抢占的概念和区别,接着分析了不可抢占内核的特点及实时系统中实现内核抢占的必要性。然后分析了禁止内核抢占的情况和
    发表于 08-05 08:18

    如何进行嵌入Linux内核实时化研究?

    抢占内核调度算法,容易引起内核优先级翻转,文献针对非抢占内核,增加抢占点,该方法需要优秀的调度算法。另一种途径是Linux的外部实时性
    发表于 08-06 07:15

    详解Linux内核抢占实现机制

    内核抢占实现机制。首先介绍了内核抢占和用户抢占的概念和区别,接着分析了不可抢占内核的特点及实时系统中实现内核抢占的必要性。然后分析了禁止内核抢占的情况和
    发表于 08-06 06:16

    多任务环境下串口输出debug信息的方法是什么?

    抢占的程序里面不会出现什么问题,不过在抢占内核里面,偶尔会出现一条以上
    发表于 07-20 08:03

    Linux在实时方面存在哪些不足? 如何去改进Linux内核的实时性?

    内核的实时性?怎样去设计抢占内核体系结构?
    发表于 04-26 06:36

    请问微型抢占多任务实时内核怎样去设计?

    抢占多任务实时内核怎样去设计?
    发表于 04-27 06:04

    提高嵌入Linux实时性方法的研究与应用

    Linux 操作系统实时性方法及其在实际中的应用。可抢占内核利用改变中断的调度机制和自旋锁的运行方法使Linux 的内核变成可抢占的。低延迟内核在长耗
    发表于 04-24 10:34 14次下载

    OSEK车用嵌入RTOS的设计

    内核的设计方案。任务定义遵循OSEK 的BCC1 Conformance Classes,内核为可抢占内核。在内存使用
    发表于 04-24 11:09 39次下载

    详细分析Linux内核态的抢占机制

    抢占内核是由任务主动放弃CPU的使用权。非抢占调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态。但
    发表于 05-14 13:54 999次阅读
    详细分析Linux<b>内核</b>态的<b>抢占</b>机制

    linux内核调度与spinlock的相互关系

    内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占内核中需要的锁定服务。
    发表于 05-15 14:38 319次阅读
    linux<b>内核</b>调度与spinlock的相互关系

    抢占内核和非抢占内核的内容

    抢占内核的优点之一是中断延迟更低,在任务级别,非抢占内核也可以使用不可重入函数。每个任务都可以使用不可重入函数,而不必担心被另一个任务破坏。这是因为每个任务都可以在放弃 CPU 之前运行到完成。但是,不应允许不可重入函数放弃对 CPU 的控制。
    的头像 发表于 06-02 14:35 944次阅读

    抢占内核工作过程

    抢占内核抢占内核要求每个任务(线程)都做一些事情来明确放弃对 CPU 的控制,为了保持多任务并发的错觉,必须要有这一步操作。 非抢占调度也称为协作多任务,任务相互协作以共享 CPU,异步
    的头像 发表于 09-29 18:38 683次阅读
    非<b>抢占</b><b>式</b><b>内核</b>工作过程

    操作系统中抢占和非抢占内核的区别

    抢占内核和非抢占内核,通常RTOS都是抢占内核。你知道抢占内核和非抢占内核的区别吗?
    的头像 发表于 05-29 10:47 271次阅读
    操作系统中<b>抢占</b><b>式</b>和非<b>抢占</b><b>式</b><b>内核</b>的区别