一种支持多服务的方法及系统的制作方法

文档序号:6562216阅读:197来源:国知局
专利名称:一种支持多服务的方法及系统的制作方法
技术领域
本发明涉及计算机及嵌入式开发领域,特别是支持多服务运行的方法及系统。
背景技术
一个好的嵌入式系统需要包含大量的服务功能,但并不是所有的服务都需要时刻运行的,只有在有需求的时候,系统才会调用相应的服务来支持用户的需求,往往是很少的一部分。
参见图1,目前现有技术是当产生事件时,判断该事件的性质是否为允许运行相应的服务,如果允许,则在标志存储库里相应的位置上将其标志的状态置为“允许”,否则将其标志的状态置为“不允许”。
参见图2,目前支持多服务的系统包括用于存储所有服务标志的标志存储器,用于判断每个标志的状态的判决器,用于存储所有服务程序的服务存储器,用于运行服务的运行器,还有一个用于根据事件的产生更改标志状态的标志器。每发生一次事件,判决器都需要对标志存储器里的标志进行遍历,直到发现状态为“允许”的标志时,将该标志发送到运行器,由运行器根据该标志调用对应的服务并执行。
显然,标志存储器内需要存储所有服务的标志及状态,占用存储资源较多。每发生一次事件判决器就需要遍历和判断标志位,其中只有少数服务的标志位被置为“允许”,判决器每次都会遍历到大量无关的标志位,极大的浪费系统资源,影响系统的工作效率。

发明内容
本发明提供一种支持多服务的方法及系统,用以解决现有技术中存在占用存储资源和系统资源较多的问题。
本发明提供以下技术方案一种支持多服务的方法,包括以下步骤在事件产生时判断是否允许运行相应的服务,若是,则将该服务的标识存储到指定的存储区域,否则,查询所述存储区域,并且在该存储区域存在所述服务的标识时将其删除;以及在所述存储区域保存有服务的标识时读取各标识,根据各标识调用并执行相应的服务程序。
在存储所述服务标识前,判断是否已存有该服务的标识,若是,则不执行存储,否则,在所述存储区域中存储该服务的标识。
根据事件发生的顺序在所述存储区域中顺序存储所述服务标识,从所述存储区域中依次读取所述服务标识。
读取到所述存储区域的末尾后返回到起始位置继续读取服务标识。
在所述存储区域的末尾处增加延迟标志,在读取到该延迟标志时延迟指定的时间后继续读取服务标识。
所述存储区域采用单向链表结构存储服务的标识。
所述服务标识为该服务程序的入口地址。
一种支持多服务的系统,包括第一存储器,用于存储服务程序;第二存储器,用于存储服务标识;建表器,用于在事件产生时判断是否允许运行相应的服务,若是,则将该服务的标识存储到所述第二存储器,否则,查询所述第二存储器,并且在该第二存储器存在所述服务的标识时将其删除;运行器,在所述第二存储器保存有服务的标识时读取各标识,根据各标识从所述第一存储器中调用并执行相应的服务程序。
所述建表器在存储所述服务标识前,判断是否已存有该服务的标识,若是,则不执行存储,否则,在所述存储区域中存储该服务的标识。
所述第二存储器采用单向链表结构存储服务的标识。
所述建表器根据事件发生的顺序在所述第二存储器申顺序存储所述服务标识,所述运行器从所述第二存储器中依次读取所述服务标识。
所述建表器包括捕获模块,用于捕获产生的事件;判断模块,用于根据所述事件判断是否允许运行相应的服务;处理模块,用于在判断结果为是时,将该服务的标识存储到所述第二存储器,否则,查询所述第二存储器,并且在该第二存储器存在所述服务的标识时将其删除。
本发明有益效果如下1、本发明在地址存储器中存储需要执行的服务的入口地址,从而大幅度节省了存储空间,运行器可直接从地址存储器中读取需要运行的服务的入口地址,并通过该入口地址调用相应的服务并执行。
2、本发明的多服务运行系统中省略了判决器,简化了硬件结构并节省了系统功耗,由于不再需要判决器在每次事件发生时对所有服务标志进行遍历,节省了整个系统的运行时间,提高了系统的工作效率。


图1为现有技术中更新标志状态的流程图;图2为现有技术中支持多服务的系统结构图;图3为本实施例中链表结构示意图;图4为本实施例中支持多服务系统的结构图;图5为本实施例中建表器的结构图;图6为本实施例中建立链表的流程图;图7为本实施例中支持多服务系统的流程图。
具体实施例方式
为了解决现有技术中存在占用存储资源和系统资源较多的问题,本发明通过存储需要运行的服务的入口地址实现利用较少的资源完成多服务的运行。
本实施例中采用单向链表的形式存储需要运行的服务的入口地址,地址存储器以链表结构存储入口地址的逻辑形式如图3所示,每个节点的第一部分保存的是服务的入口地址,第二部分保存的是下一个节点的地址。也可以采用双向链表等其它数据结构形式或其它存储形式存储服务地址,例如,数组。本实施例只提供一种较佳的方式。
参见图4,本实施例中支持多服务的系统包括建表器401、地址存储器402、运行器403和服务存储器404。
地址存储器402采用单向链表结构存储需要运行的服务的入口地址。地址存储器402也可以存储服务的标志,由该标志指向服务的入口地址,而直接存储服务的入口地址是一种最佳的方式,运行器403可以较快的调用服务程序。
服务存储器404存储各服务程序模块,并且各服务程序模块有固定的存储地址。
建表器401根据产生的事件对地址存储器402中的服务地址链表进行相应的操作。
运行器403从地址存储器402中顺次读取服务的入口地址,根据此服务的入口地址到服务存储器404中调用对应的服务程序并运行。
参见图5,本实施例中建立链表的建表器401包括捕获模块501、判断模块502和处理模块503。
捕获模块501捕获事件的产生。
判断模块502判断捕获模块501捕获的事件的性质是否为允许运行相应服务的事件,将判断结果交由处理模块503处理。
处理模块503判断结果为允许运行时,在链表的末尾增加存有该事件对应的服务入口地址的节点;判断结果为不允许运行时,在链表的相应位置删除该事件对应的服务入口地址所在节点。在增加或删除前都需要判断链表中是否存在该服务的入口地址,并进行相应的处理。
本实施例中,事件B是指按住“下”键;服务B是指系统执行“下”的动作。事件C是指抬起“下”键;事件B和事件C对应同一个服务B。事件A是指按住“上”键;服务A是指系统执行“上”的动作。一个事件对应一个服务。存在运行器403在运行一个服务的同时调用其它的服务,其它的服务是受前一个服务的调用,故没有产生事件,与建表器401无关。若产生一个事件需调用多个服务时,将多个服务封装成一个服务,即看作是一个服务来处理,与前述的一个事件对应一个服务相一致。
参见图6,本实施例中建立链表的具体流程如下步骤601用户按住“下”键,产生事件B,建表器401捕获到该事件。
步骤602判断事件的性质,此时该事件的性质是否为允许运行相应的服务,若是,则执行步骤603,否则执行步骤606。当前事件B为允许运行服务的事件,故执行步骤603。
步骤603根据事件B所对应的服务B的入口地址查询链表。
步骤604判断链表中是否已存在服务B的入口地址,若是,则返回,不需要重复添加服务的入口地址,以节省存储空间,否则继续步骤605。
步骤605在链表的末尾增加一项节点,该节点的第一部分为该服务的入口地址,第二部分为空,将前一项节点的第二部分的空改为本节点的地址。事件B为允许触发向下的动作,在链表的末尾增加一项节点存入服务B的入口地址,第二部分为空。
若用户始终按住“下”键,相当于在不断的产生事件B,由于在第一次产生事件B时建表器401已在链表中增加了服务B的地址,所以后续的事件B的发生不会在链表中有记录。
在发生事件B之后,用户抬起“下”键,产生事件C,建表器401捕获到该事件,重复上述步骤601和602,由于此时的事件C为禁止运行服务B,进一步执行以下步骤步骤606根据事件C所对应的服务B的入口地址查询链表。
步骤607判断是否可以找到服务B的入口地址,若是,则执行步骤608,否则返回。由于之前已经发生了事件B,故链表中已存在服务B的入口地址,所以可以在链表中查找到事件C所对应的服务B的入口地址,继续执行步骤608。
步骤608找到服务入口地址后,将该项节点的前一项节点的第二部分修改为该节点的下一项节点的地址,若不存在下一项节点,则将前一项节点的第二部分设为空,即删除掉该项节点,防止该服务被重复运行。删除服务B对应的节点,终止服务B,不希望系统重复执行向下的动作,只有再次触发事件B时再执行服务B,即执行向下的动作。
在链表的起始或末尾处增加延迟标志,运行器403在读到延迟标志时延迟相应的时间后继续运行。这种方式可防止某些服务被错误的运行多次。
存在运行器403还未运行某服务时就已产生禁止该服务的事件的情况,说明这类服务不应该被运行,这种情况可以避免一些误操作,并可以进一步节省系统的开销。
参见图7,本实施例中支持多服务方法的具体流程如下步骤701运行器403进入链表首节点步骤702判断当前地址存储器402的链表节点中的第二部分是否为空,若是,则执行步骤701,否则执行步骤703。
只有在判断首节点时需先判断首节点的第一部分是否为空,若首节点的第一部分为空,则不断的访问链表首节点,否则继续判断首节点的第二部分是否为空,根据判断结果进行后续步骤。
步骤703运行器403从地址存储器402的当前的链表节点的第二部分找到下一项节点,从下一项节点中读取服务入口地址,通过服务入口地址到服务存储器404中调用对应的服务并执行。当前的链表节点的第二部分中存有下一项节点的位置,故不为空,本实施例中下一项节点中存有服务B的入口地址,运行器403从地址存储器402中读到服务B的入口地址后,根据该入口地址到服务存储器404中调用服务B的程序,并执行向下的动作。
步骤704运行器403进入该项节点的第二部分,继续步骤702,循环运行。
以上分别详细介绍了建表器401和运行器403针对单一事件的产生分别进行的增加服务标识、读取服务标识和运行服务等处理过程,下面介绍多个事件连续发生时建表器401和运行器403进行的相关处理。还以事件B、C、A为例进行说明。
建表器401捕获到的事件发生顺序为事件B、C、A。发生事件B时,建表器401在地址存储器402的链表中增加关于服务B的节点;发生事件C时,建表器401在地址存储器402的链表中删除关于服务B的节点;发生事件A时,建表器401在地址存储器402的链表中增加关于服务A的节点。运行器403在地址存储器402中读取到服务B的入口地址,调用并运行服务B,然后从服务B的入口地址所在节点的第二部分读到下一节点的位置,进一步从下一节点的第一部分找到服务A的入口地址并读取。由于服务B的入口地址已被删除,服务A的入口地址还存在,所以运行器403在下次循环执行后将再一次运行服务A。
运行器403对一项服务只执行一次,若用户始终按住“下”键未抬起,说明用户在不断的触发事件B,而事件C未发生,这时若用户再按住“上”键产生事件A,则运行器403运行一次服务B后运行一次服务A,由于用户没有抬起“下”键和“上”键,删除服务B和服务A的事件始终没有产生,故运行器403将循环执行服务B和服务A。
可能存在一种事件D,其性质包括事件C和事件A,为允许运行服务的事件,即事件D对应的操作为在删除服务B所在的节点时增加存储服务A的入口地址的节点。
本发明在地址存储器中存储需要执行的服务的入口地址,从而大幅度节省了存储空间,运行器可直接从地址存储器中读取需要运行的服务的入口地址,并通过该入口地址调用相应的服务并执行。本发明的多服务运行系统中省略了判决器,简化了硬件结构并节省了系统功耗,由于不再需要判决器在每次事件发生时对所有服务标志进行遍历,节省了整个系统的运行时间,提高了系统的工作效率。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种在嵌入式系统中实现多服务的方法,其特征在于,包括步骤在事件产生时判断是否允许运行相应的服务,若是,则将该服务的标识存储到指定的存储区域,否则,查询所述存储区域,并且在该存储区域存在所述服务的标识时将其删除;以及在所述存储区域保存有服务的标识时读取各标识,根据各标识调用并执行相应的服务程序。
2.如权利要求1所述的方法,其特征在于,在存储所述服务标识前,判断是否已存有该服务的标识,若是,则不执行存储,否则,在所述存储区域中存储该服务的标识。
3.如权利要求1所述的方法,其特征在于,根据事件发生的顺序在所述存储区域中顺序存储所述服务标识,从所述存储区域中依次读取所述服务标识。
4.如权利要求3所述的方法,其特征在于,读取到所述存储区域的末尾后返回到起始位置继续读取服务标识。
5.如权利要求3所述的方法,其特征在于,在所述存储区域的末尾处增加延迟标志,在读取到该延迟标志时延迟指定的时间后继续读取服务标识。
6.如权利要求1至5中任一项所述的方法,其特征在于,所述存储区域采用单向链表结构存储服务的标识。
7.如权利要求6所述的方法,其特征在于,所述服务标识为该服务程序的入口地址。
8.一种支持多服务的系统,其特征在于,包括第一存储器,用于存储服务程序;第二存储器,用于存储服务标识;建表器,用于在事件产生时判断是否允许运行相应的服务,若是,则将该服务的标识存储到所述第二存储器,否则,查询所述第二存储器,并且在该第二存储器存在所述服务的标识时将其删除;运行器,在所述第二存储器保存有服务的标识时读取各标识,根据各标识从所述第一存储器中调用并执行相应的服务程序。
9.如权利要求8所述的系统,其特征在于,所述建表器在存储所述服务标识前,判断是否已存有该服务的标识,若是,则不执行存储,否则,在所述存储区域中存储该服务的标识。
10.如权利要求8所述的系统,其特征在于,所述第二存储器采用单向链表结构存储服务的标识。
11.如权利要求8所述的系统,其特征在于,所述建表器根据事件发生的顺序在所述第二存储器中顺序存储所述服务标识,所述运行器从所述第二存储器中依次读取所述服务标识。
12.如权利要求8所述的系统,其特征在于,所述建表器包括捕获模块,用于捕获产生的事件;判断模块,用于根据所述事件判断是否允许运行相应的服务;处理模块,用于在判断结果为是时,将该服务的标识存储到所述第二存储器,否则,查询所述第二存储器,并且在该第二存储器存在所述服务的标识时将其删除。
全文摘要
本发明公开了一种支持多服务的方法及系统,用以解决现有技术中存在占用存储资源和系统资源较多的问题。本发明在事件产生时判断是否允许运行相应的服务,若是,则将该服务的标识存储到指定的存储区域,否则,查询所述存储区域,并且在该存储区域存在所述服务的标识时将其删除;以及在所述存储区域保存有服务的标识时读取各标识,根据各标识调用并执行相应的服务。该系统包括建表器、地址存储器、运行器和服务存储器。
文档编号G06F9/46GK1928829SQ20061013916
公开日2007年3月14日 申请日期2006年10月18日 优先权日2006年10月18日
发明者游明琦, 张攀峰 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1