博客专栏

EEPW首页 > 博客 > 详解FreeRTOS:嵌入式多任务系统的多任务机制(理论篇—2)

详解FreeRTOS:嵌入式多任务系统的多任务机制(理论篇—2)

发布人:美男子玩编程 时间:2023-05-16 来源:工程师 发布文章

在详解FreeRTOS:嵌入式软件系统架构(理论篇—1)文章中,讲解到轮询系统架构、前后台系统架构和多任务系统架构的特点和区别。从本篇文章开始讲一讲嵌入式多任务系统架构的理论知识。

在单处理器(嵌入式MCU)的计算机系统中,在某一具体时刻处理器只能运行一个任务,但是可以通过将处理器运行时间分成小的时间段,多个任务按照一定的原则分享这些时间段的方法,轮流加载执行各个任务,从而从宏观上看,有多个任务在处理器上同时执行,这就是单处理器系统上的多任务机制的原理,如下图所示:

图片


任务A和任务B按照等长时间轮流占用处理器,在单处理器上造成多个任务同时运行的假象。

这里先聊一聊多任务系统架构的分割时间段。

将处理器运行时间分成小的时间段指明了把处理器时间以多大的频率分割成固定长度的时间片段,也叫做多任务系统架构的时钟节拍。作为多任务系统运行的时间尺度,时钟节拍是通过特定的硬件定时器产生的。硬件定时器会产生周期的中断,在相应的中断处理函数中,内核代码得以运行,从而进行任务调度和定时器时间处理等内核工作。


图片


硬件定时器中断的时间间隔取决于不同的内核设计,一般是毫秒级的。时钟节拍越快,内核函数介入系统运行的几率就越大,时钟节拍中断响应次数越多,内核占用的处理器时间越长。相反,如果时钟节拍太慢,则导致任务的切换间隔时间过长,进而影响到系统对事件的响应效果。

举个例子,如下图所示,硬件定时器按照固定的时间间隔产生中断,然后在时钟节拍中断ISR中(图中以T标记)处理内核的工作。T0~T1这段时间是内核占用的时间(时钟节拍处理程序),T1~T2这段时间是任务占用的时间。而T0~T2则是一次时钟节拍的全部时间,可以看出,任务1的本轮执行占用了3个时钟节拍。


图片


因为不同任务的运行路径不同,在某一时刻有些任务可能需要等待一些资源,这时可以通过某种方案,使当前任务让出处理器,从而避免因为任务等待资源而长期占有处理器而使其他任务无法运行。这样多任务机制可以使处理器的利用率得到提高,并提高了系统的处理能力。

在多任务操作系统内核中必须提供解决并发任务的机制。通用操作系统一般以“进程”、“线程"等为单位来管理用户任务。

但在很多嵌入式操作系统中,并没有区分进程和线程,只是把整个操作系统当作一个大的运行实体,其中运行着很多任务。任务通常作为调度的基本单位。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词: FreeRTOS 嵌入式

相关推荐

技术专区

关闭