当前位置:网站首页>FreeRTOS内核小结
FreeRTOS内核小结
2022-07-27 23:53:00 【ViTO_2001】
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
边栏推荐
猜你喜欢

Article reproduction: super resolution network fsrcnn

登录功能实现

了解Shader

Can anime characters become "real people"? Paddegan helps you find the TA of "tear man"

Icml2022 | online decision transformer

面试官:你确定Redis是单线程的进程吗?

Baidu PaddlePaddle easydl: when AI enters the factory, "small bearing" can also turn "big industry"

腾讯云HiFlow场景连接器

docker 本地搭建mysql主从

MPLS 隧道实验
随机推荐
[style set 1] tab
软件测试面试题:性能测试指标有哪些?
Transplant QT system for i.mx6ull development board - cross compile QT code
26. Abstraction and template ideas
VPP之DPDK插件
Byte monthly salary 28K, share a wave of my automation testing experience
Interview question 01.09. string rotation
Load balancing SLB
Linux安装mysql8.0.29详细教程
登录功能实现
Niuke multi School Game 3 A, c+ weight segment tree
Three instance
Login function implementation
C#学习笔记----C#连接MySQL数据库
Sort out SQL performance optimization and collect classics!
C语言·指针
Standing at the crossroads of digital retail transformation, we need to look at it from a new perspective
Leetcode 2341. How many pairs can an array form
【分布式开发】之 CAP 原则
企业运维实践-使用Aliyun容器镜像服务对海外gcr、quay仓库镜像进行镜像拉取构建