利用有限状态机防止代码重入的方法技术

技术编号:7240677 阅读:168 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种利用有限状态机防止代码重入的方法,其包括以下步骤:S1、定义状态机,以及状态机的各个状态结点的数据结构;S2、当有触发事件发给该状态机时,判断状态机当前处于何种状态,然后查询该状态响应的触发事件类型;S3、如果查找到相同的触发事件,就调用相应的处理函数,同时将状态标识置为对应的下一结点;否则直接抛弃该触发事件不作任何处理。本发明专利技术在不同的状态定义不同的触发事件或消息,这样可有效的防止代码重入,提高系统稳定性。

【技术实现步骤摘要】

本专利技术涉及一种,特别是涉及一种在手机操作系统中、尤其是大唐Arena平台软件架构中,。
技术介绍
Arena操作系统是由我国大唐移动自主研发的手机操作系统。目前Arena得到了国内和韩国厂商的支持。Arena由大唐移动主导开发,目前主要应用于TD-SCDMA手机,已经有超过10款2G,2. 5G和3G手机终端使用了该操作系统。大唐arena平台集成了 MINI⑶I 人机交互界面处理机制,此机制采用消息机制处理按键、中断等外部事件。MiniGUI是由北京飞漫软件技术有限公司创办的开源Linux图形用户界面支持系统,经过近些年的发展, MiniGUI已经发展成为比较成熟的性能优良的、功能丰富的跨操作系统的嵌入式图形界面支持系统。当用户“暴力”使用或测试时就会出现函数或线程代码重入,这样对系统的稳定性、健壮性影响极大。例如用户通过按键(0K键)进入一个应用程序,此应用程序收到按键消息后会有一系统后台操作(网络连接等),此时用户立刻按退出键(例如POWER键等),应用程序返回到IDLE界面,但后台还在处于运行状态,此时用户再次进入应用程序时,整个应用程序就处于重复运行中。就会出现出现紊乱,因为Arena操作系统平台处理中有些部分是不允许重入的,所以会出现定屏,死机或不可预知的状态。其中,可重入代码(Reentry code)也叫纯代码(Pure code)是一种允许多个进程同时访问的代码。为了使各进程所执行的代码完全相同,故不允许任何进程对其进行修改。程序在运行过程中可以被打断,并由开始处再次执行,并且在合理的范围内(多次重入,而不造成堆栈溢出等其他问题),程序可以在被打断处继续执行,且执行结果不受影响。代码重入是编程中一种正常的应用,但对于某些不支持代码重入的手机操作系统,比如大唐Arena系统中,如果出现代码重入,就可能会出现定屏,死机或不可预知的状态。以用户在流媒体(比如进行视频播放)播放界面触发播放按键事件为例。系统调用平台接口并进行一系列的网络操作。由于此流程是异步操作过程,即程序主线发出请求之后就做别的操作了,完全不理会请求执行的如何。用户第一次按了播放键之后,在正式播放前用户又一次触发了播放按键事件,系统会做相同的处理,如此这样的频繁操作多次,整个系统的时序关系就会错乱,导致一些不可预期的结果,比如定屏或死机。不仅如此,有时还会出现“播放”与“退出”临界操作,播放时需要使用一些共用资源(比如同一内存区,相同音视频解码芯片等),退出时需要释放这些资源。如果出现一个时间点,后台还在播放使用共用资源,但是用户又在前台按了退出键,此时就会出现资源冲突,从而导致死机、冻屏等用户无法忍受的现象。
技术实现思路
本专利技术要解决的技术问题是为了克服现有技术中某些手机操作系统不允许代码重入的缺陷,提供一种。本专利技术是通过下述技术方案来解决上述技术问题的—种,其特点在于,其包括以下步骤S1、定义状态机,以及状态机的各个状态结点的数据结构,该数据结构为状态机名{结点1,触发事件,处理函数,下一结点},{结点2,触发事件,处理函数,下一结点},...{结点n,触发事件,处理函数,下一结点},η为自然数;S2、当有触发事件发给该状态机时,判断状态机当前处于何种状态,然后查询该状态响应的触发事件类型;S3、如果查找到相同的触发事件,就调用相应的处理函数,同时将状态标识置为对应的下一结点;否则直接抛弃该触发事件不作任何处理。优选地,步骤S1中的触发事件为能改变当前状态的中断或者消息。优选地,所述的消息为按键消息、定时器消息和/或网络响应消息。优选地,步骤S1中的处理函数为当前状态收到触发事件后需要立即执行的指令操作。优选地,所述结点η的下一结点为结点η本身或者其它状态结点。本专利技术的积极进步效果在于本专利技术在不同的状态定义不同的触发事件或消息, 这样可有效的防止代码重入,提高系统稳定性。比如当在网络连接状态下,网络信号不好时不会响应任何按键消息,不会出现代码重入影响系统时序关系的事件操作。同时用户第一次进行网络连接状态,无论是否“暴力”使用或测试,所有外部按键消息都会被状态机所过滤,这样大大提高了软件的稳定性、健壮性。附图说明图1为本专利技术第一实施例的流媒体状态变迁图。图2为本专利技术第二实施例的在线听歌状态变迁图。具体实施例方式下面结合附图给出本专利技术较佳实施例,以详细说明本专利技术的技术方案。首先对有限状态机进行简单介绍,以便于后面理解本专利技术的
技术实现思路
和效果。有限状态机(Finite State Machine, FSM)或有限状态自动机或简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。简单说明一下,可以这样理解, 系统的行为如果在不同的时间(环境)下,其工作不同,并且行为可以分成所谓的有限的状态以及不重叠的程序块时,系统显现出了状态行为。有限状态是展示状态与状态转换的图,当探测到一个事件后,它依照当前的状态做出反应,反应包括执行一个动作和转换到新状态。每个状态可以定义状态变迁的事件或消息,这样当一个状态收到一个事件后就会迁移到另一个状态,此时若多次出现相同的事件则新状态不会做任何处理,除非新的状态也定义了此状态变迁事件。本专利技术实现有限状态机管理机制如下。每个有限状态机结点由状态及触发事件等因素组成,所以首先定义每个状态结点的数据结构,如表1所示。其中触发事件通常指能改变当前状态的一些中断、消息等,例如按键消息、定时器消息、网络响应消息等。处理函数指当前状态收到此触发事件后需要立即执行的指令操作,例如应用处于A状态,当其收到OK键时就会调用平台的一系列接口(网络操作,媒体播放)等,同时改变应用运行环境(比如申请内存空间,改变全局变量值等),这些都在处理函数中进行。处理完这些操作后应用就会置为B状态(可用变量ID标识其状态),依此类推。表 权利要求1.一种,其特征在于,其包括以下步骤51、定义状态机,以及状态机的各个状态结点的数据结构,该数据结构为状态机名{结点1,触发事件,处理函数,下一结点},{结点2,触发事件,处理函数,下一结点},...{结点n,触发事件,处理函数,下一结点},η为自然数;52、当有触发事件发给该状态机时,判断状态机当前处于何种状态,然后查询该状态响应的触发事件类型;53、如果查找到相同的触发事件,就调用相应的处理函数,同时将状态标识置为对应的下一结点;否则直接抛弃该触发事件不作任何处理。2.如权利要求1所述的,其特征在于,步骤S1中的触发事件为能改变当前状态的中断或者消息。3.如权利要求2所述的,其特征在于,所述的消息为按键消息、定时器消息和/或网络响应消息。4.如权利要求1所述的,其特征在于,步骤S1中的处理函数为当前状态收到触发事件后需要立即执行的指令操作。5.如权利要求1-4任一项所述的,其特征在于, 所述结点η的下一结点为结点η本身或者其它状态结点。全文摘要本专利技术公开了一种,其包括以下步骤S1、定义状态机,以及状态机的各个状态结点的数据结构;S2、当有触发事件发给该状态机时,判断状态机当前处于何种状态,然后查询该状态响应的触发事件类型;S3、如果查找到相同的触发事件,就调用相应的处理函数,同时将状态标识置为对应的下一结点;否则直接抛弃该触发事件不作任何处理。本专利技术在不同本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:刘美红
申请(专利权)人:希姆通信息技术上海有限公司
类型:发明
国别省市:

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

1
相关领域技术