ucOS-ii 与 iii的比较

【1】就绪表的最高优先级位置不同,

在UCOS-ii 就绪表中最高优先级的位置在右边,

        ptcb->OSTCBY             = (INT8U)(prio >> 3);          /* Pre-compute X, Y, BitX and BitY     */
        ptcb->OSTCBX             = (INT8U)(prio & 0x07);
        ptcb->OSTCBBitY          = (INT8U)(1 << ptcb->OSTCBY);
        ptcb->OSTCBBitX          = (INT8U)(1 << ptcb->OSTCBX);

在UCOS-iii 就绪表中的最高优先级在左边。

    {
    CPU_DATA  bit;
    CPU_DATA  bit_nbr;
    OS_PRIO   ix;

    ix             = prio / DEF_INT_CPU_NBR_BITS;
    bit_nbr        = (CPU_DATA)prio & (DEF_INT_CPU_NBR_BITS - 1u);
    bit            = 1u;
    bit          <<= (DEF_INT_CPU_NBR_BITS - 1u) - bit_nbr;

    OSPrioTbl[ix] |= bit;

}

【2】任务调度时,查的表顺序不同

在UCOS-ii 中OSSched( )会先查OSRdyTbl[ ]确定那个就绪任务的优先级最高,并取得其优先级。然后利用得到的优先级查表OSTCBPrioTbl[ ]确定该优先级任务的TCB结构体的地址。得到TCB结构体后就得到了接下来将执行的代码。



在UCOS-iii 中OSSChed( )会先查看OSPrioTbl[ ]得到最高就绪任务的优先级。然后利用得到的优先级prio,找到OSRdyList[prio]对应的优先级下任务就绪任务链表,然后HeadPtr指向链表的第一个TCB结构体。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值