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

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

3天内不再提示

滴答处理程序不是调度程序

星星科技指导员 来源:嵌入式计算设计 作者:Matt Gordon 2022-06-29 09:19 次阅读

实时内核通常使用定时器或类似的周期性中断源来为多任务应用程序实现延迟和其他有用的服务。尽管利用此类服务所需的代码通常只涉及对内核 API 函数的调用,但似乎周期性中断(或俗称的滴答声)已成为混淆甚至争论的主要来源。内核用户。

新内核用户之间的一个常见误解是滴答处理程序是内核的任务调度程序。换句话说,滴答中断被认为是可以使任务运行的唯一机制。现实情况是,在抢占式、基于优先级的内核中,服务滴答的代码是可能导致 CPU 控制权从一个任务传递到另一个任务的众多代码之一。在此类内核中,任何中断通常都可能导致新任务运行,如图 1 所示,涉及 UART 中断。此外,任务本身可能有多种方式来放弃 CPU 并进入挂起或等待状态。

pYYBAGK7qXuAP5XoAABWXfdoK0E756.png

当任务需要能够控制它在等待状态中花费的时间量时,滴答中断就变得必要了。例如,µC/OS-II 和 µC/OS-III 操作系统提供了一种方法来控制超时参数,这些参数指定非滴答事件的最大等待时间(例如接收 UART 字符),并通过延时函数,如 OSTimeDly()。

图 2 基于 µC/OS-II,突出显示滴答中断在实现 OSTimeDly() 中的作用。在图的左侧,一个相对高优先级的任务调用 OSTimeDly() 来产生一个 5 个滴答的延迟,导致内核在与该任务关联的数据结构中初始化一个延迟字段,并将该任务移出允许另一个任务运行的就绪状态。延迟字段被初始化为值 5,并且在调用 OSTimeDly() 之后的每个滴答中断中,该字段递减。在调用后的第五次中断时,该字段达到 0,并且内核的滴答处理程序(在 µC/OS-II 中是 ISR 的一部分,但在 µC/OS-III 中有自己的任务)使高优先级任务准备好再次运行。然后,该任务将获得 CPU 控制权,因为它的优先级超过了在第五个滴答发生时正在运行的任务的优先级。

pYYBAGK7qYGAA-l0AABYAydpSFY132.png

从技术上讲,可以编写一个没有超时和延迟函数(如 OSTimeDly())的多任务应用程序。然而,大多数多任务系统至少包含一项可以从基于滴答的服务中受益的任务。在接下来的文章中,我将考虑两个重要的滴答参数——频率和优先级——对此类系统的影响。

审核编辑:郭婷

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

    关注

    68

    文章

    10859

    浏览量

    211675
  • 定时器
    +关注

    关注

    23

    文章

    3247

    浏览量

    114755
  • uart
    +关注

    关注

    22

    文章

    1235

    浏览量

    101373
收藏 人收藏

    评论

    相关推荐

    深入解析Linux程序与进程

    关于某个数据集合的一次运行活动。作为系统进行资源分配和调度的基本单位,是操作系统结构的基础。 程序与进程的关系 进程的状态 基础进程状态 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写
    的头像 发表于 12-18 11:01 77次阅读
    深入解析Linux<b class='flag-5'>程序</b>与进程

    Linux驱动程序程序员指南

    电子发烧友网站提供《Linux驱动程序程序员指南.pdf》资料免费下载
    发表于 11-22 15:53 0次下载
    Linux驱动<b class='flag-5'>程序</b><b class='flag-5'>程序</b>员指南

    gawk程序基础教程

    gawk程序是Unix中原始awk程序的GNU版本。gawk程序让流编辑器迈上了一个新的台阶,它提供了一种编程语言而不只是编辑器命令。
    的头像 发表于 10-29 16:42 151次阅读

    使用CSL来补充操作系统调度程序处理级联中断

    电子发烧友网站提供《使用CSL来补充操作系统调度程序处理级联中断.pdf》资料免费下载
    发表于 10-16 10:12 0次下载
    使用CSL来补充操作系统<b class='flag-5'>调度</b><b class='flag-5'>程序</b><b class='flag-5'>处理</b>级联中断

    使用IO-link主帧处理程序实现灵活的时序配置

    电子发烧友网站提供《使用IO-link主帧处理程序实现灵活的时序配置.pdf》资料免费下载
    发表于 09-19 11:28 0次下载
    使用IO-link主帧<b class='flag-5'>处理</b><b class='flag-5'>程序</b>实现灵活的时序配置

    stm32单片机烧录程序会擦除原来的程序

    在STM32单片机烧录程序的过程中, 通常情况下会擦除原来的程序 ,并将新程序写入单片机的闪存(Flash)中。这一过程是通过烧录工具(如ST-Link、J-Link等)实现的,它们负责将程序
    的头像 发表于 09-02 09:42 1958次阅读

    Linux设备驱动程序分类有哪些

    驱动程序可以根据硬件类型进行分类,主要包括以下几种: 1.1 存储设备驱动程序 存储设备驱动程序主要负责与硬盘、固态硬盘、光盘等存储设备进行通信。这类驱动程序需要
    的头像 发表于 08-30 15:11 547次阅读

    母线失压处理的一般程序是什么

    母线失压是指电力系统中母线电压突然下降至零或接近零的情况,这通常会导致电力系统的不稳定和设备损坏。为了确保电力系统的安全稳定运行,需要对母线失压进行及时有效的处理。以下是母线失压处理的一般程序,我们
    的头像 发表于 08-13 17:06 579次阅读

    怎么判断PLC程序丢失了

    PLC(Programmable Logic Controller,可编程逻辑控制器)是一种广泛应用于工业自动化领域的控制器。PLC程序丢失可能会导致设备无法正常运行,甚至造成生产中断。因此,判断
    的头像 发表于 07-25 10:01 1278次阅读

    如何看懂检测设备程序逻辑

    检测设备程序逻辑是确保设备正常运行和提高检测效率的关键。本文将介绍如何看懂检测设备程序逻辑,包括程序结构、程序设计、程序调试、
    的头像 发表于 07-17 16:50 419次阅读

    操作FreeRTOS时,执行__WFI()导致系统滴答中断无法唤醒设备怎么解决?

    内核时钟全部关闭了,导致滴答中断无法触发,不知道是不是这样的原因 2、如果__WFI()无法使用滴答中断唤醒,那能否用普通定时器唤醒,怎么样能够让普通定时器去替代系统滴答呢 希望有高人
    发表于 04-24 08:29

    PLC安装调试流程程序

    模拟I/O输入、输出,检查修改程序本步骤的目的在于验证输入的工作程序的正确性,该程序的逻辑所表达的工艺设备的联锁关系是否与设计的工艺控制要求相符,程序是否畅通。若不相符或不能运行完成全
    发表于 03-05 09:54 417次阅读

    什么是单板机的监控程序

    初始化程序:用于设置单片机的初始状态,包括初始化寄存器、设置中断向量、启动时钟等。   主循环程序:监控程序的主程序,不断循环执行,包括读取输入、
    的头像 发表于 02-02 17:15 1357次阅读
    什么是单板机的监控<b class='flag-5'>程序</b>?

    如何避免PLC程序卡死呢?

    编写稳定的程序:编写良好的、稳定的PLC程序是避免程序卡死的关键。确保程序逻辑清晰、简洁,并遵循编程最佳实践。避免死循环、逻辑错误和冲突的发生。
    的头像 发表于 01-26 09:14 638次阅读

    兆芯正引入Linux首选内核调度技术,优化性能

    近期,兆芯工程团队亦在致力于将首选内核调度技术引进Linux系统中。他们试图通过提议的Linux内核补丁,利用已有的ACPI功能来辨别每个核心的特性。这项补丁将在ACPI CPUFreq驱动程序中体现。这意味着调度
    的头像 发表于 12-29 14:30 567次阅读
    兆芯正引入Linux首选内核<b class='flag-5'>调度</b>技术,优化性能