專利名稱:一種多任務(wù)調(diào)度系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種多任務(wù)調(diào)度系統(tǒng)。
技術(shù)背景實(shí)時操作系統(tǒng)是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺,是一個可靠性和可信性很高的實(shí)時內(nèi)核。RTOS將CPU時間、中斷、I/O、定時器等資源都包裝起來, 留給用戶一個標(biāo)準(zhǔn)的API (Application Program Interface,應(yīng)用程序接口), 并根據(jù)各個任務(wù)的優(yōu)先級,合理地在不同任務(wù)之間分配CPU時間。RTOS通常設(shè)置于嵌入式系統(tǒng)中實(shí)時地完成各種功能,這些嵌入式系統(tǒng)通常 具有實(shí)時性很好、系統(tǒng)體積小、資源有限和沒有圖形界面等特點(diǎn)。典型的RT0S 有Vxworks、 pS0S、 Nucleus、 eCos、 uC/OS-II等。GUI (Graphic User Interface,圖形用戶接口)系統(tǒng)以圖形的方式實(shí)現(xiàn) 人機(jī)交互,調(diào)度機(jī)制是GUI系統(tǒng)的核心,管理GUI系統(tǒng)的驅(qū)動和各個應(yīng)用程序, 實(shí)現(xiàn)各個應(yīng)用程序?qū)PU資源的共享使用。高性能的GUI調(diào)度機(jī)制不僅占用很少 的CPU資源,而且能夠快速響應(yīng)用戶請求。上述現(xiàn)有技術(shù)中的GUI系統(tǒng)的缺點(diǎn)為上述GUI系統(tǒng)的調(diào)度完全使用內(nèi)核提 供的線程調(diào)度,每個應(yīng)用程序不管是否需要界面顯示都有獨(dú)立的線程來接收操 作系統(tǒng)的調(diào)度。基于底層強(qiáng)大的操作系統(tǒng)做支撐,各個應(yīng)用程序的設(shè)計雖然具 有極大的靈活性,但是,各個應(yīng)用程序?qū)Φ讓硬僮飨到y(tǒng)的依賴太重,通常需要 平臺化的操作系統(tǒng)的支持,比如Windows或者Linux操作系統(tǒng)。上述GUI系統(tǒng)的資源開銷巨大,不能適應(yīng)功能明確的小型嵌入式系統(tǒng)的應(yīng) 用需求, 一般不支持RTOS作為底層的操作系統(tǒng)。另外,對于嵌入式應(yīng)用也不需 要復(fù)雜的GUI系統(tǒng),過于復(fù)雜的GUI事實(shí)上會降低用戶操作的簡便性。發(fā)明內(nèi)容為解決上述中存在的問題與缺陷,本發(fā)明提供了一種多任務(wù)調(diào)度系統(tǒng)。 本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的本發(fā)明所涉及的一種多任務(wù)調(diào)度系統(tǒng),包括管理模塊和應(yīng)用程序模塊, 管理模塊,和應(yīng)用程序模塊運(yùn)行于同一個線程,并在獨(dú)立線程中管理應(yīng)用程序 模塊中的各個應(yīng)用程序,以控制應(yīng)用程序中只有一個應(yīng)用程序處于應(yīng)用狀態(tài)。 應(yīng)用程序模塊,與管理模塊運(yùn)行于同一個線程,并包括多個分別實(shí)現(xiàn)不同任務(wù) 功能的應(yīng)用程序。所述多任務(wù)調(diào)度系統(tǒng)還包括資源庫,包括供應(yīng)用程序模塊中各個應(yīng)用程 序使用的圖片資源和/或文字資源;輸入法驅(qū)動模塊,對在UI管理模塊、應(yīng)用 程序模塊、資源庫中進(jìn)行文字輸入的輸入法進(jìn)行驅(qū)動。所述管理模塊還包括應(yīng)用程序維護(hù)模塊在應(yīng)用程序模塊中創(chuàng)建和刪除應(yīng) 用程序,在任何時刻控制多任務(wù)調(diào)度系統(tǒng)中最多只能有一個正在運(yùn)行的應(yīng)用程 序;線程管理模塊在多任務(wù)調(diào)度系統(tǒng)中創(chuàng)建并管理一個獨(dú)立線程;應(yīng)用程序 中斷模塊將正在運(yùn)行的應(yīng)用程序中斷,將中斷的應(yīng)用程序的所有相關(guān)上下文 信息發(fā)送給程序堆棧,程序堆棧將該相關(guān)上下文信息進(jìn)行保存;應(yīng)用程序恢復(fù) 模塊當(dāng)正在運(yùn)行的應(yīng)用程序退出后,將最后保存在程序堆棧中的應(yīng)用程序釋 放出來,將釋放出來的應(yīng)用程序恢復(fù)為運(yùn)行狀態(tài)。所述應(yīng)用程序模塊還包括線程維護(hù)模塊在正在運(yùn)行的應(yīng)用程序中創(chuàng)建 并維護(hù)和所述UI管理模塊和應(yīng)用程序模塊共同使用的線程不同的另一個線程, 該另一個線程不能控制多任務(wù)調(diào)度系統(tǒng)的顯示輸出,當(dāng)該正在運(yùn)行的應(yīng)用程序 退出后,釋放所述創(chuàng)建的另一個線程。本發(fā)明提供的技術(shù)方案的有益效果是本發(fā)明通過在整個多任務(wù)調(diào)度系統(tǒng)中運(yùn)行一個獨(dú)立線程,在這個獨(dú)立線程中按統(tǒng)一的唯一化方式調(diào)用各個應(yīng)用程序模塊。從而可以基于簡單的RTOS上實(shí) 現(xiàn)比較完善的圖形化的用戶交互系統(tǒng)。
圖l是多任務(wù)調(diào)度系統(tǒng)的實(shí)施例的結(jié)構(gòu)示意圖; 圖2是多任務(wù)調(diào)度系統(tǒng)的實(shí)施例中的管理模塊的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明 實(shí)施方式作進(jìn)一步地詳細(xì)描述本實(shí)施例提供了一種多任務(wù)調(diào)度系統(tǒng)的結(jié)構(gòu)。參見圖l,本方法所述多任務(wù)調(diào)度系統(tǒng)適用于基于RTOS的用戶交互系統(tǒng), 比如GUI系統(tǒng)。以GUI系統(tǒng)為例,本發(fā)明所述多任務(wù)調(diào)度系統(tǒng)的實(shí)施例的結(jié)構(gòu)如圖1所示,包括如下模塊管理模塊、應(yīng)用程序模塊、輸入法驅(qū)動和資源庫。各個模塊的功能如下-管理模塊為UI (User Interface,用戶界面)管理模塊,其該管理模塊的 結(jié)構(gòu)如圖2所示。按照統(tǒng)一的唯一化的方式調(diào)用應(yīng)用程序模塊中的各個應(yīng)用程 序,和各個應(yīng)用程序進(jìn)行消息交互,管理應(yīng)用程序模塊中的各個應(yīng)用程序,控 制所述的多個應(yīng)用程序中最多只能有一個處于運(yùn)行狀態(tài)。創(chuàng)建并管理GUI系統(tǒng) 的線程,和管理的各個應(yīng)用程序運(yùn)行于同一個線程,該線程可以為獨(dú)立線程。 帶有顯示界面。UI管理模塊包括線程管理模塊、消息管理模塊、應(yīng)用程序創(chuàng) 建模塊、應(yīng)用程序中斷模塊和應(yīng)用程序恢復(fù)模塊。其中,線程管理模塊在GUI系統(tǒng)中創(chuàng)建并管理一個獨(dú)立線程,通過該獨(dú) 立線程來完成GUI系統(tǒng)中所有的應(yīng)用程序。本發(fā)明所述GUI系統(tǒng)使用獨(dú)立線程能 保證各個應(yīng)用程序不會因?yàn)橥瑫r請求資源而造成資源沖突,用戶不能同時執(zhí)行兩個應(yīng)用程序,但是可以在兩個應(yīng)用程序之間切換。上述獨(dú)立線程可以為GUI 系統(tǒng)中一個現(xiàn)有的線程。其中,消息管理模塊通過使用單一的隊列化的消息調(diào)用接口,調(diào)用應(yīng)用程序模塊中的各個應(yīng)用程序,和各個應(yīng)用程序進(jìn)行消息交互。整個GUI系統(tǒng)的各種事件(包括用戶按鍵、外部中斷的處理結(jié)果或者命令、各種任務(wù)的控制命 令)都轉(zhuǎn)化為消息。消息管理模塊處理的所有消息都具有統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)中包括消息ID和消息參數(shù),通過消息ID可以識別消息,消息參數(shù)包括消息相關(guān)的各種信息,如果消息相關(guān)的各種信息不能使用一個簡單的值來表達(dá),該消息參 數(shù)就是一個指針,指向具體的消息數(shù)據(jù)結(jié)構(gòu)。消息管理模塊首先將需要下發(fā)的消息發(fā)送給當(dāng)前運(yùn)行的應(yīng)用程序,該當(dāng)前 運(yùn)行的應(yīng)用程序?qū)邮盏降南⑷绻惶幚恚瑒t向消息管理模塊返回特定值,消息管理模塊對該消息做默認(rèn)處理。比如全局性的摘掛機(jī)消息通常都是由UI管理模塊中的消息管理模塊來默認(rèn)處理的。本發(fā)明所述GUI系統(tǒng)與其他模塊的輸入接口是唯一的。由于GUI系統(tǒng)的所有 消息的結(jié)構(gòu)是統(tǒng)一的,UI管理模塊和各個應(yīng)用程序的接口也是唯一的。每個應(yīng) 用程序都使用具有相同參數(shù)結(jié)構(gòu)的一個函數(shù)作為被調(diào)用的接口,消息管理模塊 只需要存儲當(dāng)前正在運(yùn)行的應(yīng)用程序的該函數(shù)的指針,通過指針調(diào)用該函數(shù), 向當(dāng)前正在運(yùn)行的應(yīng)用程序發(fā)送消息。其中,應(yīng)用程序維護(hù)模塊根據(jù)接收到的消息在GUI系統(tǒng)中創(chuàng)建新的應(yīng)用 程序。在任何時刻維持GUI系統(tǒng)中最多只能有一個正在運(yùn)行的應(yīng)用程序。上述 消息可以為現(xiàn)有的應(yīng)用程序發(fā)給UI管理模塊的特定消息,比如,某個應(yīng)用程序 為了打開其層次樹的下級應(yīng)用程序而發(fā)出的特定消息。上述消息還可以為為了 完成某項任務(wù)的系統(tǒng)消息。應(yīng)用程序維護(hù)模塊還可以根據(jù)需要刪除GUI系統(tǒng)中的應(yīng)用程序。其中,應(yīng)用程序中斷模塊根據(jù)接收到的某個應(yīng)用程序發(fā)送的消息或系統(tǒng) 消息將正在運(yùn)行的應(yīng)用程序中斷,釋放相關(guān)的可能產(chǎn)生沖突的資源,向程序堆 棧發(fā)送一個Push消息通知程序堆棧保存相關(guān)上下文信息,將中斷的應(yīng)用程序的所有相關(guān)上下文信息發(fā)送給程序堆棧,程序堆棧將該相關(guān)上下文信息進(jìn)行保 存。然后,應(yīng)用程序中斷模塊將函數(shù)調(diào)用指針指向新的正在運(yùn)行的應(yīng)用程序。其中,應(yīng)用程序恢復(fù)模塊當(dāng)正在運(yùn)行的應(yīng)用程序退出后,將最后保存在 程序堆棧中的應(yīng)用程序釋放出來,將函數(shù)調(diào)用指針指向釋放出來的應(yīng)用程序, 將釋放出來的應(yīng)用程序恢復(fù)為正在運(yùn)行狀態(tài),向該應(yīng)用程序發(fā)送一條POP消息, 通知它恢復(fù)由其自己維護(hù)的各種資源。堆棧結(jié)構(gòu)一個重要特點(diǎn)就是后進(jìn)先出, 即最后保存的內(nèi)容最先被取出來。利用這種機(jī)制就能保證應(yīng)用程序的菜單式逐 層回推。應(yīng)用程序模塊包括多個分別實(shí)現(xiàn)不同任務(wù)功能的應(yīng)用程序,各個應(yīng)用程 序都使用具有相同參數(shù)結(jié)構(gòu)的一個函數(shù)作為被調(diào)用的接口。 UI管理模塊通過調(diào) 用該正在運(yùn)行的應(yīng)用程序的接口函數(shù)來實(shí)現(xiàn)對應(yīng)的任務(wù)功能。當(dāng)該正在運(yùn)行的 應(yīng)用程序的相關(guān)任務(wù)已經(jīng)完成,退出并釋放了其所有占用的資源,然后,將該 應(yīng)用程序動態(tài)申請的內(nèi)存也全部釋放。所述應(yīng)用程序模塊中包括線程維護(hù)模 塊。線程維護(hù)模塊如果運(yùn)行中的應(yīng)用程序由于某種功能的要求,需要另開一 個線程來執(zhí)行某項工作時(如完成復(fù)雜壓縮或者解碼工作),則由該運(yùn)行中的 應(yīng)用程序通過線程維護(hù)模塊創(chuàng)建并維護(hù)另一個線程,并且這個線程必須不能控 制顯示輸出。如果由于某種原因(比如來電振鈴)中斷或者結(jié)束該運(yùn)行中的應(yīng) 用程序,則在新的應(yīng)用程序模塊運(yùn)行前,需要釋放上述創(chuàng)建的另一個線程。線程維護(hù)模塊的實(shí)現(xiàn)可以直接使用RTOS提供的API。各個應(yīng)用程序都帶有顯示界面,可以通過向UI管理模塊發(fā)送消息來通知UI管理模塊中斷正在運(yùn)行的應(yīng)用程序,或者,創(chuàng)建新的應(yīng)用程序。輸入法驅(qū)動位于GUI系統(tǒng)中的底部,用于對在GUI系統(tǒng)中進(jìn)行文字輸入的輸入法進(jìn)行驅(qū)動。資源庫包括供各個應(yīng)用程序使用的圖片資源和文字資源。在GUI系統(tǒng)的底層是硬件層,設(shè)置有用于輸入用戶控制的鍵盤和用于顯示 的LCD (液晶顯示器)屏,在硬件層之上是鍵盤驅(qū)動、LCD驅(qū)動和顯示驅(qū)動。以上述GUI系統(tǒng)為例,本發(fā)明所述多任務(wù)調(diào)度的方法主要包括UI管理模 塊控制多個分別實(shí)現(xiàn)不同任務(wù)功能的應(yīng)用程序中最多只能有一個處于運(yùn)行狀 態(tài),并且處于運(yùn)行狀態(tài)的應(yīng)用程序運(yùn)行在同一個線程中,該線程可以為獨(dú)立線 程。所述方法還包括UI管理模塊按照統(tǒng)一的唯一化的方式調(diào)用應(yīng)用程序模塊 中的各個應(yīng)用程序,和各個應(yīng)用程序進(jìn)行消息交互;將需要下發(fā)的消息發(fā)送給 正在運(yùn)行的應(yīng)用程序,對應(yīng)用程序沒有處理的'消息進(jìn)行默認(rèn)處理。上述統(tǒng)一的唯一化的方式調(diào)用方式可以為UI管理模塊按照具有相同參數(shù) 結(jié)構(gòu)的函數(shù)的指針調(diào)用所述各個應(yīng)用程序,和所述各個應(yīng)用程序交互具有統(tǒng)一 的數(shù)據(jù)結(jié)構(gòu)的消息。所述方法還包括UI管理模塊根據(jù)需要將正在運(yùn)行的應(yīng)用程序中斷,將中 斷的應(yīng)用程序的所有相關(guān)上下文信息發(fā)送給程序堆棧,程序堆棧將該相關(guān)上下 文信息進(jìn)行保存;當(dāng)其它正在運(yùn)行的應(yīng)用程序退出后,所述管理模塊將最后保 存在程序堆棧中的應(yīng)用程序釋放出來,將釋放出來的應(yīng)用程序恢復(fù)為運(yùn)行狀 態(tài)。在正在運(yùn)行的應(yīng)用程序中創(chuàng)建并維護(hù)和所述獨(dú)立線程不同的另一個線程, 該另一個線程不能控制多任務(wù)調(diào)度系統(tǒng)的顯示輸出,當(dāng)該正在運(yùn)行的應(yīng)用程序 退出后,釋放所述創(chuàng)建的另一個線程。
權(quán)利要求
1. 一種多任務(wù)調(diào)度系統(tǒng),其特征在于,所述系統(tǒng)包括管理模塊和應(yīng)用程序模塊,管理模塊,和應(yīng)用程序模塊運(yùn)行于同一個線程,并在獨(dú)立線程中管理應(yīng)用程序模塊中的各個應(yīng)用程序,以控制應(yīng)用程序中只有一個應(yīng)用程序處于應(yīng)用狀態(tài);應(yīng)用程序模塊,與管理模塊運(yùn)行于同一個線程,并包括多個分別實(shí)現(xiàn)不同任務(wù)功能的應(yīng)用程序。
2、 根據(jù)權(quán)利要求l所述的多任務(wù)調(diào)度系統(tǒng),其特征在于,其中所述多任務(wù) 調(diào)度系統(tǒng)還包括資源庫,包括供應(yīng)用程序模塊中各個應(yīng)用程序使用的圖片資源和/或文字 資源;輸入法驅(qū)動模塊,對在UI管理模塊、應(yīng)用程序模塊、資源庫中進(jìn)行文字輸 入的輸入法進(jìn)行驅(qū)動。
3、 根據(jù)權(quán)利要求l所述的多任務(wù)調(diào)度系統(tǒng),其特征在于,所述管理模塊還 包括應(yīng)用程序維護(hù)模塊,在應(yīng)用程序模塊中創(chuàng)建和刪除應(yīng)用程序,在任何時刻 控制多任務(wù)調(diào)度系統(tǒng)中最多只能有一個正在運(yùn)行的應(yīng)用程序;線程管理模塊,在多任務(wù)調(diào)度系統(tǒng)中創(chuàng)建并管理一個獨(dú)立線程;應(yīng)用程序中斷模塊,將正在運(yùn)行的應(yīng)用程序中斷,將中斷的應(yīng)用程序的所 有相關(guān)上下文信息發(fā)送給程序堆棧,程序堆棧將該相關(guān)上下文信息進(jìn)行保存;應(yīng)用程序恢復(fù)模塊,當(dāng)正在運(yùn)行的應(yīng)用程序退出后,將最后保存在程序堆 棧中的應(yīng)用程序釋放出來,將釋放出來的應(yīng)用程序恢復(fù)為運(yùn)行狀態(tài)。
4、 根據(jù)權(quán)利要求l所述的多任務(wù)調(diào)度系統(tǒng),其特征在于,所述應(yīng)用程序模 塊還包括線程維護(hù)模塊,在正在運(yùn)行的應(yīng)用程序中創(chuàng)建并維護(hù)和所述UI管理模塊和應(yīng)用程序模塊共同使用的線程不同的另一個線程,該另一個線程不能控制多任 務(wù)調(diào)度系統(tǒng)的顯示輸出,當(dāng)該正在運(yùn)行的應(yīng)用程序退出后,釋放所述創(chuàng)建的另 一個線程。
全文摘要
本發(fā)明公開了一種多任務(wù)調(diào)度系統(tǒng),該系統(tǒng)包括管理模塊和應(yīng)用程序模塊。這些模塊運(yùn)行于同一個線程。管理模塊控制應(yīng)用程序模塊中的各個應(yīng)用程序,在任意時刻多個應(yīng)用程序中最多只能有一個處于運(yùn)行狀態(tài);利用本發(fā)明所述多任務(wù)調(diào)度系統(tǒng),可以實(shí)現(xiàn)具有設(shè)計簡單、占用系統(tǒng)資源小和用戶使用方便等特點(diǎn)的用戶交互系統(tǒng)。
文檔編號G06F9/48GK101266556SQ20081010620
公開日2008年9月17日 申請日期2008年5月9日 優(yōu)先權(quán)日2008年5月9日
發(fā)明者任忠宇, 魯現(xiàn)輝 申請人:北京泰得思達(dá)科技發(fā)展有限公司