




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ITRON4 0规范的实时操作系统 NORTi ve基于u ITRON4.0规范的实时操作系统(NORTi version 4)-12011-03-21 22:45特长高速应答性NORTi是抢占式多任务操作系统,当事件发生时通过基于优先度的调度程序,实时地切换任务。系统内核由仔细斟酌过的代码构成,在系统调用内部不必通过查询,1次即可选择操作对象,而且中断屏蔽时间被缩短到以前的一半,能最大限度地发挥CPU性能。此外,操作系统能够导入优先度高于OS的中断程序。此时,中断屏蔽时间无限趋近于零。小型最佳优化了TCB(Task Control Clock任务管理模块)等操作系统内部管理模块大小,不会浪费宝贵的RAM领域1个字节C语言编写的内核NORTi的大部分源代码是用容易理解的C语言编写的,有人认为用C语言编写的操作系统性能不如汇编语言编写的操作系统,其实并非如此。用C语言编写的操作系统通过编译器分配寄存器,可以使用最少的寄存器完成存储/复原等操作,相应系统就可高速运行。并且,因为应用过的源代码可以兼容多种CPU,故新版CPU发布后,马上就能保证可靠运行。兼容u ITRON4.0与u ITRON3.0两种规范日本TRON协会的u ITRON4.0规范并不兼容3.0规范。而在NORTi里不仅支持u ITRON4.0规范,也实装了u ITRON3.0规范的接口。在以前版本中开发的程序,不经修改即可与现系统共存直接使用。完整的u ITRON NORTi中完整的实装了u ITRON4.0/3.0规范,并认真地进行了优化组合、另外还提供了丰富的同步通信手段(不包括CPU异常处理程序定义)。支持多种处理器/编译程序/调试工具由于NORTi支持大部分的1632位处理器,所以即使目标机器不同中,也可以用相同的作法使用NORTi。此外为了支持更多的开发环境,MiSPO公司正在与多家开发工具制造商进行合作,积极地寻求对策。任务的状态在NORTi中可并行处理的程序单位称为任务,任务始终处于NON-EXISTENT(未生成状态),DORMANT(停止状态),READY(准备状态),RUNNING(执行状态),WAITING(等待状态),SUSPENDED(强制等待状态),WAITING-SUSPENDED(双重等待状态)等7个状态的任1状态。准备状态(READY)因为更高优先度处于执行状态,或者相同优先级的任务被提前执行,而等待的状态。执行状态(RUNNING)任务正在被处理器执行的状态。处于RUNNING状态的任务同时只能存在1个。对于任务而言,READY状态和RUNNING状态没有太大的差别,最优先的READY任务也可以被称为RUNNING任务。等待状态(WAITING)等待状态是指通过自任务呼叫的系统调用而停止执行的状态。在事件驱动的多任务系统中,被启动的任务大部分的时间都应该处于等待状态中。否则,不能利用任务等待的时间执行其他的任务。等待状态根据其特点分为以下几类。起床等待(slp_tsk,tslp_tsk)时间等待(dly_tsk)事件标识(event flag)成立等待(wai_flg,twai_flg)信号(semaphore)获得等待(wai_sem,twai_sem)排他资源(mutex)获得等待(loc_mtx,tloc_mtx)信箱(mail box)接收消息(message)等待(rcv_mbx,trcv_mbx)消息缓存(message buffer)发送消息等待(snd_mbf,tsnd_mbf)消息缓存(message buffer)接收消息等待(rcv_mbf,trcv_mbf)数据队列(data queue)发送消息等待(snd_dtp,tsnd_dtp)数据队列(data queue)接收消息等待(rcv_dtp,trcv_dtp)会合(rendezvous)呼叫等待(cal_por,tcal_por)会合(rendezvous)应答等待(acp_por,tacp_por)会合(rendezvous)结束等待(cal_por,tcal_por)可变长内存块(memory block)获得等待(get_mpl,tget_mpl)固定长内存块(memory block)获得等待(get_mpf,tget_mpf)强制等待状态(SUSPENDED)任务被其他任务中止执行后进入的状态。该状态被利用的机会很少。设置的目的主要为了调试时暂时停止正在执行的任务。双重等待状态(WAITING-SUSPENDED)是为了方便管理而分离出来的,其与强制等待状态大致相同。只是当任务被其他任务停止时不是处于准备状态,而是处于等待状态。当等待条件满足时,任务从等待状态迁移到强制等待状态,而不是执行状态。停止状态(DORMANT)停止状态是指任务没有被启动时的状态或任务结束时的状态,执行中的任务即可以被自己呼叫的系统调用中止,也可以被其他任务强制中止,迁移到停止状态。未生成状态(NON-EXISTENT)是指任务未被生成的状态,或任务被删除的状态。任务切换发生的时机NORTi由于是多任务操作系统,当前执行的任务可以被切换到更高优先度的任务。任务切换发生的时机有以下4类(1)当前被执行任务启动了优先度高于自身的任务,或者解除了更高优先度任务的等待。(2)非任务上下文程序(中断处理程序/中断服务程序/时间事件处理程序)启动优先度高于当前被执行任务的任务,或者解除了更高优先度任务的等待。(3)等待状态中优先度高于当前被执行任务的任务因超时(timeout)而被解除了等待。(4)执行中的任务自己进入等待状态,如降低优先度时,才能发生任务切换。对于优先度相同或较低时,可以通过rot_rdq和chg_pri等系统调用将执行中的任务回转到等待执行队列的末尾,来实现相同优先级的任务间的互相切换。用语目标对象(object)和ID系统调用的操作对象系统称为目标对象,为了识别目标对象,通过用户指定的号码被称为ID。在内核及软件模块的内部,用户不能直接指定的ID称为目标对象ID。具有ID的目标对象包括:任务、信号、事件标识、信箱、消息缓存、会合用端口、可变长/固定长内存池、数据队列、排他资源、周期处理程序、报警处理程序、中断服务程序等。通过目标对象ID区分的目标对象包括:中断处理程序、会合、静态生成的中断服务程序任务上下文(context)直译为上下文,指系统内部某一时刻任务的全体执行环境,称为该任务的上下文。他是指任务被切换时,系统中被保存/复原对象的总称。也可以具体解释为CPU的寄存器状态。当在多任务中使用DSP(Digital signal processing数字信号处理)、浮点小数运算单元时,其寄存器类也必须进行上下文更换。若NORTi对其不支持时,用户有必要对浮点运算等进行排他处理。非任务上下文程序中断处理程序与时间事件处理程序合称为非任务上下文程序。时间事件处理程序包括周期启动处理程序、报警处理程序、溢出处理程序3种。(在u ITRON3.0规范中,非任务上下文程序被称为任务独立部分、时间事件处理程序被称为时间处理程序)。由于非任务上下文程序的各个处理程序并不是任务,因此不能把自任务作为目标对象呼叫系统调用。调度(dispatch)选择执行的任务并进行任务切换的过程被称为调度。系统调用包括发生调度和不发生调度两种。即使在发生调度的系统调用中,如果刚进入READY状态的任务优先度低于RUNNING状态的优先度,也不发生任务切换。另外,通过非任务上下文程序呼叫的系统调用发生调度时,当系统向任务的上下文还原时再统一执行,这被称为延迟调度。同步/通信功能同步功能在任务等候协作时使用,通信功能在任务间传递数据。由于通信一般都要求同步,因此将同步、通信功能放在一起表述。即使不使用同步通信功能,如果慎重设计程序,通过使用公用变量,任务间的协作及数据的传递也是可能的,但使用OS提供的同步/通信功能更加简单、安全。在NORTi中定义了信号、事件标识、信箱、消息缓存、会合用端口、数据队列、排他资源等7种具有各自物征的同步通信功能。任务等待队列对于1个目标对象,当有多个任务要求时,可以将任务排成任务等待队列。其包括信号获得等待任务、事件标识成立等待任务、信箱的消息接收等待任务、消息缓存的消息发送/接收等待任务、端口的会合呼叫/接收等待任务,可变长/固定长内存池的内存块获得等待任务,数据队列送信/受信等待任务,排他资源获得等待任务等。任务等待队列原则上为先进先出(FIFO:First In First Out),信号、信箱、消息缓存受信侧、可变长/固定长内存池、排他资源等也可以按任务的优先度或消息的优先度进行排列。消息等待行列(queuing)当对其他任务的要求不被受理时不发生错误,而将要求排成的队列称为消息等待队列。任务的启动要求、信箱/消息缓存/数据队列的消息都可以被排成等待队列。启动任务要求的等待行列通过记录启动要求次数的计数器实现。信箱消息的等待行列通过指针连接的线型链实现。消息缓存/数据队列消息的等待行列通过环形缓存实现。事件标识和任务异常没有消息等待行列,他们通过OR运算结果来决定发生的事件及保留异常发生的原因。这种只记录事件的有无、而不记录次数的特征和消息等待队列是不同的。无等待(polling)和超时(timeout)对于发生等待的系统调用,准备了无等待和超时中断两种机能。若无等待的系统调用必须发生等待的话将产生错误。参数(parameter)与返回值(return parameter)在u ITRON4.0规范中,从用户方传递过来的数据被称为参数,从系统调用侧返回的数据称为返回值。在本书中用C来表达一般的参数。系统调用的返回值原则上是错误代码(error code),当返回其他值时,需将保存该值的地址指针作为参数传递。系统调用(system call)和服务程序(service call)通过应用程序调用系统内核及软件模块的接口(API)称为服务程序。内核中的服务程序,特称为系统调用。排他控制在多任务中,不能被同时访问的对象可以被复数的任务访问。系统中有许多排他(nore-entrant)函数、公用数据等不能被同时利用的对象。为防止这些资源被同时访问而实行的管理称为排他控制。通常使用信号(semaphore)或排他资源(mutex)如果通过统一任务的优先度,在访问资源时,不必发生竞争任务的切换。那么就可以不进行排他控制(统一优先度是不进行排他控制的有效手段)。实际上,使用semaphore时,因为经常发生高优先度的任务等待低优先度任务返回semaphore的这种优先度逆转的复杂问题,所以有时暂时提高竞争区间的优先度效果很好。在使用mutex时,有时也可以通过提高任务优先度来解决问题,但是当进行排他控制的时间很短的话,通过暂时禁止调度或禁止中断,可以简单地实现排他控制。闲置任务(idle task)闲置任务在其他所有任务停止时被执行,在内核中也有闲置任务。在用户程序中,无限循环的最低优先度的任务即为闲置任务。闲置任务虽然什么也不执行,但却有重要意义。在事件驱动方式的多任务系统中,若闲置任务始终不被执行,表示CPU的性能不足或者徒劳耗费CPU资源的任务存在。静态错误和动态错误从系统调用中返回的错误分为静态错误和动态错误两种。静态错误是由于使用了范围外ID号码等异常参数,与系统状态无关而必然发生的错误。当程序调试完成后将自动消息失。动态错误是指还没有进入等待队列的任务被解除等待那样,与系统的状态或定时器(timing)等有关的错误。象polling失败那样,用户也可以编制积极利用动态错误的程序。在NORTi中,为了实现高速化,也内置了不检查静态参数错误的程序连接库。上下文错误(context error)有些系统调用是不能由非任务上下文程序(中断处理程序和时间事件处理程序)进行调用的。否则,将从系统调用返回上下文错误。因为这是静态的错误,所以在不检查静态参数的程序库中,不能查出这个错误。静态API与动态API在u ITRON4.0规范中,以大写字母记述的生成系的系统调用称为静态API,但OS对其并不直接支持。静态API结构在编译时,由TCB等管理模块确保其在系统启动时进行初始化。即在编译前,需要生成对应静态API的代码,因此在u ITRON4.0规范中导入了配置程序。NORTi的基础是生成动态对象,因此NORTi的配置程序,在初始化时通过将配置文件中的静态API替换为通常的动态API的代码来实现静态API。通用原则系统调用的名称ITRON的系统调用基本上是xxx_yyy类型,xxx是操作方法的省略名,yyy是操作对象的省略名。从xxx_yyy派生的系统调用,在前面增加1个字母,变为zxxx_yyy类型,如在polling的系统调用前面加p,有timeout的系统调用前面加t,独自的系统调用前面加v数据类型的名称ITRON的数据类型全部使用大写字母,指针类型的名称为P_,结构体类型的名称原则上为T_。参数的名称在系统调用的定义中,参数名称原则如下p_数据地址指针pk_结构体地址指针ppk_结构体地址指针的指针id IDno编号atr属性cd代码sz大小(字节数)cnt个数ptn位组合模式(bit pattern)i初始值0和负数的处理在系统调用的输入输出中,多数情况下0具有特殊的含义,以任务ID为例,用0指定自任务。所谓自任务是指呼叫的系统调用的操作对象为自身的任务,由于0具有特殊意义,因此ID号码和优先度都是从1开始的,在ITRON规范中负值与系统有关,如系统调用的错误代码为负。在u ITRON3.0规范前,负的ID号码(-1)(-4)作为系统用被保留,但在u ITRON4.0规范中已经被取消,在NORTi中也不使用。数据类型(32位CPU)在IRON中,下列再定义类型由系统调用使用。INT,UINT为32位。通用的数据类型typedef signed char B;带符号的8位整数typedef unsigned char UB;无符号的8位整数typedef short H;带符号的16位整数typedef unsigned short UH;无符号的16位整数typedef long W;带符号的32位整数typedef unsigned long UW;无符号的32位整数typedef char VB类型不定的数据(8位大小)typedef short VH类型不定的数据(16位大小)typedef long VW;类型不定的数据(32位大小)typedef void*VP指向类型不定数据的指针typedef void(*FP)();一般为程序的先头地址IRON特有数据类型typedef int INT带符号的整数typedef unsigned int UINT无符号的整数typedef int BOOL布尔值(FALSE(0)或TRUE(1)typedef INT FN;函数代码typedef int ID;目标对象的ID代码typedef int RDVNO;会合(rendezvous)号码typedef unsigned int ATR;目标对象属性typedef int ER;错误代码typedef int PRI;任务优先度typedef long TMO;超时(timeout)typedef int ER_ID;错误代码或目标对象ID号码typedef long DLYTIME;延迟时间typedef unsigned int STAT;目标对象的状态typedef unsigned int MODE;服务程序的动作模式typedef unsign
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西省医疗保障局直属事业单位招聘考试真题2025
- 2025数控编程试题题库及答案
- 解析卷人教版八年级物理上册第6章质量与密度-密度专项攻克试卷
- 2025年煤矿企业主要负责人安管能力考试强化训练试题及答案
- 难点解析-人教版八年级物理上册第6章质量与密度-质量章节训练试题(含详细解析)
- 2025年房地产开发与管理专业试卷及答案
- 2025年金属冶炼单位主要负责人考试(金属冶炼黑色金属铸造)全真模拟试题及答案四
- 2025年数控操作员理论题及答案
- 2025年道路运输企业主要负责人和安全生产管理人员考试(安全生产管理人员)测试题及答案
- 2024年省燃气经营企业从业人员考试(汽车加气站操作工)经典试题及答案四
- 融媒体概论课件
- 中央空调系统维护技术规范
- 正大杯全国大学生市场调查与分析大赛(试题340道含答案)
- 大学物业管理知识培训课程课件
- 假体周围骨折课件
- 建筑工程施工安全与技术管理相关知识试卷
- 2025年高等教育工学类自考-02382管理信息系统历年参考题库含答案解析(5套典型题)
- 2025年人教版新教材数学三年级上册教学计划(含进度表)
- 医院移动护理系统
- 初中道德与法治名师讲座
- 急性胆源性胰腺炎护理查房
评论
0/150
提交评论