您当前的位置:首页>论文资料>μ C OS-Ⅱ操作系统的任务切换

μ C OS-Ⅱ操作系统的任务切换

资料类别:论文资料

文档格式:PDF电子版

文件大小:149.17 KB

资料语言:中文

更新时间:2024-11-21 09:57:46



推荐标签:

内容简介

μ C OS-Ⅱ操作系统的任务切换 数字技术与应用
μCOS-II操作系统的任务切换
司新生
河南鹤堂
(势壁职业技术学院
458030)
·教字技术·
[摘要]μCOS一ⅡI操作系统是一个多任务占先式实时操作系统,每一个任务由三部分组成,任务控制块,任务的私有堆栈、任务代码。每一个任务有一个决定其重要性的任务优先级,系统通过任务就绪表来进行任务的切换,就绪的任务在任务就绪表中设置其标志位,遇出就绪的任务在就结表中撤消其标志位,任务的切换过程就是通过任务就绪表找到优先级最高的任务,保存原来运行任务的上下文到该任务的私有堆栈中,从最高优先级的任务私有堆栈中复制断点数据到工作寄存器中,PC指针指向该任务的代码段,实现了任务的切换。
[关键词]操作系统[中图分类号]G642
任务控制块
1μCOS-I的任务
优先级
任务切换
[文献标识码]A
[文章编号]1007-9416(201006-0012→02
址与向低地址两个方向,堆栈存储数据遵循后进先出的规则。
μCOS-ⅡI操作系统是一个多任务系统,它最多可以管理64个任务,但两个优先级最低的任务已被系统占用,一个是统计任务,一个是空闲任务,空闲任务的作用为当操作系统没有其它任务执行时,款转入空闲任务而不使系统没事可做。
1.1任务的结构
每一个任务都有如下结构。它由任务控制块TCB,任务代码,任务堆栈组成,多个任务控制块形成一个任务控制块链表。每一个任务在创建时都被分配有一个任务优先级,优先级序号从0到63,优先级数值越大则表示优先级越低,最高的优先级是优先级序号为0的任务,最低的优先级是优先级为63的任务。操作系统可以设定管理的任务数,在OS_CFG.H文件中,可以定义OS_LOWEST_PRIO值,该值最大为63,每一个任务都有唯一的任务优先级,μCOS-Ⅱ操作系统任务切换的关键就是该任务的优先级,操作系统总是运行处于就绪状态的最高优先级的任务。创建任务主要完成四项任务,一是指出任务代码存放的地址,二是指明任务参数指针,也即任务参数地址,三是指明任务堆栈栈指针,在进行任务切换时保存或恢复与任务相关的寄存器的值,四是确定任务的优先级,优先级的高低决定了任务的紧迫性和重要性。任务创建的代码如下,
INT8U OSTaskCreate (
void(+task)(void*pd),//任务代码指针
void
*pdata,
//任务参数指针
OS_STK*ptos,
//任务栈的栈顶指

INT8Uprio//任务的优先级)
1,2任务堆栈
每一个任务都有一个私有的堆栈空
间,在任务切换时保存CPU
(R0~R12、LR,SPSR
寄存器现场
等)和本任务的私
有数据。任务的堆栈的增长方向有向高地
12
数字技术与应用万方数据
1.3任务控制块
任务控制块是μCVOS-Ⅱ操作系统任务管理与切换的关键。任务控制块是一个 C语言的自定义结构体,主要包含有任务堆栈栈顶地址,任务的优先级、上下任务控制块的地址、任务的状态等相关信息,任务控制块由上下控制块地址指针与上下任务控制块之间形成一个双向链表。一个
任务控制块的结构的主要成员如下: typedef struct os_tcb f
structos_tcb*OSTCBNext,//指向下一个TCB的指针
os_tcbOSTCBPreV;//指向
struct
前一个TCB的指针
OS_STK
*OSTCBStkPtr,//指向任
务堆栈栈顶的指针 INT16U
OSTCBDly
时间
INT8U 前状态标志 INT8U
先级别
OSTCBStat, OSTCBPrio;
1OS_TCB
//任务等待(/任务的当//任务的优
任务控制块的管理主要有以下几个变量,一是OSTCBTbl[任务控制块数组;二是OSTCBPrioTbl[」一任务控制块优先级数组,以Prio为下标存放已使能的TCB 指针,用于加速TCB的访间,OSTCBCur 一全局系统变量,指向当前正在运行的任务的TCB。
2任务就绪表及任务进入,脱离就绪状态
任务就绪表的结构 2.1
为了能够使系统清楚地知道,系统中哪些任务已经就绪,哪些还没有就绪,μ C/OS_II在RAM中设立了一个记录表,系统中的每个任务部在这个表中占据一 Bit的位置,并用这个位置的状态(1或者
0)来表示任务是否处于就绪状态,这个表就叫做任务就绪状态表,简称叫任务就绪表,由一个8位的数组OSRdyTbl[」充当,该数组最多8个元素索,可以标示64个任务。
任务就绪表就是一个二维数组OSRdyTbl【],如果某一位为1,则表明该优先级的任务已就绪,可以进行调度,否则该任务还没有处于就绪状态,系统还不能直接运行该项任务。例如OSRdyTbl[2]的D,为1则表示任务优先级为19的任务已处于就绪状态,可以被系统运行。为加快访间任务就绪表的速度,系统定义了一个变量 OSRdyGrp来表明就绪表每行中是否存在就绪任务,
根据任务的优先级prio、优先级就绪数组OSRdyTbI[]、任务就绪组OSRdyGrp。系统就可以对任务进行管理与控制。
μCOS-Ⅱ可以管理的64个任务的优先级prio值为0~63(000000~111111),由任务的优先级就可以找到该任务在任务就绪表中所对应的位,优先级prio除以8 取整,也就相当于优先级prio右移三位,代表该任务在任务就绪表中的组号X,也即 OSRdyTbl[]数组的下标等于prio.[5:3]。优先级prio的低三位prio.[2:0]代表在任务优先级组中的位Y。为了加快任务的调度及保证任务切换时间一致性,μCOS-Ⅱ操作系统预先定义了一个数组OSMapTbl[],
OSMapTbl[0] = 0000,0001B OSMapTbl[1] = 0000,0010B OSMapTbl[2] = 0000,0100B OSMapTbl[3] = 0000,1000B OSMapTbl[4] = 0001,0000B OSMapTbl[5] =0010,0000B OSMapTbl[6] = 0100,0000B OSMapTbl[7] = 1000,0000B
通过查表法,操作系统就可以知道该优先级在任务就绪表中一组,对应 OSRdyGrp的哪一位,在该组中处于哪一位。例如:如果任务优先级prio为21的任务处于就绪状态,十进制21转换为二进制
上一章:SDH基本原理在传输疑难故障处理中的应用 下一章:变频技术在二次供水系统中的应用

相关文章

μC/OS-Ⅱ在51单片机上的移植 基于μC-OS的网络门禁终端的研究与实现 μC∕OS-II在LPC3131处理器上的移植 OS-Ⅱ的电力参数智能监测仪的设计 OS-Ⅱ在基于LM3S8962单片机的带式输送机控制的应用 μCOS-Ⅱ在C8051F系列单片机上的移植 嵌入式协议栈μC/TCP-IP:基于STM32微控制器 基于单片机ADμC812的太阳能自动跟踪系统设计