关于uC/OS-II 概述

         
        从应用程序设计的角度来看,uC/OS-II 的任务就是一个用户编写的 C 函数和与之相关
联的一些数据结构而构成的一个实体。把一个大型任务分解成多个小任务﹐然后在计算机中
通过运行这些小任务﹐最终达到完成大任务的目的。
在 uC/OS-II 中,与上述那些小任务对应的程序实体就叫做“任务”(实质上是一个线程),
uC/OS-II 就是一个能对这些小任务的运行进行管理和调度的多任务操作系统。
1.任务的切换
在内存中为每个任务创建一个虚拟的处理器(处理器部分的运行环境),当需要中止当
前任务时﹐则把任务对应的虚拟处理器复制到内存,再把另一个需要运行的任务的虚拟处理
器复制到实际处理器中﹐,当需要运行某个任务时就把该任务的虚拟处理器复制到实际处理
器中﹐由操作系统的调度器按某种规则来进行这两个复制工作﹐也就是说﹐任务的切换是
任务运行环境的切换。
2 任务的构成
要建立一个概念︰具有控制块的程序才是一个可以被系统所运行的任务。程序代码、私
有堆栈(用以保护运行环境)、任务控制块是任务的三要件。任务控制块提供了运行环境的
存储位置。其实﹐程序切换的关键是把程序的私有堆栈指针赋予处理器的堆栈指针 SP ,实质
上系统是通过 SP 的切换来实现程序的切换的。
3.虚拟处理器
虚拟处理器应该存储的主要信息︰
(1)程序的断点地址(PC)
(2)任务堆栈指针(SP)
(3)程序状态字寄存器(PSW)
(4)通用寄存器内容
(5)函数调用信息(已存在于堆栈)
这些内容通常保存在任务堆栈中﹐这些内容也常叫做任务的上下文﹐另外再用一个数
据结构保存任务堆栈指针(SP) ,这个数据结构叫做任务控制块(提供私有堆栈也是虚拟处
理器的位置﹐任务控制块是不是像我们人在一个国家中的身份证﹖(其实﹐系统中的所有资
源都应该有身份证),它除了保存任务堆栈指针之外还要负责保存任务其他信息。任务控制
块是由操作系统另行构造的一个数据结构,每个任务都有一个任务控制块。
4.任务的运行流程
首先获得任务的任务控制块﹐然后处理器的 SP 等于任务控制块中保存的 SP,接着恢复
待运行的任务的运行环境﹐最后令处理器的 PC 等于任务堆栈中的断点地址任务的三个状态
任务一共有三个状态﹐分别如下︰
休眠状态︰任务在没有被配备任务控制块或被剥夺了任务控制块时的状态叫做任务的
睡眠状态
就绪状态︰系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记﹐这时任
务的状态叫做就绪状态
运行状态︰处于就绪状态的任务如果经调度器判断获得了 CPU 的使用权﹐则任务就进
入运行状态
等待状态∶正在运行的任务﹐需要等待一段时间或需要等待一个事件发生再运行时﹐该
任务就会把 CPU 的使用权让给别的任务而使任务进入等待状态
5.任务控制块(任务在系统中的身份证)
一个任务的任务控制块的主要作用就是保存该任务的虚拟处理器的堆栈指针寄存器 SP。 其实﹐随着任务管理工作的复杂性的提高﹐它还应该保存一些其他信息。
由于系统存在着多个任务﹐于是系统如何来识别并管理一个任务就是一个需要解决的问题。
识别一个任务的最直接的办法是为每一个任务起一个名称。由于 uC/OS-II 中的任务都有一
个惟一的优先级别﹐因此 uC/OS-II 是用任务的优先级来作为任务的标识的。所以﹐任务控
制块还要来保存该任务的优先级别。
另外﹐前面也谈到,一个任务在不同的时刻还处于不同的状态﹐显然﹐记录了任务状态的数
据也应该保存到任务控制块中
基于上述原因﹐系统必须为每个任务创建一个保存与该任务有关的相关信息的数据结
构﹐这个数据结构就叫做该任务的任务控制块(TCB)。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值