一种多任务调度系统的制作方法

文档序号:6463501阅读:172来源:国知局
专利名称:一种多任务调度系统的制作方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种多任务调度系统。
技术背景实时操作系统是嵌入式应用软件的基础和开发平台,是一个可靠性和可信性很高的实时内核。RTOS将CPU时间、中断、I/O、定时器等资源都包装起来, 留给用户一个标准的API (Application Program Interface,应用程序接口), 并根据各个任务的优先级,合理地在不同任务之间分配CPU时间。RTOS通常设置于嵌入式系统中实时地完成各种功能,这些嵌入式系统通常 具有实时性很好、系统体积小、资源有限和没有图形界面等特点。典型的RT0S 有Vxworks、 pS0S、 Nucleus、 eCos、 uC/OS-II等。GUI (Graphic User Interface,图形用户接口)系统以图形的方式实现 人机交互,调度机制是GUI系统的核心,管理GUI系统的驱动和各个应用程序, 实现各个应用程序对CPU资源的共享使用。高性能的GUI调度机制不仅占用很少 的CPU资源,而且能够快速响应用户请求。上述现有技术中的GUI系统的缺点为上述GUI系统的调度完全使用内核提 供的线程调度,每个应用程序不管是否需要界面显示都有独立的线程来接收操 作系统的调度。基于底层强大的操作系统做支撑,各个应用程序的设计虽然具 有极大的灵活性,但是,各个应用程序对底层操作系统的依赖太重,通常需要 平台化的操作系统的支持,比如Windows或者Linux操作系统。上述GUI系统的资源开销巨大,不能适应功能明确的小型嵌入式系统的应 用需求, 一般不支持RTOS作为底层的操作系统。另外,对于嵌入式应用也不需 要复杂的GUI系统,过于复杂的GUI事实上会降低用户操作的简便性。发明内容为解决上述中存在的问题与缺陷,本发明提供了一种多任务调度系统。 本发明是通过以下技术方案实现的本发明所涉及的一种多任务调度系统,包括管理模块和应用程序模块, 管理模块,和应用程序模块运行于同一个线程,并在独立线程中管理应用程序 模块中的各个应用程序,以控制应用程序中只有一个应用程序处于应用状态。 应用程序模块,与管理模块运行于同一个线程,并包括多个分别实现不同任务 功能的应用程序。所述多任务调度系统还包括资源库,包括供应用程序模块中各个应用程 序使用的图片资源和/或文字资源;输入法驱动模块,对在UI管理模块、应用 程序模块、资源库中进行文字输入的输入法进行驱动。所述管理模块还包括应用程序维护模块在应用程序模块中创建和删除应 用程序,在任何时刻控制多任务调度系统中最多只能有一个正在运行的应用程 序;线程管理模块在多任务调度系统中创建并管理一个独立线程;应用程序 中断模块将正在运行的应用程序中断,将中断的应用程序的所有相关上下文 信息发送给程序堆栈,程序堆栈将该相关上下文信息进行保存;应用程序恢复 模块当正在运行的应用程序退出后,将最后保存在程序堆栈中的应用程序释 放出来,将释放出来的应用程序恢复为运行状态。所述应用程序模块还包括线程维护模块在正在运行的应用程序中创建 并维护和所述UI管理模块和应用程序模块共同使用的线程不同的另一个线程, 该另一个线程不能控制多任务调度系统的显示输出,当该正在运行的应用程序 退出后,释放所述创建的另一个线程。本发明提供的技术方案的有益效果是本发明通过在整个多任务调度系统中运行一个独立线程,在这个独立线程中按统一的唯一化方式调用各个应用程序模块。从而可以基于简单的RTOS上实 现比较完善的图形化的用户交互系统。


图l是多任务调度系统的实施例的结构示意图; 图2是多任务调度系统的实施例中的管理模块的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施方式作进一步地详细描述本实施例提供了一种多任务调度系统的结构。参见图l,本方法所述多任务调度系统适用于基于RTOS的用户交互系统, 比如GUI系统。以GUI系统为例,本发明所述多任务调度系统的实施例的结构如图1所示,包括如下模块管理模块、应用程序模块、输入法驱动和资源库。各个模块的功能如下-管理模块为UI (User Interface,用户界面)管理模块,其该管理模块的 结构如图2所示。按照统一的唯一化的方式调用应用程序模块中的各个应用程 序,和各个应用程序进行消息交互,管理应用程序模块中的各个应用程序,控 制所述的多个应用程序中最多只能有一个处于运行状态。创建并管理GUI系统 的线程,和管理的各个应用程序运行于同一个线程,该线程可以为独立线程。 带有显示界面。UI管理模块包括线程管理模块、消息管理模块、应用程序创 建模块、应用程序中断模块和应用程序恢复模块。其中,线程管理模块在GUI系统中创建并管理一个独立线程,通过该独 立线程来完成GUI系统中所有的应用程序。本发明所述GUI系统使用独立线程能 保证各个应用程序不会因为同时请求资源而造成资源冲突,用户不能同时执行两个应用程序,但是可以在两个应用程序之间切换。上述独立线程可以为GUI 系统中一个现有的线程。其中,消息管理模块通过使用单一的队列化的消息调用接口,调用应用程序模块中的各个应用程序,和各个应用程序进行消息交互。整个GUI系统的各种事件(包括用户按键、外部中断的处理结果或者命令、各种任务的控制命 令)都转化为消息。消息管理模块处理的所有消息都具有统一的数据结构,该数据结构中包括消息ID和消息参数,通过消息ID可以识别消息,消息参数包括消息相关的各种信息,如果消息相关的各种信息不能使用一个简单的值来表达,该消息参 数就是一个指针,指向具体的消息数据结构。消息管理模块首先将需要下发的消息发送给当前运行的应用程序,该当前 运行的应用程序对接收到的消息如果不处理,则向消息管理模块返回特定值,消息管理模块对该消息做默认处理。比如全局性的摘挂机消息通常都是由UI管理模块中的消息管理模块来默认处理的。本发明所述GUI系统与其他模块的输入接口是唯一的。由于GUI系统的所有 消息的结构是统一的,UI管理模块和各个应用程序的接口也是唯一的。每个应 用程序都使用具有相同参数结构的一个函数作为被调用的接口,消息管理模块 只需要存储当前正在运行的应用程序的该函数的指针,通过指针调用该函数, 向当前正在运行的应用程序发送消息。其中,应用程序维护模块根据接收到的消息在GUI系统中创建新的应用 程序。在任何时刻维持GUI系统中最多只能有一个正在运行的应用程序。上述 消息可以为现有的应用程序发给UI管理模块的特定消息,比如,某个应用程序 为了打开其层次树的下级应用程序而发出的特定消息。上述消息还可以为为了 完成某项任务的系统消息。应用程序维护模块还可以根据需要删除GUI系统中的应用程序。其中,应用程序中断模块根据接收到的某个应用程序发送的消息或系统 消息将正在运行的应用程序中断,释放相关的可能产生冲突的资源,向程序堆 栈发送一个Push消息通知程序堆栈保存相关上下文信息,将中断的应用程序的所有相关上下文信息发送给程序堆栈,程序堆栈将该相关上下文信息进行保 存。然后,应用程序中断模块将函数调用指针指向新的正在运行的应用程序。其中,应用程序恢复模块当正在运行的应用程序退出后,将最后保存在 程序堆栈中的应用程序释放出来,将函数调用指针指向释放出来的应用程序, 将释放出来的应用程序恢复为正在运行状态,向该应用程序发送一条POP消息, 通知它恢复由其自己维护的各种资源。堆栈结构一个重要特点就是后进先出, 即最后保存的内容最先被取出来。利用这种机制就能保证应用程序的菜单式逐 层回推。应用程序模块包括多个分别实现不同任务功能的应用程序,各个应用程 序都使用具有相同参数结构的一个函数作为被调用的接口。 UI管理模块通过调 用该正在运行的应用程序的接口函数来实现对应的任务功能。当该正在运行的 应用程序的相关任务已经完成,退出并释放了其所有占用的资源,然后,将该 应用程序动态申请的内存也全部释放。所述应用程序模块中包括线程维护模 块。线程维护模块如果运行中的应用程序由于某种功能的要求,需要另开一 个线程来执行某项工作时(如完成复杂压縮或者解码工作),则由该运行中的 应用程序通过线程维护模块创建并维护另一个线程,并且这个线程必须不能控 制显示输出。如果由于某种原因(比如来电振铃)中断或者结束该运行中的应 用程序,则在新的应用程序模块运行前,需要释放上述创建的另一个线程。线程维护模块的实现可以直接使用RTOS提供的API。各个应用程序都带有显示界面,可以通过向UI管理模块发送消息来通知UI管理模块中断正在运行的应用程序,或者,创建新的应用程序。输入法驱动位于GUI系统中的底部,用于对在GUI系统中进行文字输入的输入法进行驱动。资源库包括供各个应用程序使用的图片资源和文字资源。在GUI系统的底层是硬件层,设置有用于输入用户控制的键盘和用于显示 的LCD (液晶显示器)屏,在硬件层之上是键盘驱动、LCD驱动和显示驱动。以上述GUI系统为例,本发明所述多任务调度的方法主要包括UI管理模 块控制多个分别实现不同任务功能的应用程序中最多只能有一个处于运行状 态,并且处于运行状态的应用程序运行在同一个线程中,该线程可以为独立线 程。所述方法还包括UI管理模块按照统一的唯一化的方式调用应用程序模块 中的各个应用程序,和各个应用程序进行消息交互;将需要下发的消息发送给 正在运行的应用程序,对应用程序没有处理的'消息进行默认处理。上述统一的唯一化的方式调用方式可以为UI管理模块按照具有相同参数 结构的函数的指针调用所述各个应用程序,和所述各个应用程序交互具有统一 的数据结构的消息。所述方法还包括UI管理模块根据需要将正在运行的应用程序中断,将中 断的应用程序的所有相关上下文信息发送给程序堆栈,程序堆栈将该相关上下 文信息进行保存;当其它正在运行的应用程序退出后,所述管理模块将最后保 存在程序堆栈中的应用程序释放出来,将释放出来的应用程序恢复为运行状 态。在正在运行的应用程序中创建并维护和所述独立线程不同的另一个线程, 该另一个线程不能控制多任务调度系统的显示输出,当该正在运行的应用程序 退出后,释放所述创建的另一个线程。
权利要求
1. 一种多任务调度系统,其特征在于,所述系统包括管理模块和应用程序模块,管理模块,和应用程序模块运行于同一个线程,并在独立线程中管理应用程序模块中的各个应用程序,以控制应用程序中只有一个应用程序处于应用状态;应用程序模块,与管理模块运行于同一个线程,并包括多个分别实现不同任务功能的应用程序。
2、 根据权利要求l所述的多任务调度系统,其特征在于,其中所述多任务 调度系统还包括资源库,包括供应用程序模块中各个应用程序使用的图片资源和/或文字 资源;输入法驱动模块,对在UI管理模块、应用程序模块、资源库中进行文字输 入的输入法进行驱动。
3、 根据权利要求l所述的多任务调度系统,其特征在于,所述管理模块还 包括应用程序维护模块,在应用程序模块中创建和删除应用程序,在任何时刻 控制多任务调度系统中最多只能有一个正在运行的应用程序;线程管理模块,在多任务调度系统中创建并管理一个独立线程;应用程序中断模块,将正在运行的应用程序中断,将中断的应用程序的所 有相关上下文信息发送给程序堆栈,程序堆栈将该相关上下文信息进行保存;应用程序恢复模块,当正在运行的应用程序退出后,将最后保存在程序堆 栈中的应用程序释放出来,将释放出来的应用程序恢复为运行状态。
4、 根据权利要求l所述的多任务调度系统,其特征在于,所述应用程序模 块还包括线程维护模块,在正在运行的应用程序中创建并维护和所述UI管理模块和应用程序模块共同使用的线程不同的另一个线程,该另一个线程不能控制多任 务调度系统的显示输出,当该正在运行的应用程序退出后,释放所述创建的另 一个线程。
全文摘要
本发明公开了一种多任务调度系统,该系统包括管理模块和应用程序模块。这些模块运行于同一个线程。管理模块控制应用程序模块中的各个应用程序,在任意时刻多个应用程序中最多只能有一个处于运行状态;利用本发明所述多任务调度系统,可以实现具有设计简单、占用系统资源小和用户使用方便等特点的用户交互系统。
文档编号G06F9/48GK101266556SQ20081010620
公开日2008年9月17日 申请日期2008年5月9日 优先权日2008年5月9日
发明者任忠宇, 鲁现辉 申请人:北京泰得思达科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1