一种系统进程调度下无效超时消息的方法及消息发送方法技术方案

技术编号:2830727 阅读:223 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种系统进程调度下无效超时消息的方法及消息发送方法,其应用于嵌入式操作系统的定时器模块上,首先、在定时器控制结构中添加一指针变量;然后、当系统定时器模块向进程发送定时器超时消息时,将所述指针变量指向定时器超时消息。本发明专利技术的定时器模块能够提供追杀定时器超时消息的功能,其对系统的稳定性和流程的正确性起到了至关重要的作用。本发明专利技术提供的嵌入式操作系统进程调度下追杀定时器超时消息的方法,可以追杀已经发出的但还没有被接受任务处理的定时器超时消息,防止异常流程的出现。

【技术实现步骤摘要】

本专利技术涉及采用优先级调度的嵌入式实时系统的开发领域,具体涉及 在嵌入式多任务环境上实现的二级进程调度环境中,无效超时消息的方法 及超时消息发送方法。
技术介绍
实时系统是指能及时响应外部随机事件,并以足够快的速度完成相应 处理,否则会引起严重后果的系统,其广泛应用于通信设备、军事、航空 航天等领域。很多公司在嵌入式实时多任务系统之上,实现了 二级进程调度管理、 时间管理、通信管理、内存管理等几部分功能。二级调度,即在嵌入式实时操作系统提供的任务基础上承载多个进程, 每个进程拥有独立的堆栈,任务相当于一个操作系统内核,而且是一个基 于消息驱动的、非抢占式、未定义优先级的、无时间片轮转的简单内核, 进程的调度称为二级调度。定时器模块为操作系统中的任务和进程提供定 时功能,对于实时操作系统而言,定时器模块作为操作系统时间管理的核 心就显得尤为重要。由于嵌入式多任务环境的不可预知性,在实际运行中,任务的执行常 常因为高低优先级的差异而存在被抢占的情况,从而被其他高优先级任务 所阻塞。被抢占的任务就有可能无法及时清除自身设置的定时器,而导致 一些不应该超时的定时器超时,甚至会在消息队列中堆积大量的超时消息 以及待处理的消息,其包括定时器到达消息,而前面被积压的消息在处理流程中,可能有杀定时器的操作,此操作正常来讲只能操作在定时器管理 队列里的定时器,而不能清除已经进入任务消息队列的定时器超时消息, 于是导致系统进入^f艮多异常流程。例如,进程A和进程B分别属于两个任务,进程A向进程B发送请求消息(REQ),同时启动一个定时器,如果在 该定时器超时前收到进程B的应答消息(ACK),则清除定时器,执行相应 处理,如果该定时器超时则执行复位操作。设想如下情况,进程B向进程 A发送了 ACK消息,但进程A所在任务被其他高优先级任务阻塞,无法得 到CPU资源处理ACK消息,无法清除定时器,所以进程A又会收到定时 器模块发来的定时器超时消息,从而积压很多待处理的消息。当进程A所 在任务获得CPU资源开始执行时,进程A会先后处理ACK消息和超时消 息,就可能会导致异常处理。因此,现有技术中存在一定的问题,需要进一步的改进。
技术实现思路
本专利技术的目的是提供一种嵌入式操作系统进程调度下无效超时消息的 方法及消息发送方法,其解决了因为多任务环境而产生的 一些不必要的定 时器超时消息,避免引发异常处理。本专利技术的方法实现简单,通用性强, 适用于大多数定时器模块。为了达到上述目的,本专利技术采用如下技术方案。本专利技术的嵌入式操作系统中定时器超时消息的发送方法,其应用于嵌 入式操作系统的定时器模块上,所述方法按照以下步骤进行a、预先在定 时器控制结构中添加一指针变量;b、当系统定时器模块向进程发送定时器 超时消息时,将所述指针变量指向定时器超时消息。所述步骤b中,所述 指针变量指向定时器超时消息在任务消息接收队列中的首地址。基于上述思想,本专利技术还提供了一种系统进程调度下无效超时消息的 方法,其应用于嵌入式操作系统的定时器模块上,所述方法按照以下步骤进行A、 系统进程所在的任务获取CPU资源,并处理消息接收队列中的消息;B、 系统定时器模块判断当前进程对应的定时器是否已经超时;如果该 定时器已经超时,则执行步骤D,否则执行步骤C;C、 清除当前进程对应的定时器;D、 所述定时器^^莫块利用一指向定时器超时消息的指针变量,在任务消 息接收队列中查找该定时器超时消息,并将该定时器超时消息的标志置为无效。其中,所述步骤D之后还包括以下步骤E、在当前进程所在的任务向 下属进程分发消息时,删除消息体的消息标志为无效的消息,循环获取下 一条有效的消息。其中,所述步骤A之前还包括以下步骤AOl、系统进程向另一进程发送请求消息,并启动一定时器计时;A02、所述另一进程向系统当前进程反馈应答消息,并将应答消息置于当前进程所在任务的消息接收队列中。其中,所述步骤A包括以下步骤Al、判断当前进程所在任务是否获 得CPU资源;如果是,则执行步骤A2; A2、当前进程处理所述应答消息, 并执行步骤B。其中,所述步骤A01还包括以下步骤AOll、定时器^t块定时扫描定 时器队列;A012、当定时器模块检测到设置的定时器超时时,则向设置定 时器的进程发送定时器超时消息,同时将一指针变量指向该定时器超时消 息。所述步骤A012中,所述指针变量指向定时器超时消息在任务消息接收 队列中的首地址。专利技术效果本专利技术的定时器模块能够提供追杀定时器超时消息的功能, 即将处于消息接收队列中的定时器超时消息设置为无效状态的功能,其对系统的稳定性和流程的正确性起到了至关重要的作用。本专利技术提供的嵌入 式操作系统进程调度下追杀定时器超时消息的方法,可以追杀已经发出的 但还没有被接受任务处理的定时器超时消息,防止异常流程的出现。附图说明图1是进程A收到应答消息的任务消息接收队列示意图; 图2是进程A收到定时器超时消息的任务消息接收队列示意图; 图3是进程A处理应答消息、置超时消息为无效、删除定时器的任务 消息接收队列示意图4是本专利技术方法的流程图。具体实施例方式下面结合附图对技术方案的实施作进一步的详细描述。 首先,本专利技术在定时器控制结构的结构定义中添加记录定时器超时消 息的消息体的指针变量,并按照以下过程进行超时消息的发送当系统定 时器模块在定时扫描定时器队列时检测到进程设置的定时超时,则定时器 模块向设置定时器的进程发送定时器超时消息,同时将该定时器控制结构 中的指针指向该定时器超时消息。在系统初始化时将全部定时器控制结构 中的该指针变量置为空。这里,所述指针变量最好指向定时器超时消息在 任务消息接收队列中的首地址,这样便于查找。然后,本专利技术利用上述添加的指针变量按照以下过程无效系统进程的 超时消息第一步、系统进程所在的任务需要从CPU获取资源,并处理消 息接收队列中的消息;第二步、系统定时器模块先判断当前进程对应的定 时器是否已经超时;如果该定时器已经超时,则定时器模块利用上述指向 定时器超时消息的指针变量,在任务消息接收队列中查找该定时器超时消 息,并将该定时器超时消息的标志置为无效。如果上述定时器没有超时,则可以直接清除进程对应的定时器,执行后续处理。在进行完上述步骤之 后,在系统当前进程所在的调度任务从自身消息队列里取消息分发给下属 进程时,删除消息体的消息标志为无效的消息,循环获取下一条有效的消 息分发给进程处理,从而彻底肃清了已发出的但还没有来得及处理的定时 器超时消息,避免系统进入异常的处理流程,减少系统的资源浪费。下面结合图4举例说明上述方法的具体实施过程,其中,进程A和进 程B分別属于两个任务。步骤200,进程A向进程B发送请求消息(REQ),同时进程A启动一 个定时器l。在此过程之后,需要定时器模块定时扫描定时器队列,当定时 器模块检测到设置的定时器超时时,则向设置定时器的进程发送定时器超 时消息,同时将一指针变量指向该定时器超时消息的消息体首地址,如图2 所示。步骤205,进程B收到进程A的请求消息后向进程A发送应答消息 (ACK),并将应答消息放入进程A所在任务的消息队列中,如图1所示。步骤210,判断任务A是否获得CPU资源;若是,则执行步骤215; 若否则继续本文档来自技高网
...

【技术保护点】
一种系统进程调度下超时消息的发送方法,其应用于嵌入式操作系统的定时器模块上,其特征在于,所述方法按照以下步骤进行:a、预先在定时器控制结构中添加一指针变量;b、当系统定时器模块向进程发送定时器超时消息时,将所述指针变量指向定 时器超时消息。

【技术特征摘要】
1、一种系统进程调度下超时消息的发送方法,其应用于嵌入式操作系统的定时器模块上,其特征在于,所述方法按照以下步骤进行a、预先在定时器控制结构中添加一指针变量;b、当系统定时器模块向进程发送定时器超时消息时,将所述指针变量指向定时器超时消息。2、 根据权利要求1所述的方法,其特征在于,所述步骤b中,所述指 针变量指向定时器超时消息在任务消息接收队列中的首地址。3、 一种系统进程调度下无效超时消息的方法,其应用于嵌入式操作系 统的定时器模块上,其特征在于,所述方法按照以下步骤进行A、 系统进程所在的任务获取CPU资源,并处理消息接收队列中的消自 B、 系统定时器模块判断当前进程对应的定时器是否已经超时;如果该 定时器已经超时,则执行步骤D,否则执行步骤C;C、 清除当前进程对应的定时器;D、 所述定时器模块利用一指向定时器超时消息的指针变量在任务消息 接收队列中查找该定时器超时消息,并将该定时器超时消息的标志置为无 效。4、 根据权利要求3所述的方法,其特征在于,所述步骤D之后还包括 以下...

【专利技术属性】
技术研发人员:赵井军高世洪王国兵
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利