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