ucos-ii内核探究---任务的数据结构和创建

本文解析了UCOS-II操作系统中的空闲任务与统计任务创建过程及功能实现,空闲任务用于填充任务调度空隙,统计任务则负责计算处理器使用率。

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

任务

首先看她定义的数据结构吧!

 

任务控制块tcb

         在UCOS-II.H中定义了tcb结构:

 

http://blog.youkuaiyun.com/benny_cen/article/details/3937774#comments

 

4.创建空闲任务和统计任务

这两个任务在UCOS2里是默认创建,其中一个在OSInit中创建,另一个用户可以在创建任务中调用OSStatInit()创建

空闲任务

                   OSInit中调用OS_InitTaskIdle();在OS_InitTaskIdle函数中创建了空闲任务:

                  (void)OSTaskCreate(OS_TaskIdle,

                       (void *)0,

                       &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],

                       OS_IDLE_PRIO);                   //优先级别最低

然后看OS_TaskStat这个空任务做了什么:

                   void  OS_TaskIdle (void *parg)

{

#if OS_CRITICAL_METHOD == 3          

    OS_CPU_SR  cpu_sr;

    cpu_sr = 0;                 

#endif   

    parg   = parg;                    

    for (;;) {

        OS_ENTER_CRITICAL();

        OSIdleCtr++;                                     //计数

        OS_EXIT_CRITICAL();

        OSTaskIdleHook();           

    }

}

     统计任务:

     OSInit中调用OS_InitTaskStat();创建了统计任务,了解处理器利用率,优先级比空闲高一级。

(void)OSTaskCreate(OS_TaskStat,

                       (void *)0,

 &OSTaskStatStk[OS_TASK_STAT_STK_SIZE-1],                            OS_STAT_PRIO);   


 

         然后看OS_TaskStat任务,每秒计算一次处理器在单位时间内被使用的时间,公式

 

                                                             OSIdleCtr

                OSCPUUsage = 100 * (1 - ----------------------------)     (units are in %)

                                                            OSIdleCtrMax

         通过统计空闲任务来知道目前处理器的占用率。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值