[FreeRTOS 基础知识] 任务调度 与 链表

文章目录

    • 任务并行的概念
    • RTOS如何实现多任务调度?


任务并行的概念

在生活中,经常出现一心多用的情况。比如你需要一边吃饭一边手机回复信息,这里面就存在两个任务:任务一、吃饭。任务二、手机回复信息。
假如你无法一心多用,在一个时间段中只能处理一个任务,这时 就会循环执行吃饭(时间:a1 ~ a6)。
同样在一个时间段中只能处理手机回复信息任务,这时会循环执行手机回复信息任务(时间:b1 ~ b6)。
若要使任务并行运行,可以将吃饭和手机回复信息两个任务的时间打碎并且穿插在一起运行(时间:a1、b1、a2、b2、a3、b3、a4、b4、a5、b5、a6、b6)
当你的大脑处理任务的速度足够快,在宏观上看两个任务是同步进行。

RTOS也是如此,若想要将多任务同时进行的时候,RTOS将时间分成很多个小片段,每个小片段调度不同的任务运行。这样就实现多任务在RTOS上是并列运行的。

在这里插入图片描述


RTOS如何实现多任务调度?

在RTOS中存在多个任务(假如 task1~ task10),为了实现多任务同时调度运行,内部维护三类任务链表 (Ready List 就绪链表、Delay List 等待链表、Suspend List 挂起链表)。
Ready List 就绪链表 分为 6个优先级不同的链表。任务可以根据自身的优先级进行站队。

在这里插入图片描述
优先级值越小,任务优先级越高。task3优先级高于其他队列。
当系统时间片段到达时会触发Tick中断,中断里执行两个动作:
1、循环遍历每个就绪链表找出最高优先级的任务。
2、执行

如果task3 任务运行过程出现阻塞,会将task3移动到Delay List 等待链表。此时,当Tick中断到来时遍历优先级为4里的任务,取出task1运行完,将task1移动至task10后面。接着取出task2运行完,将task2移动至 此时task1后面。以此类推。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端技术入门指南

引言 在数字化时代,前端开发成为了连接用户与数字世界的重要桥梁。无论你是对编程充满好奇的新手,还是想要拓展自己技能领域的在职人员,前端开发都是一个值得学习和探索的领域。本文将带你走进前端技术的世界,为你提供一个入门指…

【Modelground】个人AI产品MVP迭代平台(5)——神投手(实时投篮检测游戏)

文章目录 介绍篮框识别进球算法离屏渲染总结 介绍 神投手是我开发的一款移动端web实时投篮检测游戏。其解决的痛点是:专为投篮训练而生的,有手机就能玩的投篮计数游戏。我本人是一个篮球爱好者,特点就是投篮准,虽然投篮挺靠天赋&…

DevExpress WPF中文教程:Grid - 如何向项目添加GridControl并绑定到数据

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

第十二届蓝桥杯单片机国赛练习代码

文章目录 前言一、问题重述二、主函数总结 前言 第十五蓝桥杯国赛落幕已有十天,是时候总结一下,这个专栏也将结束。虽然并没有取得预期的结果,但故事结尾并不总是美满的。下面是赛前练习的第十二届国赛的代码。 一、问题重述 二、主函数 完整…

大数据快速使用Kerberos认证集群

一、创建安全集群并登录其Manager 创建安全集群,开启“Kerberos认证“参数开关,并配置“密码“、“确认密码“参数。该密码用于登录Manager,请妥善保管。 登录MRS管理控制台页面。 单击“集群列表“,在“现有集群“列表&#xf…

虚拟机调用摄像头设备一直 select timeout问题的解决

在VMware里面调用v4l2-ctl捕获图像,或者opencv的VideoCapture(0)捕获图像,或者直接调用v4l2的函数,在streamon后,调用select读取数据,均会一直提示select timeout的问题,大概率是由于USB版本的兼容性造成的…

fs.1.10 ON rockylinux8 docker镜像制作

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 rockylinux docker上编译安装fs1.10版本的流程记录。 环境 docker engine:Version 24.0.6 rockylinux docker:8 freeswitch:v1.10.7 手动模式 rockylinux准备 docker hub拉取r…

AI智能体做高考志愿填报分析

关注公众号,赠送AI/Python/Linux资料,对AI智能体有兴趣的朋友也可以添加一起交流 高考正在进行时,学生焦虑考试,家长们焦虑的则是高考志愿怎么填。毕竟一个好的学校,好的专业是进入社会的第一个敲门砖 你看张雪峰老师…

2024.6.10学习记录

1、代码随想录二刷 2、项目难点 review 3、计组复习

RabbitMQ-工作模式(Topics模式RPC模式Publisher Confirms模式)

文章目录 Topics模式topic代码示例 RPC模式客户端界面回调队列关联ID总结RPC代码示例 Publisher Confirms模式概述在通道上启用发布者确认单独发布消息批量发布消息异步处理发布者确认总结总体代码示例 更多相关内容可查看 Topics模式 在Topics中,发送的消息不能具…

目标检测算法YOLOv9简介

YOLOv9由Chien-Yao Wang等人于2024年提出,论文名为:《YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information》,论文见:https://arxiv.org/pdf/2402.13616 ;源码见: https://github.com/W…

一文带你轻松掌握Java数组定义和声明

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

Java_Map集合

认识Map集合 Map集合称为双列集合,格式:{key1value,key2value2,key3value3,…},一次需要存一对数据作为一个元素。 Map集合的每个元素“Keyvalue” 称为一个键值对/键值对对象/一个Entry对象,Map集合也被叫做“键值对集合” Map集…

Vue笔记(二)

Vue(一):Vue笔记(一)-CSDN博客 综合案例:水果购物车 项目功能: 视频链接:034-水果购物车-基本渲染_哔哩哔哩_bilibili 目录结构: index.css .app-container {padding-…

已解决Error || RuntimeError: size mismatch, m1: [32 x 100], m2: [500 x 10]

已解决Error || RuntimeError: size mismatch, m1: [32 x 100], m2: [500 x 10] 原创作者: 猫头虎 作者微信号: Libin9iOak 作者公众号: 猫头虎技术团队 更新日期: 2024年6月6日 博主猫头虎的技术世界 🌟 欢迎来…

第十一篇——信息增量:信息压缩中的保守主义原则

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 通过信息中的保守主义,我想到了现实中人的保守主义一样&#…

汇编语言作业(五)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、 实验总结 一、实验目的 1.熟悉掌握汇编语言的程序结构,能正确书写数据段、代码段等 2,利用debug功能,查看寄存器(CS,IP,AX,DS..)及数据段的…

基于AI大文本模型的智慧对话开发设计及C#源码实现,实现智能文本改写与智慧对话

文章目录 1.AI 大模型发展现状2.基于AI服务的智慧对话开发2.1 大模型API选择2.2 基于C#的聊天界面开发2.3 星火大模型API接入2.4 优化开发界面与显示逻辑 3.源码工程Demo及相关软件下载参考文献 1.AI 大模型发展现状 端午假期几天,关注到国内的AI大模型厂商近乎疯狂…

计算机网络期末考试知识点(关键词:江中)

目录 大家端午节快乐呀!又到了一年两度的期末考试月了,这里给大家整理了一些复习知识点,大家可以边吃粽子边复习,事半功倍哈哈哈。祝各位期末过!过!过!。 1 第一章 计算机网络体系结构 计算机…

Kaggle -- Digit Recognizer 98.57%

使用卷积神经网络进行模型构建,代码如下: import pandas as pd import numpy as np import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torch.utils.data import DataLoader, Dataset, random_spl…