欢迎来到天天文库
浏览记录
ID:57922350
大小:206.49 KB
页数:2页
时间:2020-04-10
《嵌入式操作系统任务调度.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、科技信息0IT论坛OSCIENCE&TECHNOLOGYINFORMATION2010年第19期嵌入式操作系统任务调度司新生(鹤壁职业技术学院河南鹤壁458030)【摘耍】p~C\OS一1I操作系统是一个多任务占先式的实时操作系统,其任务切换是整个操作系统的关键,本文就其任务的切换进行系统的分析,以便更多的人掌握txC\OS一Ⅱ操作系统,使嵌入式系统的开发更快更方便。【关键词】~C\OS一Ⅱ;操作系统;任务切换随着电子技术的发展,出现了越来越多的针对嵌入式的操作系2.1任务就绪表的结构统,其中I.~C\OS—II操作
2、系统是专门为嵌入式设计的实时操作系统,该为了能够使系统清楚地知道.系统中哪些任务已经就绪,哪些还系统完全免费,且源码公开,其内核很小,可以移植到32位的arll芯没有就绪,txC/OS—II在RAM中设立了一个记录表,系统中的每个任片上或16位的单片机,甚至可以移植到8位的51单片机上。由于嵌务都在这个表中占据一Bit的位嚣,并用这个位置的状态(1或者0)入式系统的多样性,不可能象桌面系统一样有统一的操作系统。来表示任务是否处于就绪状态,这个表就叫做任务就绪状态表.简称任务就绪表。由一个8位的数组OSRdyTbl[]
3、充当,该数组最多8个元1pC\OS—Il的任务素,可以标示64个任务。~C\OS一1I操作系统是一个多任务系统,它最多可以管理64个任任务就绪表就是一个二维数组OSRdyTbl『],如果某一位为1,则务,但两个优先级最低的任务已被系统用,一个是统计任务,一个是表明该优先级的任务已就绪,可以进行调度,否则该任务还没有处于空闲任务。空闲任务的作用时当操作系统没有其它任务执行时,就转就绪状态,系统还不能直接运行该项任务。例如OSRdyTbl[2]的D3为入空闲任务而不使系统没事可做。另外系统还保留了其它6个任务以1则表示任
4、务优先级为l9的任务已处于就绪状态,可以被系统运行。备将来操作系统的升级等用.用户实际可以控制的用户任务多达56为加快访问任务就绪表的速度,系统定义了一个变量OSRdyG~来表个。明就绪表每行中是否存在就绪任务。1.1仟务的结构。每一个任务都有如下结构。它由任务控制块TCB,根据任务的优先级o、优先级就绪数组OSRdyTbl[]、任务就绪任务代码,任务堆栈组成,多个任务控制块形成一个任务控制块链表,组OSRdyGo。系统就可以对任务进行管理与控制。在一起形成一个整体。~C\OS一Ⅱ可以最多管理64个任务,其优先级为0
5、~63,prlo的值1.2任务优先级。每一个任务在创建时都被分配有一个任务优先级,为000000~1l1111,根据任务就绪表的结构,由任务的优先级就可以优先级序号从0到63,优先级数值越大则表示优先级越低,最高的优找到该任务在任务就绪表中所对应的位,优先级prio除以8取整,也先级是优先级序号为0的任务,最低的优先级是优先级为63的任务,就相当于优先级prio右移三位,代表该任务在任务就绪表中的组号操作系统可以设定管理的任务数,在OS—CFG.H文件中,可以定义x,也即OSRdyTbl[]数组的下标等于prio.[
6、5:3】。优先级prio的低三位OSLOWESTPRIO值,该值最大为63。每一个任务都有唯一的任务优prio.『2:O1代表在任务优先级组中的位Y。为了加快任务的调度及保证——先级,~C\OS一1I操作系统任务切换的关键就是该任务的优先级,操作任务切换时间一致性,tzC\OS一Ⅱ操作系统预先定义了一个数组系统总是运行处于就绪状态的最高优先级的任务。OSMapTbl[],1.3用户任务代码。任务代码一般具有如下结构,整体上它是一个无通过奄表法,操作系统就可以知道该优先级在任务就绪表中哪一限循环,完成特定的任务。它由三
7、部分绲成,一是任务的初始化,为任组,对应OSRdyG~的哪一位,在该组中处于哪一位。例如:如果任务务的运行设置相应的外部环境;二是完成任务的循环体中可被中断的优先级prio为21的任务处于就绪状态.十进制21转换为二进制则为用户代码片断.这部分代码运行时可被中断源中断,转而去执行其它101O1,该数值右移三位为010,010表示十进制的2,查表OSMapTbl实时性要求更高的任务;三是不可被中断的用户代码片断,一旦被中f2]=00000100B知道OSRdyTbl[2]有任务进行就绪状态。10101的低三断就可能产生
8、不可预期的后果。任务代码结构上象一个C语言的子函位为101,101表示十进制5+查表OSMapTbl『5]=00100000B可确定数,但任务代码不能被其它函数或main函数调用,只能被main函数OSRdyTbl[2]的第五位为1或已激活的任务创建,只有进行任务切换时,任务代码才能被执行。2.2任务进入就绪状态1.4任务的创建。任务的创建主要
此文档下载收益归作者所有