ucos ii 任务调度原理

本文深入探讨ucOS II操作系统任务调度的原理,包括任务优先级、任务状态转换、任务创建、删除、挂起与恢复,以及中断和时钟管理。详细解析了任务同步与通信的机制,如信号量、互斥量、消息邮箱和消息队列的应用,最后通过实例阐述了信号量集的使用。
摘要由CSDN通过智能技术生成

操作系统任务调度的原理(个人总结):

创建两个任务A、B

任务A的优先级>任务B的优先级(计算机根据任务的优先级大小让谁先执行

A运行->任务A运行完->调用void OSTimeDly (INT32U ticks);函数,交出CPU的使用权,作用是让任务A运行态转换成等待状态,引发一次任务调度,任务调度函数void  OS_Sched (void);作用是查找处于就绪状态优先级最高的任务B->进行任务切换OS_TASK_SW();切换到任务B工作->任务B运行完成->B由运行态转换成等待状态->计算机查找处于就绪状态优先级最高的任务->没有任务待运行->计算机进入到空闲任务(计算机是不能停下来的),前提条件是没有任务再运行了->这时任务A产生定时时间到,即任务A控制块里的ptcb->OSTCBDly减到0(计算机会产生一个硬件定时器中断,进入中断服务函数void  OSTimeTick (void);该中断服务函数的作用是每个中断来临,把任务A和任务B控制块里面的ptcb->OSTCBDly--;操作,其中ptcb->OSTCBDly最初的值是void  OSTimeDly (INT32U ticks)函数传进去的tick的值)->任务A由等待状态转换成就绪状态->再次任务调度void  OS_Sched (void);查找优先级最高的就绪状态的任务A->进行任务切换OS_TASK_SW();->再次让任务A运行起来。循环往复。以上就是操作系统任务调度的原理。

第二章

操作系统是一种管理软件,程序控制块就是对各个任务管理的结构体。

这个结构体是通过链表链接,为了提高查找速度,再加上一个数组,数组的各个元素存储了链表成员的指针。

Typedef struct tcb{

      Char*code_name;

      Intp;

      Intv_number;

      Void(*fun)(void);//函数指针,指向各个任务

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值