UCOSII操作系统(二)--内核的实现

本文详细介绍了UCOSII操作系统的内核实现,包括任务堆栈、任务链表、事件控制块的操作,以及如何获取最高优先级任务并进行任务切换。此外,还讨论了时间片轮询的实现策略,利用事件控制块在UCOSIII中支持同一优先级任务的时间片轮询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、OS_STK == 任务的堆栈

任务切换的实质:SP指针的变化,通过SP指针的变化,可以跳转到你想要去的任何的一块不受保护的地址去

2、任务的链表

struct os_tcb *OSTCBNext; 指向下一个任务

3、事件控制块

OS_EVENT *OSTCBEventPtr
是一个技术组件,用于后面的消息和消息队列,邮箱和信号量等的设计。

typedef struct os_tcb {}

4、如何得到最高的优先级的任务
OSRdyGrp |= OSMapTbl[prio >> 3];
OSRdyTbl[prio>>3] |= OSMapTbl[prio & 0x07];

计算实例:假设我们需要让优先级为24的任务置1的话。
任务的优先级组中填入的数是 24 >> 3 =3
11000>>3 也就是00011=3

那么在任务的第3个优先级组中我们应该填入是24 & 0x07 = 0,也就是在第0位上面填入1,即可把优先级为24的任务唤醒。
把相应的任务挂起的计算公式为:
OSRdyGrp &= ~OSMapTbl[prio >> 3];

**5、如何通过最高优先级的任务进行任务切换–进入中断,切换任务堆栈实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值