如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
软件产业I990年I1月·开发与应用·一个多任务实时操作系统的实现中科院成都计算机应用研究所时建摘要擞机应用系统的功能日益复杂.沿用常规的顺序程序加中断的软件设计亏法在解决并发赴理、定时操作、程序结构自爱是活性等方面的问题时已经越来越目难,引凡岁任务实时操作系统势在必扦。即使是使用功能比较简单的多任务实时操作系妻t-通过它所提供的应用程序开爱环境,也能十分有效地解决上述问题.提高程序质量,简l化程序设计。本文在分析多任务实时操作系统PAXSfi32的基础上,介绍了一种简_蔓有效并具有普遍意卫的多任务实时捶作系缱的实现。节.结梅见表】所示。一、引言表1TCB的结构PAXSG32是一种适于IBMPC系列微机的多任字节解释宁节解释务实时操作系统。它有效地利用了Pc软件的三十0任务号(031)6—9起始堆栈指针层次,即DOS层、B]OS层和机器层.来实现时钟管】任劳状态1O一13当前的堆栈指针2-5任务的起始地址1一15系统时钟参照理,任务渊度和通讯文件系统和输入输出等.建立了实时多任务应用程序的开发环境。PAX由以下四PAX给每个任务分配了512字节的堆栈空间,个可由开发者选择和剪裁的模块组成:用来保护任务运行现场(即切换处各寄存器内容)。1.内辕提供任务饵度和与应用程序的接口在任务启动首次运行时,其栈顶地址被放入TCB的——系统原语。PAX采用分时轮转方式,可并发地起始堆栈指针项中}当任务停止运行时,其现场被压入自己的堆栈,并把堆栈指针放入TCB的当前堆栈马E动32个任务。时间片为55毫秒。指针项中。系统时钟参照用于记录任务涉及的时间2PC设备驱动模块它是外设与pAX的接口,支持显示器、键盘、打印机和中断缓冲方式的异信息.如唤醒时刻。任务建立后处于五种状卷之一:运行志、就绪态、中断态、睡眠态和终止态。图l展示步通讯等设备了任务状态转变及其条件。3.软件工具包提供中断向量管理等功能。d.初始化任务TASKO用于初始化队x下运行的各任务,引导PAX。并提供了可供用户开发的定时操作接口。这些模块可作为织木式程序设计的构件,生成结构较复杂的微机多任务实时应用系统。以F论述PAX内核的实觋。这是本系统的精华.具有普墙意义,易于移植到其它类型的微机或单板帆中囤】任务状态的转换任务状态字节的位映象见表2,其中禁止位是二、PAX操作系统的内核供开发者调试程序时使用的。内梭由四部分组成,E任务调度、实时时钟处理表2任务状态字节程序SYSRTI、系统原谱和任务控制块组:位模式解蒂I.任务控制块TCB10000000任务执行(被手动地)禁【卜任务是独立地被PAX请度的各个程序。为跟踪00100000该TCB未被指报(空TCB)这些并发执行前程序,PAX为每个任务建立一个任00010000任务被中斯(时阿片耗尽)00000100任务睡眠(SY,f~Lp或6Y.RPER调用)务控制块任务管理实质就是TCB的管理32个任00000010任务从睡眠状态赦唤醒务的TCB按J4霁序排列蜩成1"CB塑TCB为十六字·开发与应用·2o软件产业1990年11月0o0o00oi任务就绪权定时硬件中断,即中断类型8.用于系统计时。其2.任务调度中断服务程序除更新系统日历时钟计数外,还弓f发PAX的任务谓度采用分时轮转方式,选定一十一个类型1c中断.供应用程序开发者使用。BIOS使可供运行的任务若没有可供运行的任务,则CPU类型1c中断向量指向一条IRET(中断返回)指令.暂停.等待时钟中断。实现调度算法使用了下面的内不执行任何操作。通过重定向该中断向量使可利用存变量(见表3)。这个55毫秒的定时中断。PAX也正是通过改变类表3任务管理所使用的存储变量型1c的中断向量.使指向实时时钟处理程序SYSR-字节变量名解释n来实现分时功能,中断超时的任务见躅40—3未甩d一5SCTIME系统的当前对捌6SLICE给任务分配的时间片数7EDT|允许(O)或禁止(1)任务切换翼一!●|aCTNO当前可供发出的号码(0~255)9CBSTNO当前正被服务的号码AVARA程序变量BVARB程序变量CVARC程序变量D未用善E-FCTCBA当前任务的TCB的地址利用PAX的系统原语.如睡眠、队列、允许或禁止任务切换等.开发者可实现任务之间的协调技术.如信号灯、信箱、队列和临界区等。用信号灯可实现任务问的同步I用队列或信箱可实现任务之同的信息变换}用临界区能实现任务对不可共享资源的互斥访问。圈2自身终止程序图5建立一十作业圈3任_軎调度程序(2)启动/踌止一个任务SYSSTR/SYSKIL3.实