ucos-II之任务优先级

本文详细探讨了UCOS-II操作系统中任务优先级的确定过程,包括任务优先级变量priority的组成、OSTCBY和OSTCBX的用途、OSMapTbl和OSUnMapTbl数组的作用,以及如何通过OSRdyGrp和OSRdyTbl找到最高优先级任务的机制。
摘要由CSDN通过智能技术生成

很多关于UCOS的内核源码的文章已经很多也都和很好,但是我还是自己写下自己关于任务优先级确定的自己的一些看法。毕竟只有自己理解了才是自己的,才可以完全理解。

关于ucos任务优先级首先要确定一个变量任务优先级变量

1 priority ,这个变量在嵌入式实时操作系统邵贝贝译的书中76页,很清楚的可以看明白,priority 是个六位的变量,低三位组内偏移,高三位是组号

 问题:这个组是什么?

ucos总共可以有64个任务,每个任务优先级不同,所以可以有64个优先级,64个优先级可以分为8组,8个任务一组,所以前面priority变量保存的就是任务优先级的组号和组内偏移

2 priority 低三位会保存到一个变量中OSTCBY,高三位保存到OSTCBX,他们的取值范围都是0~7,见下面的代码

ptcb->OSTCBY = (INT8U)(prio >> 3);    ptcb->OSTCBX= (INT8U)(prio & 0x07);

3 由OSTCBY和OSTCBX作为索引从数组OSMapTbl取得OSTCBBitY和OSTCBBitX的值,先说OSMapTbl数组的定义

INT8U const OSMapTbl[8] = {0x01, 0x02, 0x04, 0x08, 0x10,0x20, 0x40, 0x80};

用二进制表示如下

OSMapTbl[]的下标

OSMapTbl[](即位掩码)

0

00000001

1

00000010

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值