Embedded 版 (精华区)
发信人: vmlinuz (基于考试结束后的庆祝活动计划的研究), 信区: Embeded_system
标 题: 标题:利用实时核的软件设计 -- pSOS软件设计 (1)
发信站: 哈工大紫丁香 (2001年05月16日14:24:08 星期三), 站内信件
这篇文章介绍了pSOS+的软件设计,对理解和学习
RTOS很有帮助。
----------------------
利用实时核的软件设计
----------------------
一些嵌入式应用被设计为前后台执行方式,但它们也可以从利用实时核中得到
好处。这篇文章将描述怎样在嵌入式系统中使用实时核。你将学习怎样将一个
应用划分为几个任务,怎样为这些任务指定不同的优先级,以及如何利用实时
核提供的服务,如信号量,消息邮箱,消息队列,时间延
.俚鹊取D阋步吹街卸先绾巫饔糜谌挝瘛U馄恼录俣阒朗凳焙巳绾喂ぷ鳌?
介绍
-----
大量的小型嵌入式系统如发动机控制,智能仪器,消费类电子产品,机器人,
计算机外设和电信设备能够从利用实时多任务操作系统中得到好处。然而,很
多这样的应用支付不起或没必要使用具有文件系统,输入输出管理和网络系统
的功能完整的操作系统。在这种情况下,可以使用小.偷?抢占式多任务实时核。
微处理器同时只能处理一件事,但处理速度很快。当设计一个监控系统时,传
统的软件使用一种称为前后台(或称为大循环)的技术来实现。如图一所示,
一个前后台系统由一个无限循环构成,这个无限循环调用应用模块去执行期望
的操作。这些模块顺序执行,中断服务程序处理异步事件。实时性要求严格的
操作必须放在中断服务程序中执行 ,以保证它们被及时的处理。所以,中断
服务程序变得越来越大。
pSOS+时实执行核要点
pSOS+只存在四种入口点:
(1) STARTUP pSOS+启动
(2) SVC pSOS+系统调用
(3) I/O I/O调用
(4) I-HANDLE 中断处理
其中,SVC和I/O通过独立的陷井向量进入, I-HANDLE是处理器的中断向量,而
STARTUP既可以通过陷井也可经过跳转进入。
作一次系统调用,需要把对应的参数装入寄存器,把功能码装入寄存器r9,
然后使用陷井指令。中断处理的系统入口不能带参数。
pSOS+的系统服务共分成八大类:
(1) 任务管理
(2) 存储分配
(3) 消息队服务
(4) 事件和异步信号服务
(5) 信号量(Semaphore)服务
(6) 时间管理及定时器服务
(7) 错误处理服务
(8) 多处理器支援服务
(一)任务
-----------
任务的概念:
从系统观点看,任务是能够占有系统资源的最小执行单元。任务生存于
pSOS+提供的一个虚拟的孤立环境之中,在这里它可以随意使用或等待使用
系统资源,而无需考虑其它任务。资源可以是CPU、I/O设备、数据段等。
从概念上讲,任务可以与其它任务并发地独立运行,pSOS+只是直接在
不同任务间作切换,切换点可通过pSOS+系统调用得到,此时pSOS+使一个任
务停止,而让另一个任务从上次断点处继续运行。
尽管每个任务在逻辑上可分割为一组动作,但它往往要通过pSOS+系统
服务使这些动作与其它任务或中断服务子程序(ISR)同步进行。
任务总处于几个有效状态之一,仅当任务自身或者其它任务或ISR发出系统
调用时,状态才能改变。从微观方面看,一个多任务的应用程序通过系统调
用进入pSOS+,迫使它去改变相关任务的状态,结果可能是由一个任务切换
到另一个任务。彻底了解任务状态及状态转移的机理是朝着应用pSOS+去建
立多任务应用系统前进的第一步。
对pSOS+而言,任务在建立前或删除后是不存在的,一个任务创建后还
必须启动后才能执行。一个刚建立但尚未启动的任务处于天真无邪的萌芽状
态。
任务一旦启动,则将处于三个主要状态之一,这三个状态分别是:运
行态、就绪态和封锁(Blocked)态。就绪任务是一个可以运行的任务,由
于任何时刻仅能使一个任务运行,用此其它就绪任务必需等待。通常,一个
就绪任务当其优先级高于其它就绪任务时才能运行。任务若未就绪即被封锁。
状态转移:
1、运行态到封锁态转移的条件
运行任务作下列动作之一即发生转移:
A. 从空消息队中请求一消息;
B. 等待一个事件但条件尚未满足;
C. 请求一个信号量但目前不满足;
D. 请求一段内存但目前不满足;
E. 等待时间间隔或特定时间点。
2、封锁态到就绪态的转移
下列任一情况的出现均能发生转移:
A. 消息到达消息队而被封锁任务正在等待消息且处于等待队列的首位;
B. 一个事件被送到被封锁任务且满足该任务等待的条件;
C. 信号量被返回且被封锁任务处于等待队列的首位;
D. 存储段返回pSOS+且满足等待内存需求任务申请的内存段要求;
E. 一个正在等待消息、事件、信号量或内存段且带有时超要求的任务
在它所提出的时超间隔到达时;
F. 一个已被延时的任务当其延时间隔到达或其唤醒时刻到达时;
G. 一个正在等待消息、信号量或内存区的任务而该消息队、信号量
或内存区对象被另一任务删除时。
3、封锁态到运行态的转移
满足上述2中条件的任务当其优先级高于当前运行任务且该任务的
抢占标志使能时。
4、就绪态到运行态的转移
一个就绪任务在当前运行任务出现下列情况之一时就变成运行任务:
A. 当前运行任务被封锁;
B. 当前运行任务的抢占标志重新使能且就绪任务的优先级比它高;
C. 当前运行任务的抢占标志已使能而它将自已的优先级或就绪任务
的优先级改变,使得该就绪任务的优先级高于当前运行任务及其它就绪任务;
D. 当前运行任务的轮转方式使能,其运行时间超出其所占的时间片,
而就绪任务具有相同的优先级;
5、运行态到就绪态的转移
A. 运行任务或中断服务程序发出系统调用,使得某被封锁任务满
足封锁态到运行态转移的条件;
B. 当4中后三种情况发生时,当前运行任务将变成就绪态。
除上述三种状态外,第四个但较次要的状态为挂起态,一个被挂起的任务在其
被直接恢复之前是不能运行的。挂起与封锁相似但其功能是不同的。首先,
任务只能封锁自身但能挂起其它任务或自挂,其结果是一个就绪任务可因挂起
而脱离就绪态。其次,一个被封锁的任务也能被挂起,因而
该任务只有在解除封锁和解挂后才能成为就绪或运行任务。
任务的调度:
pSOS+采用基于优先级的抢占调度策略。通常,pSOS+确保任一时刻运行
着的任务是系统中当前就绪任务中优先级最高的一个。pSOS+的调度行为也可
因一个或几个任务的抢占或时间片标志使能或禁止而临时改变。
每个任务都有一个方式字,其中的两个可设置的位可以影响调度。其中
一个方式位控制任务的可抢占性,一旦任务进入运行态而其可抢占位被禁止,
则它将一直运行,即使另有高优先级任务进入就绪态也不能抢占,仅当运行
任务封锁或重新使 能抢占位才能发生任务切换。
第二个方式位控制时间片轮转。当运行任务的时间片轮转位被使能,则
pSOS+自动追踪任务运行的时间,当它超过预定时间片而同时存在同优先级的
就绪任务,则pSOS+将其中的一个任务投入运行。时间片仅影响同优行级任务
间的调度。
任务优先级:
每个任务在创建时必须指定一个优先级。优先级共255级,最高是255,
最低是1;0级保留给pSOS+的“空闲(IDLE)”任务。任务优先级可利用系统
调用t-setpri由任务自身或被别的任务实时改变。
在调度期间,pSOS+通常将排在就绪队头上的任务投入运行。当任务进入
就绪态时,pSOS+将把它排在较高优先级及同等优先级就绪任务之后及所有较
低优先级就绪任务之前。
注意,运行任务只能被较高优先级的任务抢占,当其时间片轮转位使能时,
也可被同等优先级的任务抢占;另外,当中断出现时,对应的中断服务程序可
抢占当前运行任务。
时间片轮转:
除优先级外,pSOS+还采用时间片来分时调度任务的运行。这种调度策略
可以按任务逐个打开或关闭,而且总是服从于优先级。
时间片的大小在系统配置时指定,配置参数为KC-TICK2SLICE。
每个任务都附带一个时间片计数器,当其创建时由pSOS+将其初始化为时间片
值。系统时钟嘀嗒一次,pSOS+的时间管理程序检查运行任务的方式位。如果
该任务的时间片轮转位或抢占位被禁止,则其时间片计数器不受影响;如果
时间片轮转和抢占位同时使能,则时间片计数器减一。当时间片数器减至零时,
则存在两种可能性:
1、若当前所有就绪任务的优先级均较低,则不发生调度,该任务的时间
片计数器保持为零,任务仍处于运行或就绪态。
2、若当前存在一个或几个同优先级的就绪任务,则pSOS+将运行任务转为
就绪态,并排在所有同优先级就绪任务之后,排在前头的就绪任务运行。此时,
刚退出运行的任务的时间片计数器刷新为满计数值,以便下一次轮转时使用。
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.97]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.152毫秒