μC/OS-II---内核:多任务与调度
目录
- 内核:多任务(ucos_ii.h文件的函数)
- Task创建
- Task创建(扩展)
- Task删除/请求删除Task
- 改变Task优先级
- Task挂起和恢复
- Task信息获取
- Task调度器上锁和开锁
- 内核:调度(oc_core.c文件的函数)
- OS_TCB(任务控制块)初始化
- 任务控制块列表(ucos_ii.h文件的函数)
- 系统调用,主动让渡CPU
- 发生中断,强制当前任务让渡CPU
- 就绪表(ucos_ii.h文件的函数)
- 设置任务进入就绪态
- 设置任务脱离就绪态
- 在就绪表中找到优先级最高(数最小)的任务

内核:多任务(ucos_ii.h文件的函数)
Task创建
#if OS_TASK_CREATE_EN > 0u
INT8U OSTaskCreate (void (*task) (void *p_arg),void *p_arg,OS_STK *ptos,INT8U prio);
#endif
Task创建(扩展)
#if OS_TASK_CREATE_EXT_EN > 0u
INT8U OSTaskCreateExt (void (*task) (void *p_arg),void *p_arg, OS_STK *ptos, INT8U prio, INT16U id, OS_STK *pbos, INT32U stk_size, void *pext,INT16U opt);
#endif
Task删除/请求删除Task
#if OS_TASK_DEL_EN > 0u
INT8U OSTaskDel (INT8U prio);
INT8U OSTaskDelReq (INT8U prio);
#endif
改变Task优先级
#if OS_TASK_CHANGE_PRIO_EN > 0u
INT8U OSTaskChangePrio (INT8U oldprio, INT8U newprio);
#endif
Task挂起和恢复
#if OS_TASK_SUSPEND_EN > 0u
INT8U OSTaskResume (INT8U prio);
INT8U OSTaskSuspend (INT8U prio);
#endif
Task信息获取
#if OS_TASK_QUERY_EN > 0u
INT8U OSTaskQuery (INT8U prio,OS_TCB *p_task_data);
#endif
Task调度器上锁和开锁
#if OS_SCHED_LOCK_EN > 0u
void OSSchedLock (void);
void OSSchedUnlock (void);
#endif
内核:调度(oc_core.c文件的函数)
OS_TCB(任务控制块)初始化
INT8U OS_TCBInit (INT8U prio,OS_STK *ptos,OS_STK *pbos,INT16U id,INT32U stk_size,void *pext,INT16U opt);
任务控制块列表(ucos_ii.h文件的函数)
OS_EXT OS_TCB OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];
系统调用,主动让渡CPU
void OS_Sched (void)
{#if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */OS_CPU_SR cpu_sr = 0u;#endifOS_ENTER_CRITICAL();if (OSIntNesting == 0u) /* Schedule only if all ISRs done and ... */{if (OSLockNesting == 0u) /* ... scheduler is not locked */{OS_SchedNew();OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];if (OSPrioHighRdy != OSPrioCur) /* No Ctx Sw if current task is highest rdy */{#if OS_TASK_PROFILE_EN > 0uOSTCBHighRdy->OSTCBCtxSwCtr++; /* Inc. # of context switches to this task */#endifOSCtxSwCtr++; /* Increment context switch counter */OS_TASK_SW(); /* Perform a context switch */}}}OS_EXIT_CRITICAL();
}
发生中断,强制当前任务让渡CPU
void OSIntExit (void)
{#if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */OS_CPU_SR cpu_sr = 0u;#endifif (OSRunning == OS_TRUE){OS_ENTER_CRITICAL();if (OSIntNesting > 0u) /* Prevent OSIntNesting from wrapping */{OSIntNesting--;}if (OSIntNesting == 0u) /* Reschedule only if all ISRs complete ... */{if (OSLockNesting == 0u) /* ... and not locked. */{OS_SchedNew();OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];if (OSPrioHighRdy != OSPrioCur) /* No Ctx Sw if current task is highest rdy */{#if OS_TASK_PROFILE_EN > 0uOSTCBHighRdy->OSTCBCtxSwCtr++; /* Inc. # of context switches to this task */#endifOSCtxSwCtr++; /* Keep track of the number of ctx switches */OSIntCtxSw(); /* Perform interrupt level ctx switch */}}}OS_EXIT_CRITICAL();}
}
就绪表(ucos_ii.h文件的函数)
OS_EXT OS_PRIO OSRdyTbl[OS_RDY_TBL_SIZE]; /* Table of tasks which are ready to run */
设置任务进入就绪态
设置任务脱离就绪态
在就绪表中找到优先级最高(数最小)的任务
相关文章:
μC/OS-II---内核:多任务与调度
目录 内核:多任务(ucos_ii.h文件的函数)Task创建Task创建(扩展)Task删除/请求删除Task改变Task优先级Task挂起和恢复Task信息获取Task调度器上锁和开锁 内核:调度(oc_core.c文件的函数ÿ…...
【紫光同创国产FPGA教程】——PDS安装教程
本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 一:软件简介 PangoDesign Suite是紫光同创基于多年FPGA开发软件技术攻关与工程实践经验而研发的一款拥有国产自主知识产权的大规模FPGA开…...
基于Fuzzing和ChatGPT结合的AI自动化测试实践分享
一、前言 有赞目前,结合insight接口自动化平台、horizons用例管理平台、引流回放平台、页面比对工具、数据工厂等,在研发全流程中,已经沉淀了对应的质量保障的实践经验,并在逐渐的进化中。 在AI能力大幅进步的背景下,…...
基于Jaccard相似度的推荐算法---示例
目录 数据展示推荐算法的分类基于相似度基于流行度/上下文/社交网络 Jaccard相似度分析数据的特点可以考虑的方法计算方法优缺点计算用户之间的Jaccard相似度获取与给定最相似的10个用户对1713353的用户推荐10本书 数据展示 import pandas as pd import numpy as np# 读取CSV文…...
基于指数分布算法的无人机航迹规划-附代码
基于指数分布算法的无人机航迹规划 文章目录 基于指数分布算法的无人机航迹规划1.指数分布搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用指数分布算法来优化无人机航迹规划。 …...
vite基础学习笔记:13.Dialog 对话框 (用户注册与登录)
说明:自学做的笔记和记录,如有错误请指正 1. Dialog 对话框组件 目标效果:点击“登录/注册”,弹框 (1)创建全局组件,在官网中查询代码粘贴 (2) 注册和使用全局组件 &a…...
RedisTemplate 使用 pipeline 时需要注意的问题
RedisTemplate 使用 pipeline 时需要注意的问题 RedisTemplate 使用 pipeline 进行批量 set 时,需要把 key 和 value 都转为字节 1. 直接使用 getBytes() 转为字节,在读取数据时,会抛出以下序列化异常 //错误代码 protected void process(…...
uniapp 下载文件到手机
下载后端传递过来的文件 let thil this uni.showLoading({title: 下载中,mask:true }) uni.downloadFile({url: 接口地址, //仅为示例,并非真实的资源header: {"Authorization": token},responseType: blob,success: (res) > {if (res.statusCode 2…...
使用Drupal管理小型项目?试试Docker快速部署Drupal结合内网穿透实现远程访问
🎬 鸽芷咕:个人主页 🔥个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal…...
BSP-STM32移植FreeRTOS
在stm32裸机工程中的Middlewares目录添加freeRtos源码 在裸机工程中的main中调用freertos接口...
【Spring】Spring IOCDI(万字详解)
文章目录 1. Spring是什么?2. 认识IOC2.1 传统程序开发1. Main.java2. Car.java3. Framework.java4. Bottom.java5. Tire.java 2.2 分析传统开发2.3 IOC程序开发1. Main.java2. Car.java3. Framework.java4. Bottom.java5. Tire.java 2.4 分析IOC开发2.5 IOC容器优点…...
ts 使用泛型来做类型映射
使用泛型来做类型映射,将对象(或数组)中类型转换为另一个类型 首先,定义一个类型Student // 定义一个类型Studentinterface Student {name: string,age: number}1、把Student的所有属性都变为可空的 type Nullable<T> {[p in keyof T]: T[p] || …...
Compose - 使用 Paging
一、添加依赖 查看官方最新版本 val paging_version "3.2.1" implementation("androidx.paging:paging-runtime:$paging_version") implementation("androidx.paging:paging-compose:$paging_version") 二、定义数据源 PagingSource 是对其它…...
数据结构与算法-(11)---有序表(OrderedList)
🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON学习系列专栏 💫"没有罗马,那就自己创造罗马~" 目录 知识回顾及总结 有序表的引入 编辑 实现有序表 1.有序表-类的构造方法 2.有序表-search方法的实现 3.有序表-add方法的实现…...
佳易王会员管理系统软件如何下载,基本功能有哪些
一、佳易王会员管理软件大众版 部分功能简介: 1、会员信息登记 :可以直接使用手机号登记,也可以使用实体卡片,推荐用手机号即可。 2、会员卡类型 :可以自由设置卡的类型,比如:充值卡、计次卡、…...
docker搭建mysql环境
1. 基础环境 名称描述CentOS 7.6Linux操作系统版本docker 20.10.5docker版本mysql 8.0.29mysql镜像版本 2. 下载安装 使用docker命令下载mysql镜像 [rootzhouwei ~]# docker pull mysql:8.0.29查看docker仓库是否已经下载了mysql镜像 [rootzhouwei ~]# docker images将mys…...
优思学院|推行精益六西格玛困难重重?7大原因分析助你避坑
六西格玛,是一种让企业在绩效管理的舞台上跳得更高更远的方法。它不仅仅是一套原则和技术,更是一种对完美的执着追求。 在这个舞台上,企业的流程管理得以严格、集中,质量得以高效提升。优思学院总结出六西格玛的核心是࿱…...
四川思维跳动商务信息咨询有限公司可信吗?
在今天的数字化时代,抖音带货已成为一种全新的商业模式。许多公司都在通过这种形式进行产品推广和销售,其中,四川思维跳动商务信息咨询有限公司以其专业的服务和良好的信誉,在抖音带货领域赢得了广泛赞誉。 四川思维跳动商务信息…...
高防CDN与高防服务器:谁更胜一筹?
在当今数字化世界中,网络安全对于保护网站和应用程序至关重要。在这一背景下,高防CDN和高防服务器是两种流行的解决方案,用于应对不同类型的网络攻击。本文将分析高防CDN是否能够替代高防服务器,以及它们各自的优势和限制。 高防C…...
2.Netty简单应用
引入Maven依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId><version>4.1.49.Final</version> </dependency>服务端的管道处理器 public class NettyServerHandler extends ChannelInbou…...
GIF动图批量转换静图工具:功能配置与使用指南
在日常内容运营工作中,处理大量GIF动图并将其转换为静态图片是一个高频需求。无论是电商主图制作、自媒体素材整理还是设计资源归档,批量处理都能显著提升工作效率。本文介绍一款Windows桌面端的GIF批量转换工具,重点说明其功能配置和使用方法…...
深度滤波架构革新:全频段实时语音增强的系统设计与实现
深度滤波架构革新:全频段实时语音增强的系统设计与实现 【免费下载链接】DeepFilterNet Noise supression using deep filtering 项目地址: https://gitcode.com/GitHub_Trending/de/DeepFilterNet 在远程通信、语音交互和音频处理领域,背景噪声一…...
终极指南:Viper配置版本兼容处理 - 确保Go应用向前向后兼容的完整方案
终极指南:Viper配置版本兼容处理 - 确保Go应用向前向后兼容的完整方案 【免费下载链接】viper Go configuration with fangs 项目地址: https://gitcode.com/gh_mirrors/vi/viper Viper作为Go语言中最流行的配置管理库,以其"Go configuratio…...
Ouster雷达Web界面避坑全记录:从IP设置到UDP端口,新手最易踩的5个雷
Ouster雷达Web界面避坑全记录:从IP设置到UDP端口,新手最易踩的5个雷 第一次接触Ouster激光雷达的Web配置界面时,我像大多数新手一样自信满满地插上网线、输入IP,结果等待我的不是期待中的点云数据,而是一连串令人抓狂的…...
C ++输入输出基础教程示例详解
PS:使用前看是否包含了头文件 <cstdio>(一) 输入 scanfscanf 函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序变量。下面提供一个标准模版…...
RedisJSON实战避坑:从‘能用’到‘好用’的5个关键配置与性能调优技巧
RedisJSON实战避坑:从‘能用’到‘好用’的5个关键配置与性能调优技巧 RedisJSON作为Redis生态中处理JSON数据的利器,其性能优势在理想环境下毋庸置疑。但当数据量突破百万级、QPS超过5000时,许多团队会发现原本"能用"的RedisJSON突…...
深度评测:GEO源码部署如何赋能企业AI搜索战略?爱搜索GEO营销系统实战验证
在生成式AI重塑信息获取方式的今天,企业面临着一个全新的战场:如何让自己的信息被ChatGPT、DeepSeek、文心一言等主流大模型准确识别、深度理解并主动推荐?这已不再是传统SEO的简单延伸,而是一场关于内容语义、数据结构和生态适配…...
Windows Defender完全卸载终极指南:3种方法彻底移除系统安全组件
Windows Defender完全卸载终极指南:3种方法彻底移除系统安全组件 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_m…...
掌握CefFlashBrowser:构建完整的Flash内容解决方案
掌握CefFlashBrowser:构建完整的Flash内容解决方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 还在为无法访问经典Flash内容而烦恼吗?当主流浏览器纷纷放弃Fla…...
梯度下降的使用-房价预测
一个小小的建议:可以安装JupyterLab来调试练习,真的很方便。 """ 房价预测示例 - 使用梯度下降求解线性回归使用真实数据集:加州房价数据集 (California Housing Dataset) 来源:1990年加州人口普查数据特征说明&am…...
