FreeRTOS内核小结

FreeRTOS内核小结

1.调度方式

FreeRTOS的调度方式分为抢占式调度协程式调度

  • 抢占式调度:

    与任务的状态和优先级有关,Freertos里面有一个Tick心跳时钟,其是每1ms进入一次Tick中断里面,在中断里会将当前CPU的寄存器压入该任务分配的栈中,同会在就绪任务链表里面寻找优先级最高的任务(如果同等优先级的任务,则轮流执行),将该任务的状态从栈中出栈到CPU寄存器并进行运行。

  • 协程式调度

    在满足下列三种情况就会发生调度:

    1.一个任务函数执行了让步函数

    2.一个任务函数调用了使任务函数阻塞的API

    3.应用程序明确定义了在中断中执行上下文

2.信号量

信号量的种类根据信号量的个数分为二值信号量和多值信号量,常用于控制对共享资源的访问的应用中。

3.互斥信号量

互斥信号量即互斥锁,分为普通互斥量和递归互斥量,应用于多个互斥的任务。在使用互斥信号量时需注意,互斥信号量的获取必须有释放,如果不释放,可能会造成程序的死锁,即两个任务获取了对方拥有的锁,各自进入挂起列表,无法释放互斥锁。

  • 普通互斥量:只能获取一次,重复获取是无效的。

  • 递归互斥量:可以获取多次,但对应的也要释放多次才能让出使用权。

4.消息队列

用于任务间的数据通信、数据传输,在操作系统里面,直接使用全局变量传输数据十分危险,此篇有讲全局变量的危险性

在这里插入图片描述

5.事件标志组

任务间的同步除了信号量还有事件标志组,信号量的同步通常是一对一的同步,有的时候系统需要多对一的同步,至于事件标志组的可以查看该专栏关于事件标志组使用的博客。

6.任务通知

任务通知是一个事件,假设某个任务因为等待任务通知而阻塞的话,向这个接收任务发送任务通知以后就会解除这个任务的阻塞状态。

本篇小结参考了:https://blog.csdn.net/qq_45396672/article/details/120877303?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165718262116781683971267%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165718262116781683971267&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-120877303-null-null.185v2control&utm_term=free&spm=1018.2226.3001.4450

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值