專利名稱::嵌入式系統(tǒng)的制作方法
技術領域:
:本發(fā)明涉及一種按照權利要求1前序部分的系統(tǒng)。本發(fā)明進一步涉及一種按照權利要求13前序部分的方法和一種按照權利要求24前序部分的通信設備。在電子產業(yè)中,已經設計了許多有某種微處理器或相應的處理器作為基本功能部件的設備。這種處理器例如可以與微控制器定位在一起,其中它還有一些外設被設置在同一個微芯片中。這些設備也稱嵌入式系統(tǒng),其例子有移動站-如蜂窩網絡移動站CMT(蜂窩式移動電話)、PC(個人電腦)、PDA(個人數字助理)等等。要控制這種設備的操作,經常要設計設備專用的操作系統(tǒng),其基本任務是看管系統(tǒng)的定時、資源控制、不同程序塊之間消息的處理和傳輸。這種操作系統(tǒng)通常被稱為實時操作系統(tǒng)(RTOS)。這種實時操作系統(tǒng)的典型特征是,例如事實上它能被用于預測對諸如按鍵的外部中斷的響應時間或定時、存儲器資源的最小化使用,此外,實時操作系統(tǒng)對控制任務非常有效。此外,在實時操作系統(tǒng)中-例如在便攜式設備中為了延長電池的使用時間-通常設計了一些用于控制負載量的屬性。這種實時操作系統(tǒng)的大小,一般占用在10至100kB的程序代碼和信息存儲器(隨機存取存儲器RAM)。非實時操作系統(tǒng)與實時操作系統(tǒng)不同,例如運行不同操作的響應時間比實時操作系統(tǒng)中的長;另一方面,在非實時操作系統(tǒng)中也不能對響應時間進行預測。在多任務非實時操作系統(tǒng)中,每個執(zhí)行過程都延緩相同或更低優(yōu)先級的過程的執(zhí)行,其中也可能延長響應時間。此外,非實時操作系統(tǒng)沒有在操作系統(tǒng)的內核中確定的響應時間,這就對預測這種操作系統(tǒng)的執(zhí)行速度造成了困難。移動站的存儲器容量和其它系統(tǒng)資源有限。此外,在移動站中,經常不存在對外設-諸如可寫的海量存儲器(硬盤)或諸如快閃存儲器的內存卡-的系統(tǒng)支持。在移動站中,一般不可能以動態(tài)方式將程序裝入系統(tǒng)-就是說,移動站的軟件是在制造階段裝入移動站的,也不能在有些情況下-例如由于維護-對程序進行更新。此外,許多移動站不含存儲器管理單元(MMU),因為移動站軟件通常都是由移動站制造商制造和測試的。由于這些原因,特定于設備的實時操作系統(tǒng)也不包含對上述屬性的支持。制造個人電腦和個人數字助理的公司已經開發(fā)了有對上述屬性支持的操作系統(tǒng),但是這些操作系統(tǒng)不是照這樣實時地運行的,這樣它們就不能預測運行某些操作的最大響應時間。這種操作系統(tǒng)的大小通常在200kB到數MB,這樣,要讓它們適應諸如移動站的便攜式機器,未必容易。實時操作系統(tǒng),特別是為數據處理設備開發(fā)的操作系統(tǒng),有部分對立的要求,其中難于完成一個有可用于該操作系統(tǒng)的相同編程界面、同時具有所有必要屬性-諸如較少的存儲器占用和實時特性-的操作系統(tǒng)。近來,也開發(fā)了有數據處理器與電信設備組合的電子設備。這種設備在本說明書中稱為通信設備。這種設備的一個例子是諾基亞9000通信器(Nokia9000Communicator),它是一個體積較小的便攜式設備,兼有數據處理操作和移動站操作二者的作用。然而,這種組合設備的一個目的是盡可能地使用以前開發(fā)的產品,其中一個目的是例如保持用于這種新設備中的不同設備的軟件的兼容。實現這種目的的方法是,為其中的數據處理部分提供其自己的處理器和其自己的操作系統(tǒng),并且移動站實施例也同樣有它們自己的處理器和它們自己的操作系統(tǒng)。這樣,就有可能盡可能有效地采用以前的產品開發(fā)的結果,加速設備的推出。然而,分立的處理器通常消耗比單一處理器解決方案所可能達到的更多的電量,其中這種便攜式設備需要更高效的電池,否則其執(zhí)行時間就不能保持得如分立的設備可能達到的那么長。現有技術水平的解決方案中實現在單一處理器運行兩個操作系統(tǒng)的方法是,通過采用兩個操作系統(tǒng)的特點來實現各操作系統(tǒng)。這種類型的組合存在的問題是,例如當各操作系統(tǒng)有非常不同的屬性時,不可能執(zhí)行要被組合的操作系統(tǒng)的所有屬性。這導致的不利情況是,例如為這些操作系統(tǒng)開發(fā)的所有應用程序都不能使用、或者使用時需要改動應用程序。此外,當開發(fā)了新的應用時,必須對根據一個操作系統(tǒng)編制的應用程序按照另一個操作系統(tǒng)作改動。這就加大了所需的工作量和出錯的概率。此外,專利US-5,278,973披露了一種其中能在一個處理器中使用幾個操作系統(tǒng)的數據處理器。然而,每次只能使用這些操作系統(tǒng)中的其中之一。如果要變換操作系統(tǒng),則要求必須取消使用中的操作系統(tǒng)的執(zhí)行,并且要重新啟動數據處理器。本發(fā)明的一個目的是實現一種嵌入式系統(tǒng),其中至少兩個操作系統(tǒng)能被一個處理器之類執(zhí)行。本發(fā)明根據的思想是,建立至少一個至少部分公用的中斷處理程序,用于在各線程上檢查每個中斷影響哪個操作系統(tǒng),其中要將中斷數據傳送給各操作系統(tǒng)。按照本發(fā)明的嵌入式系統(tǒng)的特征將在權利要求1的特征部分中所介紹的內容中表示。按照本發(fā)明的方法的特征將在權利要求13的特征部分中所介紹的內容中表示。按照本發(fā)明的通信設備的特征將在權利要求24的說明部分中所介紹的內容中表示。本發(fā)明比現有技術水平的解決方案有顯著的優(yōu)點。由一個處理器耗費的負載量通常比假若將分立的處理器用于每個操作系統(tǒng)時的低。此外,因為能使用更多的諸如存儲器的公用部件,所以減少了對空間的需求。按照本發(fā)明的嵌入式系統(tǒng),使得已開發(fā)的應用程序無需作修改就有可能在其中使用,并且無論為哪個操作系統(tǒng)開發(fā)新應用程序,都無需首先對根據一個操作系統(tǒng)開發(fā)的應用程序按照另一個操作系統(tǒng)進行改變。與將兩個操作系統(tǒng)組合起來使用任何一個操作系統(tǒng)的功能的解決方案以及每個操作系統(tǒng)有供自己支配的處理器的解決方案相比,本發(fā)明進一步減少了工作量和可能的出錯量。此外,本發(fā)明的解決方案不減少操作系統(tǒng)的任何功能,它們仍然能在一定的應用或應用領域中-例如為了移動站功能的實現-被優(yōu)化。此外,由于耗電量的減少,在便攜式設備中,一次充電能維持更長的操作時間。下面將結合各附圖來更詳細地說明本發(fā)明。附圖簡介圖1表示一個操作系統(tǒng)的層次結構;圖2表示過程的一個狀態(tài)模型;圖3表示一例過程元素(processelement);圖4a表示按照本發(fā)明的有利實施例的嵌入式系統(tǒng)的簡化框圖;圖4b表示一個處理器的簡化框圖;圖5表示一個與本發(fā)明的嵌入式系統(tǒng)一起使用的操作系統(tǒng)的簡化示意圖;圖6a至6i表示本發(fā)明最佳實施例的嵌入式系統(tǒng)中處理中斷的不同情形;圖7a和7b表示消息傳輸中的機構的簡化示意圖;圖8表示本發(fā)明最佳實施例的嵌入式系統(tǒng)中處理中斷的一個情形中的簡化有向圖;圖9表示本發(fā)明最佳實施例的嵌入式系統(tǒng)中一種交叉調度選擇的定時圖;圖10表示本發(fā)明最佳實施例的嵌入式系統(tǒng)中一種交叉調度選擇的功能圖。為了便于更好地理解本發(fā)明,首先結合圖1至3來說明現有技術水平的處理器和操作系統(tǒng)的各種解決方案。處理器可按指令集劃分成兩類復雜指令集計算機(CISC)和精簡指令集計算機(RISC)。在精簡指令集計算機中,去掉了一部分不常用的指令,例如,尋址方式(addressingforms)的數量可比復雜指令集計算機中的少。然而,在普通應用程序中,用非常少量的指令就能實現應用程序,其中一般就有可能用精簡指令集計算機來實現必要的計算機程序。精簡指令集計算機與復雜指令集計算機相比的優(yōu)點是,例如能提高執(zhí)行速度,另一方面,程序代碼所需的存儲空間也比使用復雜指令集計算機時的小。特別是,當程序存儲器的容量減少時,對設備的負載量的需求也減少,另一方面,也能減少設備的體積。在實際的實施例中經常使用一個微控制器,它包含實在的處理器和與處理器相連的輔助部件,諸如隨機存取存儲器(RAM)、只讀存儲器(ROM)、輸入/輸出設備(I/O)、定時器、模-數轉換器(A/D轉換器)、數-模轉換器(D/A轉換器)等等。所以,可以將這些不同單元之間的接口線路做得盡可能地小,在這點上就能進一步減小設備的尺寸,另一方面,還能加快這些不同單元之間信號傳輸的速度。微控制器制造商生成若干不同類型的微控制器,它們可能有相同的處理器,但是外圍部件的數量和類型會不同,這樣,如果需要的話,就能為每種應用配備最適合的微控制器。在本說明書的前文介紹過,要為這種采用微控制器或相應處理器的設備開發(fā)操作系統(tǒng),作為所謂的基本軟件來運行。這個操作系統(tǒng)負責控制設備的不同單元、數據的讀入等等,并使應用程序能在這種設備中-諸如個人電腦中使用。當計算機被開啟時,操作系統(tǒng)被裝入程序存儲器中,執(zhí)行某些初始化操作。隨后用戶就能啟動所希望的應用程序,其中操作系統(tǒng)接收用戶給出的命令,檢索應用程序,將其加載到程序存儲器中,然后啟動應用程序。在多重處理系統(tǒng)中,有可能表面上象是同時地使用若干個這種應用程序,其中操作系統(tǒng)負責提供執(zhí)行時間和這些不同應用程序之間的調度。此外,操作系統(tǒng)的任務是在這些不同應用程序之間傳輸信號,如果需要的話,還要在應用程序與外圍設備之間安排信令(signalling)。操作系統(tǒng)能控制進程-也即所謂的線程-的執(zhí)行。一個線程可包含與一個或幾個進程的執(zhí)行有關的函數,另一方面,一個進程也能被劃分成一個或多個線程。線程的執(zhí)行是由操作系統(tǒng)調度程序控制的。換言之,線程是由操作系統(tǒng)給予進程的一種支持。在已知操作系統(tǒng)中,通常能發(fā)現下述屬性命令解釋器,它解釋用戶給出的命令-例如讀取命令中的應用程序的名稱并識別用戶可能給出的要由應用程序傳輸的參數;調度程序,它照管對不同進程的資源的分配、照管中斷請求服務-其任務是對中斷作出反應并執(zhí)行中斷所要求的措施,例如向操作系統(tǒng)傳輸中斷請求。此外,操作系統(tǒng)還有各種功能塊,例如用于讀鍵盤、寫顯示器、及控制可能的外部接口等等。資源例如包括主存儲器、外設和處理器時間的使用。操作系統(tǒng)例如為每個待執(zhí)行的進程保留一片存儲區(qū),進程能在其中讀數據,進程也在其中讀數據。如果有進程試圖在為該進程保留的這個存儲器區(qū)以外寫數據,存儲器控制單元一般阻止這種寫操作并且通常會停止這種進程的運行。許多處理器仍然使用不同的方式,諸如用戶方式和特權方式(也叫監(jiān)管方式或內核方式)。由用戶啟動的應用程序和其它進程一般被設置成按照用戶方式運行。相反,操作系統(tǒng)及其啟動的部分進程通常以特權方式運行。用戶方式的操作可能有更多的限制,例如處理器的一部分命令只以特權方式運行,在用戶方式中則不能使用。在有些操作系統(tǒng)中,特權操作方式有若干級,例如三級。該操作方式的內核在特權方式的第一級中實現,具有的權力也最大。第二級例如有控制例程等等(可執(zhí)行程序)。第三級例如有命令解釋器。處理器2一般包含使用中斷的可能性。來自處理器2以外的中斷請求能在一個或幾個中斷服務線nIRQ、nFIQ(圖4b)上傳輸,其方式的變化(例如由邏輯方式1變?yōu)檫壿嫹绞?)能引起一個對處理器2的中斷。對處理器2的中斷請求,指令處理器2去轉而運行相應的中斷服務例程,當沒有更高優(yōu)先級的中斷請求在等待時,這種運行幾乎沒有延遲。在中斷服務例程中,至少要執(zhí)行一部分中斷處理操作。這些處理操作例如與相應的應用程序及中斷的原因有關。由于運行中斷服務例程會降低運行進程和操作系統(tǒng)的速度,所以一尤其在實時操作系統(tǒng)中,要使中斷服務例程長度盡可能短,速度盡可能快。所以,在中斷服務例程中可能要為操作系統(tǒng)設置例如一個狀態(tài)變量-狀態(tài)變量通知中斷,通知有一部分中斷處理措施正在等待執(zhí)行的信息,其中操作系統(tǒng)例如按照其調度程序控制這些操作的執(zhí)行。對中斷服務例程的傳輸也可能受各種中斷封鎖和屏蔽的影響。當中斷被禁止時,中斷請求就被擱置,等待中斷封鎖的取消,之后,各中斷請求按它們的優(yōu)先級被有利地服務。在多數處理器2也能有選擇地阻止中斷,其中每個中斷在中斷屏蔽寄存器之類中配備以選通或禁止狀態(tài)。中斷請求例如是根據外部設備給出的信號而生成的,例如,由通過串行總線接收的信息引起的串行總線中斷請求,由按壓鍵盤的按鍵引起的中斷請求,由定時器引起的中斷請求或者在某種執(zhí)行進程中形成的所謂程序中斷請求。能確定中斷的優(yōu)先級,其中較低優(yōu)先級的中斷服務例程的執(zhí)行能被較高優(yōu)先級的中斷服務例程中斷。相反,較高優(yōu)先級的中斷服務例程一般不會被較低優(yōu)先級的中斷服務例程中斷。為了實現對操作系統(tǒng)的基本定時,通常使用一個定時器,定時器以一定的間隔向處理器生成中斷請求,處理器轉而執(zhí)行定時器的中斷服務例程。所以要給定時器的中斷服務以盡可能高的優(yōu)先級。相反,例如顯示的刷新通常則被提供以較低的優(yōu)先級。專利US-5,515,538描述了一種在數據處理器的多重處理操作系統(tǒng)中處理中斷的方法。在該方法中,中斷處理程序被安排成形成其自己的線程,在中斷的情況下執(zhí)行被引導到該線程。然而,該公開說明書中介紹的該方法只是為有一個操作系統(tǒng)的裝置考慮的-該裝置能同時包含幾個用于運行這個操作系統(tǒng)的進程的處理器。下面將簡要地說明一種多重操作系統(tǒng)的操作。操作系統(tǒng)的調度程序每隔一定時間就檢查此時應執(zhí)行哪些應用程序,即進程。調度程序例如通過定時器中斷來啟動每個應用程序可進一步包含一個或幾個線程,其中每個線程在不同的時間在某單一處理器系統(tǒng)中運行。一個線程例如正在讀某外設接口(諸如鍵盤)上的數據,第二個進程可能正在處理該數據,第三個進程例如可能正在某外設(例如顯示器)上寫該處理過的數據。當這個應用程序被啟動時,調度程序已經定義了每個線程每次的執(zhí)行時間,以及運行這些進程的重復間隔時間。這樣,調度程序啟動線程的執(zhí)行,執(zhí)行時間過后,將線程轉為等待,需要的話,將該線程的數據存儲到存儲裝置中,然后啟動執(zhí)行新的線程。在調度程序執(zhí)行了每個線程之后,調度程序就開始新一輪的執(zhí)行,或者,如果達到了沒有線程的間隔,就執(zhí)行一個所謂的空閑線程。然而,在上述線程的執(zhí)行期間,可能會發(fā)生中斷請求,此時,操作系統(tǒng)可根據這些中斷請求的優(yōu)先級轉而去執(zhí)行中斷服務例程,或者,調度程序為進行中斷服務的確定一個適當時間,然后繼續(xù)執(zhí)行被中斷的線程。例如,在一個由鍵盤接口實現的中斷情形中,鍵盤中斷程序讀取被按鍵的代碼并將其存儲入臨時存儲單元中。中斷服務例程結束之后,如果確定該鍵盤中斷的優(yōu)先級不超過被中斷程序線程的優(yōu)先級,操作系統(tǒng)的調度程序就為按鍵的檢查程序確定一個執(zhí)行時間,然后返回到被中斷的程序線程。附圖1表示一個操作系統(tǒng)的層次結構的例子。操作系統(tǒng)的最低層是內核,緊接的一層包含有關存儲器控制的部分,第三層包含文件系統(tǒng)部分。位于這三層之上的例如是命令解釋器、進程(未予示出)、接口程序、調度程序函數等等。下面來具體說明一個操作系統(tǒng)的內核的結構。內核的操作的主要部分是中斷處理、進程的控制和外圍設備的控制。中斷處理包括存儲被中斷程序的數據和將執(zhí)行控制到正確的中斷服務例程。進程的控制照管例如進程的創(chuàng)建、確定執(zhí)行時間(調度)、結束進程的運行,定時等等。外圍設備的控制功能例如包括啟動數據傳輸處理與每個外圍設備有關的一個或多個中斷。在操作系統(tǒng)看來,進程總是處于三種狀態(tài)之一中就緒狀態(tài)、運行狀態(tài)或等待狀態(tài)。附圖2中表示了這種狀態(tài)劃分。運行狀態(tài)包含此時在執(zhí)行的進程,在這個狀態(tài)中,含有一個處理器的系統(tǒng)一次最多只有一個進程。那些等待在運行狀態(tài)中被執(zhí)行的進程處于就緒狀態(tài)。調度程序的任務是選擇就緒狀態(tài)的一個進程去在運行狀態(tài)中執(zhí)行。等待狀態(tài)包含的那些正在等待某種操作(諸如按鍵、某種資源的重新分配等等)的進程。調度程序將優(yōu)先級最高的進程從就緒狀態(tài)轉變?yōu)檫\行狀態(tài)。在運行狀態(tài)中,進程通常是通過其自己的請求-例如請求其實現包括等待的某種操作系統(tǒng)服務-而轉移到等待狀態(tài)的。當這種等待結束時,發(fā)生從等待狀態(tài)到就緒狀態(tài)的轉移。在調度程序改變其它某個為結束中斷處理而要執(zhí)行的進程時,該進程可從運行狀態(tài)轉變回就緒狀態(tài)。內核的實現一般要使用多個動態(tài)信息結構-通常是雙向鏈表,其元素是從位于操作系統(tǒng)的區(qū)域中的自由存儲空間分配的。例如,最好將每個進程的數據保存在進程控制塊(PCB)中。進程元素已經被收集在進程表上,進程表的大小設定了系統(tǒng)中進程數量的上限。附圖3中表示的本例中,例如在基本元素中包含下列信息-進程狀態(tài)等待、運行準備就緒或運行;-進程的名稱;-進程的優(yōu)先級;-被中斷進程的信息(環(huán)境)的存儲(堆棧)的狀態(tài);-被分配資源的數據存儲器、設備、打開文件等等;-與跟蹤進程分配相關的字段;-與授權相關的字段。應當指出,這只作為進程元素的實現的一個例子,在實際的實施例中,這些信息可以有很大程度的變化,進程元素中的數據可以有很大的不同。進程符號是進程的名稱,例如序列號。操作系統(tǒng)根據這個進程的名稱來區(qū)分不同的進程。如果進程含有一個以上線程,則進程符號或進程元素的其它字段中會包含關于線程的這個號的信息。為了通知進程的狀態(tài),使用一個狀態(tài)字段。這樣,操作系統(tǒng)就在進程的狀態(tài)改變時該變這個狀態(tài)字段的值。調度程序用優(yōu)先級字段的值來確定進程的執(zhí)行順序,其中例如該字段所含的數字值越大則該進程的優(yōu)先級就越高。這樣,調度程序通過比較處于等待狀態(tài)的各進程的優(yōu)先級字段的值,選擇優(yōu)先級值最大的進程作為下一個要執(zhí)行的進程。下面說明新進程的創(chuàng)建。在本例中,進程被存儲成設備的存儲裝置(例如可寫的海量存儲器)中的一個文件。這個程序是按文件名來識別的。操作系統(tǒng)的內核中包含一個啟動進程的服務例程,作為參數向這個服務例程給出的名稱最好是這個文件的名稱。該啟動服務例程在進程表中為這個進程建立一個進程元素并向該進程分配一片主存區(qū)。將這個程序文件讀入為其保留的存儲區(qū),將進程元素的各字段初始化以適當的值。之后,進程就被建立,等待執(zhí)行。用于進程的進程符號例如可以是以后自由進程符號。進程的狀態(tài)最好被設置為就緒值。操作系統(tǒng)的調度程序控制這些進程按照其調度程序執(zhí)行。在進程按線程執(zhí)行的操作系統(tǒng)中,有可能將上述的進程創(chuàng)建(過程)分別改編成啟動服務例程由進程建立一個或幾個線程并在進程表上為各線程建立進程元素。此外,操作系統(tǒng)還使用一種用來控制外圍設備的基本功能,即所謂的設備驅動程序。設備驅動程序包含用于控制諸如顯示器、鍵盤、編-解碼器(codec)之類的設備的例程和信息結構。所需的例程例如是,設備的初始化操作,讀/寫、控制例程-諸如設置終端的屬性、以及處理與設備有關的中斷的例程。與設備有關的變量和信息結構可以在例如所謂的設備描述符上收集。這類的信息例如可以是下列的-工作隊列,向設備排隊的傳輸請求的參數塊在其中鏈接。如果同時的值和寫是可能的,則有兩個工作隊列。參數塊包含傳輸請求的參數例如與數據緩沖器的位置有關的信息、要傳輸的塊的數量,等等;-設備驅動程序例程的地址;-傳輸控制中所要求的設備的變量和模式數據;-特定于設備的參數。在有些系統(tǒng)中,設備驅動程序是操作系統(tǒng)的進程。這些進程在一種不停的循環(huán)中運行,在這種循環(huán)中,它們首先等待傳輸請求消息。接到這種消息后,設備驅動程序進程啟動傳輸并等待中斷消息。操作系統(tǒng)的中斷處理程序然后照管中斷消息向設備驅動程序進程的傳輸。在實際的設備中,設備驅動程序進程通常有較高的優(yōu)先級,操作系統(tǒng)的內核實時地運行。當從可寫的海量存儲器讀數據時,讀操作按例如以下方式運行。首先從設備表搜索各設備描述符的地址。然后,從設備描述符提取讀例程的地址,該地址被請求。讀例程由傳輸請求的參數建立參數塊。如果傳輸目前是通過該設備發(fā)生的,即該設備被另一個進程占用,該參數塊就被鏈接在工作隊列的最后,在隊列中等待。如果該設備空閑,其中工作隊列是空的,該參數塊就被鏈接在工作隊列的首位。隨后,將塊的數量變成片表面、磁道和扇區(qū)的數量,然后例如通過修改設備寄存器來啟動傳輸。此后,等待傳輸的結束。傳輸結束之后,發(fā)生設備中斷。操作系統(tǒng)的中斷處理程序按照設備號從設備表中搜索設備描述符的地址,并從其中進一步搜索中斷處理例程的地址,然后轉而去執(zhí)行中斷處理程序的程序代碼。中斷處理程序最好檢查核實沒有錯誤發(fā)生。在成功地結束傳輸后,將該參數塊脫離與工作隊列的鏈接,喚醒一直在等待傳輸的進程。如果工作隊列中存在排隊的傳輸請求,則下一個傳輸操作幾乎沒有延遲地就被啟動。根據具體類型的外圍設備,具體操作在某種程度上會與上述說明的有所不同。就打印設備(諸如顯示器和打印機)來說,用含有待打印字符的隊列就能替代工作隊列。許多操作系統(tǒng)都使用報文傳輸機構,各進程通過它們就能互相傳輸報文。當使用報文隊列時,進程涉及到一個或多個報文隊列,向該進程傳輸的報文可以寫入其中。進程之間的通信通常涉及緩沖技術,其中報文的發(fā)送方不必等待接收方收到報文。這樣,在報文的寫階段就建立通知有報文正在等待進程的信息(狀態(tài)變量),其中進程在適當階段讀報文。按照本發(fā)明最佳實施例的嵌入式系統(tǒng)中,即在(圖4a的)通信設備1中,使用兩個操作系統(tǒng)。第一個操作系統(tǒng)在本說明書中標注為OS_A,主要用于實現移動站功能;第二個操作系統(tǒng)在本說明書中標注為OS_B,主要用來實現數據處理功能。數據處理功能主要指個人電腦中已知的功能等,例如文件的讀取、可寫式海量存儲器的寫、數據的打印、執(zhí)行應用程序-諸如所謂的組織功能(筆記本、通訊數據的保存等等)等。由于共同使用一個處理器2與通信設備1是有益的,所以有必要能將不同操作設備OS_A、OS_B的這些功能結合起來,使得兩個操作系統(tǒng)OS_A、OS_B的特點能同時保留。此外,一個標準是需要時各功能的實時性。下面舉例來說明這些不同的操作系統(tǒng)OS_A、OS_B是如何能與同一個處理器結合的。圖5表示第二個操作系統(tǒng)OS_B的體系結構的一個例子。每個方框表示某個進程、線程、連接接口等。各方框進一步按該方框中是用用戶方式USER還是用特權方式SVC的信息而劃分。其進一步分隔出來的部分是方框501表示的各中斷方式,各中斷方式在圖6中解釋。各中斷方式使用快速中斷方式FIQ、正常中斷方式IRQ或軟件中斷方式SWI。第二個操作系統(tǒng)OS_B的內核(方框502)被設置成以特權方式SVC(監(jiān)管方式)運行。相反,第二個操作系統(tǒng)的調度程序SCH_B(方框503)、連接接口(方框504)、(諸如數據處理器的日歷應用程序之類的)用戶進程的各線程(506、507和508)、以及設備驅動程序的連接接口(方框505),被設置成以用戶方式USER運行,其中它們不能使用例如操作系統(tǒng)的堆棧(未予示出)或其它關鍵的存儲器部件。特權方式進一步包含設備驅動程序(方框509)、空閑線程(510)以及所謂的可能的超級線程(方框511)??臻e線程510是操作系統(tǒng)在沒有其它進程被執(zhí)行時執(zhí)行的某種等待進程。超級線程511在本說明書中指的是響應時間與正常線程506、507和508的響應時間相比非常短的線程。超級線程511的響應時間可能是例如數百微秒,而正常線程506、507和508的響應時間例如是數十毫秒。本發(fā)明也能被改造成與沒有超級線程511的操作系統(tǒng)共同使用。操作系統(tǒng)的內核502具有最高優(yōu)先級。由于上述的響應時間要求,超級線程511具有比正常線程506、507、508的更高的優(yōu)先級。這里,響應時間指的是從事件引起的中斷請求到達到線程被啟動所經歷的時間。這個響應時間是個期望值,但實際上正常操作中的響應時間小于-最多等于-這個期望值。在超負荷的情形中,響應時間有時會期望值。響應時間也包含中斷服務例程所經歷的時間。現實中的目標是將中斷服務例程設計的盡可能短,這樣它們執(zhí)行起來就更快。按照本發(fā)明最佳實施例的一個嵌入式系統(tǒng)在附圖4a中由通信設備1表示。它包含例如處理器2,處理器2例如是個微處理器或微控制器的一部分,其中圖4a中框圖的至少一部分方框可以由微控制器的功能塊構成。除了處理器2,這個實施例中還通過所謂的專用集成電路3(ASIC)來實現一部分控制功能。處理器2與專用集成電路3之間可以有單獨的數據傳輸總線4,其中數據傳輸速度可以提高,另一方面,第二個數據傳輸總線5沒有負載。為了獲得移動站功能,該通信設備配備有發(fā)送器/接收器單元6、發(fā)送/接收天線ANT、數字信號處理單元(DSP)、用于聲音信號的編碼/解碼的編碼解碼器8、用于使用移動站功能的第一鍵盤9以及用于向用戶顯示信息的第一顯示器10。此外,通信設備1還包含音頻部件11,在音頻部件中,對麥克風12產生的模擬信號進行必要的模-數轉換,對發(fā)往揚聲器13的信號進行必要的數-摸轉換。為了有數據處理的性能,通信設備1配備有第二鍵盤14、第二顯示器15和接口部件16,接口部件有例如將打印機與通信設備連接到一起的裝置。鍵盤9、14和顯示器10、15普遍使用的共同名稱是用戶接口(UI),通過用戶接口,用戶與通信設備1之間至少能進行部分通信。在有些應用中,用戶接口也可包含音頻裝置,諸如麥克風12和揚聲器13。圖1的通信設備1表示了兩組用戶接口UI1、UI2,第一用戶接口UI1包含第一鍵盤9和第一顯示器10,第二用戶接口UI2包含第二鍵盤14和第二顯示器15。第一用戶接口UI1主要用于移動站操作,另一用戶接口UI2主要用于數據處理操作,但是這兩組用戶接口UI1、UI2必要的話都既能用于移動站操作也能用于數據處理操作。用戶接口UI1、UI2不必是分立的,而是也能以一個用戶接口的形式實現,例如有一個顯示器和/或一個鍵盤。用戶接口UI1、UI2的鍵盤也能以使用所謂的觸摸屏的方式來實現,其中,最好在顯示器項部安置有觸摸感應裝置,這個裝置能對例如用戶手指的觸摸作出反應。觸摸感應裝置的操作原理本身是已知的,根據的是例如電容變化或電阻變化。通信設備1進一步包含存儲器17,最好包括用于存儲例如自舉程序代碼的只讀存儲器ROM、用于裝載待執(zhí)行的應用程序和用于在使用期間存儲數據的隨機存取存儲器RAM,應用程序和數據也可能來自可寫式海量存儲器、快閃存儲器和/或非易失性隨機存取存儲器NVRAM。通信設備1的通信部件由第二數據傳輸總線相連,該總線包含例如地址總線、數據總線和控制總線。然而,為簡明起見,沒有將這些這些單獨表示出來,因為對該領域的專家來說這是現行技術中已知的。電源來自電池18,電池與電壓生成部件19相連,如果需要的話,電壓生成部件要盡可能包含穩(wěn)壓器、電壓轉換器之類的電路,以產生不同的工作電壓Vcc1、Vcc2。電壓生成部件能進一步產生一個信號,用于把電池18的電量降低到使得通信設備1能停止操作的低水平。這樣,要么必須對電池重新充電,要么必須關閉工作電壓。在實際實施例中,這個電量狀態(tài)信息引起一個對處理器2的中斷請求,由于這個中斷服務例程而產生一個數據存儲請求,其中操作系統(tǒng)OS_A、OS_B最好向顯示器10、15生成一個消息,表示對蓄電池18放電并開始向存儲器17存儲數據。此外,還能自動地進行對關閉工作電壓的控制。通信設備1也能在它們的一些外圍設備中含其它處理器,但這對本發(fā)明來說并不重要-這是為了其它目的而不是為了實現操作系統(tǒng)的功能。本示例性實施例中所用的處理器2是個屬于ARM7系列的處理器,由AdvancedRISCMachines公司制造。該處理器是一個所謂的精簡指令集處理器。然而,本發(fā)明并不僅限于這類處理器或精簡指令集處理器,本發(fā)明也能適合與其它類型的處理器共同使用。附圖4b表示了一個ARM7系列的處理器的簡化框圖。就處理器2的運行來看,中心部件是命令解釋器和控制部件401。其作用是解釋程序命令并控制這些命令所要求采取的措施,響應通過快速中斷線nFIQ和正常中斷線nIRQ到來的中斷請求,產生軟件中斷請求,為處理器的操作而生成外部時鐘(未予示出)、定時信號之類的信號,生成控制信號,用于例如在存儲器17與處理器2之間的讀數據和寫數據,以及用于控制此時地址總線402所需的地址數據的形成。數據總線讀寄存器403將來自數據總線404的程序命令放置到數據總線讀寄存器403的內部命令隊列(未予示出),將數據放置到數據寄存器(未予示出)。命令解釋器與控制部件401讀取內部命令隊列中下一個要執(zhí)行的程序命令并解釋它。如果需要,命令解釋器與控制部件401從數據寄存器中讀取數據并將其傳送到第二內部數據總線405(B總線),數據可由此經桶形位移器(barrelshifter)406被傳輸到算術邏輯單元(ALU)407,第一內部數據總線409(A總線)也已經被定向到這里。命令解釋器與控制部件401以相應的方式,控制將數據寫到數據總線寫寄存器408,數據可由此被傳輸到數據總線404。在算術邏輯單元407中,例如執(zhí)行加法、減法及邏輯運算,其方式是已知的。數據可以從算術邏輯單元407沿著第三內部數據總線410(ALU總線)被傳輸到地址寄存器411以及有內部數據寄存器(寄存器組)的數據寄存器塊412。數據寄存器塊412包含用于存儲數據的寄存器、狀態(tài)寄存器和例如程序計數器(PC),程序計數器用于從通信設備的存儲器17的程序存儲區(qū)顯示程序命令。為此,已經將內部地址總線413從數據寄存器塊412定向到地址寄存器411。地址寄存器411與地址計數器部件414相連,其中,程序計數器的值一般遞增1,指向程序代碼中以后的位置,該位置就是程序代碼中下一個要執(zhí)行的程序命令通常位于的位置。在有些情況中,被執(zhí)行的程序命令-諸如子程序請求或中斷請求,導致向程序代碼中另一個位置的轉移,此時命令計數器與控制部件將這個地址設置到程序計數器并把它傳輸到地址寄存器411,成為地址寄存器的值。地址改變總線415從地址計數器部件414指向地址寄存器411和數據寄存器部件412。處理器2進一步包含一個乘法部件416,用于執(zhí)行乘法和除法。乘法部件416與第一內部數據總線409和第二內部數據總線405相連。上述處理器2也包含上述以外的其它連接線。不過沒有必要在這個上下文中詳細說明。處理器2的數據寄存器部件412中的一部分數據寄存器能在處理器的所有操作方式中使用,此外,為不同的操作方式保留了這種在其它操作方式中關閉的數據寄存器。通過這種安排,就有可能減少特別是與中斷情況相聯系的對存儲數據的需要。此外,還為不同操作方式提供專用堆棧指針,其中每種操作方式-如果需要的話-都能支配存儲器17中為堆棧保留的自己的存儲區(qū)。處理器2最好能被設置成至少三種操作方式用戶方式,這種方式中,資源的使用是成區(qū)劃分的;特權方式(監(jiān)管方式),其中能使用處理器的所有資源;不定方式,它是特權方式的一種特殊形式,一般用于處理器2在程序代碼中檢測到不明命令時的情況中。在這個最佳實施例中,特地將這種不定方式用作將在本說明書中以后作說明的一種方式。在這個處理器2中,不定方式為此是有用的。需要的話,可用其它某種特權方式作為相應的方式。此外,對處理器2來說,可使用三種類型的中斷快速中斷(FIQ,快速中斷請求)、普通中斷(IRQ,中斷請求)和程序中斷(SWI,軟件中斷請求)。快速中斷FIQ比普通中斷IRQ的優(yōu)先級高,它們分別比程序中斷的優(yōu)先級更高。所以,就響應時間而言,最好安排重要的中斷使用快速中斷FIQ。當啟動通信設備1時,在處理器2的控制下,將一段激活的程序代碼最好從只讀存儲器或非易失性隨機存取存儲器存儲到存儲器17中,例如執(zhí)行存儲器檢查的程序命令在激活的程序代碼中。與開始這種啟動相聯系,還要加載文件的控制例程,其中如果需要的話,可通過文件的控制例程來將操作系統(tǒng)OS_A、OS_B的程序代碼加載到存儲器17中。這是許多數據處理設備和操作系統(tǒng)中的已知技術。操作系統(tǒng)OS_A、OS_B的程序代碼也能存儲到例如只讀存儲器ROM、非易失性存儲器NVRAM或電可擦可編程只讀存儲器EEPROM中。所以,直接從存儲位置使用操作系統(tǒng)OS_A、OS_B是有可能的(XIP技術、在原位執(zhí)行)。加載操作系統(tǒng)OS_A、OS_B之后,啟動它們。所以,第一步驟例如是執(zhí)行對第二操作系統(tǒng)OS_B的啟動操作,其中,操作系統(tǒng)的進程表、存儲區(qū)、中斷服務例程、報文隊列和其它相應的描述符等等被創(chuàng)建,設備驅動程序和數據類型被加載,中斷被允許。在下一個步驟中,啟動執(zhí)行相應的對第一操作系統(tǒng)OS_A的啟動操作。當對第二操作系統(tǒng)OS_B的啟動操作已經首先執(zhí)行后,在對第一操作系統(tǒng)OS_A的啟動操作中,例如操作系統(tǒng)OS_A的中斷函數-中斷的開始和中斷的結束-被動態(tài)地連接到中斷處理程序(例如,功能的開始地址被設置在存儲器17中)。此外,形成一個連接中斷處理程序的接口,用于調度第一操作系統(tǒng)OS_A的線程。設備驅動程序執(zhí)行對外圍設備的方式的初始設置等操作。最好為操作系統(tǒng)的數據存儲器RAM保留一個固定的區(qū)域(靜態(tài)分配),與普通操作中按需分配存儲區(qū)域(動態(tài)分配)的選擇相比,靜態(tài)分配能更好地保證有充分的執(zhí)行速度。啟動操作之后,就啟動空閑線程的執(zhí)行,可能啟動某個應用程序的加載和執(zhí)行。例如,有可能啟動移動站功能,其中通信設備1準備好接收呼叫、報文、傳真等,而用戶如果希望的話,能發(fā)出呼叫、發(fā)送報文或傳真一如果通信設備1中設置了這些功能的話。如果本發(fā)明的通信設備1中發(fā)生中斷,處理器就去執(zhí)行一個中斷解釋程序或調度程序,存儲被中斷線程的狀態(tài)。然后,調度程序啟動中斷服務例程。啟動哪個中斷服務例程,通常與中斷請求的原因有關。這是能夠推斷出來的,其方式例如是,處理器2有個狀態(tài)寄存器,其內容傳達中斷請求的原因。例如,由于鍵盤中斷,狀態(tài)寄存器的對應位轉變成另一邏輯狀態(tài)(例如從邏輯0狀態(tài)到邏輯1狀態(tài)),處理器2檢查該寄存器不同的各位,并啟動相應的中斷服務例程。在有若干中斷請求有效的情況下,優(yōu)先級最高的中斷服務例程最先啟動。處理器2也是已知的,它有若干條中斷線nFIQ、nIRQ可供使用,其中中斷線nFIQ、nIRQ中的狀態(tài)變化產生中斷請求??梢詾槊總€中斷線nFIQ、nIRQ定義一個特定的中斷服務例程。此外,將這些中斷服務例程的地址可以是表格形式的,其中處理器2按中斷從表中提取中斷服務例程的起始地址并將其設定為其程序計數器的值,下一個要執(zhí)行的命令就在這個地址中。在本發(fā)明中,有可能改變?yōu)橹袛郌IQ、IRQ、SWI定義的部分、甚至全部中斷服務例程。例如,有些應用程序可以為中斷FIQ、IRQ、SWI定義要與其相聯系使用的新的中斷服務例程。當執(zhí)行該應用程序時,處理器2修改存儲器17中的中斷服務例程。在本發(fā)明的一些有益的實施例中,處理器2也可能只修改這種要使用另一個中斷服務例程的中斷的起始地址。該中斷服務例程的實際代碼存儲在存儲器17中。這意味著存在中斷服務例程的起始地址的某種地址表。也可能存在與上述不同的其它方案,來定義對中斷FIQ、IRQ、SWI應當使用哪個中斷服務例程。中斷服務例程中所要求的必要操作被執(zhí)行,例如讀鍵盤緩沖區(qū)和在存儲器中存儲數據。此外,中斷服務能生成要發(fā)送到某線程或操作系統(tǒng)的信號。本說明書以后的部分將更詳細地說明按本發(fā)明最佳實施例的通信設備1的操作。中斷服務響應時間通常甚至小于上述超級線程的相應時間,例如約100微秒。影響中斷服務這種響應時間的因素例如包括,中斷在某部分程序代碼中已經被禁止了多久。中斷取消可能涉及所有中斷,或者涉及優(yōu)先級低于特定水平的中斷;中斷也能通過中斷的屏蔽寄存器等被暫時取消。這樣,中斷請求停留子存儲器中,當這個中斷請求的中斷取消被撤銷并且沒有更高優(yōu)先級的線程被執(zhí)行時,就執(zhí)行該中斷服務例程。當沒有第一操作系統(tǒng)OS_A的線程正在執(zhí)行時,會發(fā)生從第一操作系統(tǒng)OS_A到第二操作系統(tǒng)OS_B的轉移。這樣,從第一操作系統(tǒng)OS_A看來,執(zhí)行發(fā)生在空閑線程中。在通信設備1運行期間,可能也需要在不同操作系統(tǒng)OS_A、OS_B中運行的應用程序之間傳輸信息。這在兩個操作系統(tǒng)OS_A、OS_B至少使用部分公用資源時特別需要。例如,鍵盤9、14可包含公用的鍵,或者可以不同單獨的鍵盤9、14,而是使用一個公用的鍵盤。另一方面,用一個其中已經安排有不同操作系統(tǒng)OS_A、OS_B的連接接口的驅動程序來照管對這種資源的控制,通常是敏感的。這也便于對有一個以上的操作系統(tǒng)OS_A、OS_B試圖同時使用相同資源的那種情況進行控制。以下就不同操作系統(tǒng)OS_A、OS_B來說明本發(fā)明的通信設備的操作。在本發(fā)明這個最佳實施例中,第一操作系統(tǒng)OS_A是所謂的實時操作系統(tǒng),其中為其確定了某些執(zhí)行時間要求。第二操作系統(tǒng)OS_B的執(zhí)行時間不是那么關鍵,但是考慮到用戶的舒適性,第二操作系統(tǒng)OS_B也必須在合理時間內執(zhí)行分配給它的操作。第一操作系統(tǒng)OS_A的線程具有例如在嵌入式系統(tǒng)相同的設計階段就確定了的優(yōu)先級。采用優(yōu)先級就有可能影響例如關鍵線程的執(zhí)行順序和響應時間。第一操作系統(tǒng)的調度程序SCH_A此時將線程設置為在一輪執(zhí)行中最先運行的最高優(yōu)先級。在實際系統(tǒng)中這意味著本發(fā)明最佳實施例的通信設備1的處理器2執(zhí)行第一操作系統(tǒng)OS_A的調度功能,該調度功能已經由處理器2的程序命令實現。當運行線程時,處理器2按線程中編制的程序命令來執(zhí)行措施。執(zhí)行了在第一操作系統(tǒng)OS_A中運行的各進程的所有線程THA1、THA2后,處理器2轉而執(zhí)行第二操作系統(tǒng)OS_B的操作,例如延遲的功能調用DSR(被延遲服務例程,delayedserviceroutine)或正在等待的線程THB1、THB2。第一操作系統(tǒng)OS_A的線程THA1、THA2,除中斷處理期間的短時停頓外,總是有權運行的。本說明書后文提供對此的說明。在本發(fā)明這個最佳實施例中,在第一操作系統(tǒng)OS_A看來,第二操作系統(tǒng)OS_B的執(zhí)行,相當于執(zhí)行第一操作系統(tǒng)OS_A的第一個線程,諸如空閑線程THA_IDLE或超級線程。為了實現這一點,第一操作系統(tǒng)OS_A配備有代表空閑線程THA_IDLE的信息結構(未予示出),不過在本實施例的實現中,第一操作系統(tǒng)OS_A不含有適當的空閑線程。在轉而執(zhí)行第二操作系統(tǒng)OS_B之后,處理器2根據第二操作系統(tǒng)OS_B的運行線程THB1、THB2的優(yōu)先級和調度慣例,執(zhí)行第二操作系統(tǒng)OS_B的調度功能。首先執(zhí)行被被延遲服務例程DSR-如果它們有些正在等待的話,然后最好按照優(yōu)先級順序,啟動線程THB1、THB2的的執(zhí)行。在執(zhí)行了要被執(zhí)行的線程THB1、THB2之后,線程THB1、THB2都不處于運行方式,處理器2就轉到第二操作系統(tǒng)OS_B的空閑線程THB_IDLE,在此停留,直到需要新一輪的執(zhí)行。在第二操作系統(tǒng)OS_B的執(zhí)行期間,幾乎任何階段都可能發(fā)生向第一操作系統(tǒng)OS_A的轉變。這最好以這樣的方式發(fā)生,即由于某中斷請求,處理器2轉而執(zhí)行中斷服務例程,其中第一操作系統(tǒng)OS_A被啟動的方式以后敘述。當第一操作系統(tǒng)OS_A中的執(zhí)行已經前進到空閑線程THA_IDEL時發(fā)生向第二操作系統(tǒng)OS_B的返回。這樣,在第二操作系統(tǒng)OS_B看來,第一操作系統(tǒng)OS_A的執(zhí)行是運行中斷服務例程。本發(fā)明的一個目標一直是實現操作系統(tǒng)OS_A、OS_B的這樣一種方式的聯系,這種方式要使不同操作系統(tǒng)OS_A、OS_B的程序代碼中的變化盡可能地少,另一方面,操作系統(tǒng)OS_A、OS_B的屬性在應用開發(fā)者看來沒有顯著變化。在按照本發(fā)明最佳實施例的通信設備中,這種聯系建立在中斷服務例程的層次上。當發(fā)生設備中斷FIQ、IRQ或程序中斷SWI時,處理器2轉而執(zhí)行中斷服務例程。要么所有中斷能共用這個程序-此時處理器2的命令解釋器與控制部件401如果需要的話通過檢查寄存器之類就能推斷出中斷的原因,要么可以有若干個對應不同設備中斷FIQ、IRQ或程序中斷SWI的不同中斷服務例程。在中斷服務例程的開始,向中斷開始例程增加一個程序調用(功能調用),該調用中改變操作系統(tǒng)OS_A、0S_B的內部狀態(tài),其中操作系統(tǒng)OS_A、OS_B中的數據通知中斷服務正在運行。向中斷服務例程的轉移、子程序的執(zhí)行、狀態(tài)數據的研究以及其它相應操作都是在命令解釋器與控制部件401的控制下進行的,本說明書中較早時說明過解釋器與控制部件,另一方面,這也是本領域的技術人員已知的技術。隨后,執(zhí)行中斷處理程序的功能,這意味著命令解釋器與控制部件401執(zhí)行為已經到達處理器2的中斷所確定的程序命令,這些程序命令最好存儲子存儲器17中。在中斷處理程序程序中,要研究中斷的原因并推斷中斷處理要求執(zhí)行第一操作系統(tǒng)OS_A還是第二操作系統(tǒng)OS_B的線程。如果中斷處理要求執(zhí)行第一操作系統(tǒng)OS_A的線程,中斷處理程序就將這個信息設置到第一操作系統(tǒng)的調度程序SCH_A。如果中斷處理要求執(zhí)行第二操作系統(tǒng)OS_B的線程,中斷處理程序就生成一個要在第一操作系統(tǒng)OS_A的各線程執(zhí)行之后執(zhí)行的被延遲服務例程DSR。這種被延遲服務例程DSR也能通過第一操作系統(tǒng)OS_A的運行的線程來生成。這個被延遲服務例程DSR能通知第二操作系統(tǒng)OS_B的調度程序SCH_B中斷處理要求執(zhí)行第二操作系統(tǒng)OS_B中的某些線程。在有些情況中,中斷處理程序也可能不用被延遲服務例程DSR就將該數據設置到第二操作系統(tǒng)的調度程序SCH_B。在中斷服務例程中也有可能執(zhí)行其它操作,例如向緩沖器讀入數據,其中數據是在應用程序中該數據所涉及的線程處于執(zhí)行階段時被讀入的。在中斷程序的結尾增加了一個中斷結束功能請求,其中設置例如中斷服務例程已經結束的信息。此外,該功能還返回關于在中斷服務中是否執(zhí)行了第一操作系統(tǒng)OS_A中的、從第一操作系統(tǒng)的調度程序SCH_A要求給予這些線程執(zhí)行時間的任何線程的信息。中斷服務例程結束后,處理器2的方式和第一操作系統(tǒng)OS_A的狀態(tài)改變。如果中斷處理曾導致對執(zhí)行第一操作系統(tǒng)OS_A的線程的需要,則下一個執(zhí)行的程序就是第一操作系統(tǒng)OS_A的調度程序,其中,將新的狀態(tài)(就緒)賦予中斷導致過對其采取措施(例如讀緩沖器中信息)的線程。第一操作系統(tǒng)OS_A的調度程序SCH_A按優(yōu)先級順序控制執(zhí)行第一操作系統(tǒng)OS_A的那些正在等待執(zhí)行的(處于就緒狀態(tài)的)線程。在第一操作系統(tǒng)OS_A的處于第一操作系統(tǒng)OS_A的中斷服務中或運行中的線程中,在有些情況中有可能生成被延遲服務例程DSR,其中第二操作系統(tǒng)OS_B的線程的狀態(tài)被改變。被延遲服務例程DSR是在處理器2已經執(zhí)行了第一操作系統(tǒng)OS_A的所有等待執(zhí)行的線程之后被處理的。處理了被延遲服務例程之后,進一步執(zhí)行第二操作系統(tǒng)OS_B的調度程序例程,以便最好按優(yōu)先級順序來運行第二操作系統(tǒng)OS_B的那些正在等待執(zhí)行的線程。在上述措施的執(zhí)行期間可能發(fā)生的新的中斷中,操作再一次被轉移到中斷處理,以后的操作按上述原則發(fā)生。在中斷之后發(fā)生的操作,以運行具有當時最高有效優(yōu)先級的操作的方式繼續(xù)。這受到例如中斷時刻處理器2運行的階段的影響,也受中斷原因的影響。附圖6a至6i中展示了一些其它的情況,將在以后作更詳細的說明。嵌入式系統(tǒng)1的一個例子是其中實現了移動站功能和數據處理功能二者的通信設備,諸如個人數字助理PDA的功能。該通信設備的處理器2中使用兩個操作系統(tǒng)OS_A、OS_B。第一操作系統(tǒng)OS_A主要與移動站的控制和使用有關。第二操作系統(tǒng)OS_B主要與數據處理功能的控制和使用有關。在圖6a至6h的示例性情形中,這些情形涉及所謂的普通中斷IRQ(中斷請求)。在按照本發(fā)明最佳實施例的這個通信設備1中也能采用圖6i的例子中所示的所謂快速中斷FIQ(快速中斷請求)??焖僦袛嗟膬?yōu)先級最好高于普通中斷IRQ的優(yōu)先級。此外,也可采用軟件中斷SWI,其優(yōu)先級最好低于普通中斷IRQ的優(yōu)先級。附圖6a至6i中所示的各階段在快速中斷FIQ和程序中斷SWI中也能改編,所以本說明書中主要只討論普通中斷IRQ。被延遲服務例程是第二操作系統(tǒng)OS_B的一個特性,能用于例如不同線程之間的報文傳輸,需要的話,也能用于不同操作系統(tǒng)OS_A、OS_B之間的報文傳輸。被延遲服務例程DSR將第二操作系統(tǒng)OS_B的線程的狀態(tài)改變?yōu)榈却龍?zhí)行的狀態(tài)(就緒狀態(tài))。在第二操作系統(tǒng)OS_B中,被延遲服務例程DSR的優(yōu)先級高于各線程的優(yōu)先級,這樣它們就能在第二操作系統(tǒng)的各線程運行之前被處理。本例中的處理器2包含以下方式-用戶方式USER-特權方式SVC-不定方式UND-快速中斷方式FIQ-普通中斷方式IRQ-軟件中斷方式SWI。本發(fā)明的這個最佳實施例中將不定方式UND用作標準運行方式,盡管其在本例中所用的處理器2中的缺省值的應用是不定方式。圖6a表示的情形中,由于普通中斷,處理器2執(zhí)行第二操作系統(tǒng)OS_B下的線程THB1(方框601),它例如包含通信設備1的數據處理功能中的一個與由用戶啟動的應用程序有關的進程。處理器2處于用戶方式USER。該普通中斷導致該方式轉變?yōu)槠胀ㄖ袛喾绞絀RQ,其中處理器2轉而運行普通中斷功能的開始符(方框602),此后運行普通中斷的服務程序(方框603)。該中斷沒有導致需要運行第一操作系統(tǒng)OS_A的線程,其中在中斷后沒有調用第一操作系統(tǒng)的調度程序SCH_A。在該中斷中也沒有生成被延遲服務例程DSR。在中斷處理的結尾,調用普通中斷功能的結束符(方框604),在其中設置中斷已經結束的信息。在該普通中斷的服務程序結束之后,將處理器2的方式變回用戶方式USER。執(zhí)行從第二操作系統(tǒng)OS_B被中斷的線程THB1繼續(xù)(方框605)。中斷的原因例如是打開通信設備1的機蓋(未予示出),其中開關S1指出機蓋的位置改變了狀態(tài),即打開了,處理器2通過讀取與該開關相連的標識線20的邏輯狀態(tài)(0/1)就能檢查這個開關S1的位置。在這個案例中機蓋的打開沒有立即導致任何行動。圖6b表示的情形中,由于普通中斷,處理器2正在運行第一操作系統(tǒng)OS_A的空閑線程THA_IDLE(方框606)。在這種情形中,方式從不定方式UND轉變?yōu)槠胀ㄖ袛喾绞絀RQ,處理器2轉而運行普通中斷功能的開始符(方框602),然后運行普通中斷的服務程序。該中斷沒有導致需要運行第一操作系統(tǒng)OS_A的線程,其中在中斷后沒有調用第一操作系統(tǒng)的調度程序SCH_A。在該中斷中也沒有生成被延遲服務例程DSR。在中斷處理結束后,請求普通中斷功能的結束符(方框604),在其中設置中斷已經結束的信息。在該普通中斷的服務程序結束之后,將處理器2的方式變回不定方式UND。執(zhí)行從空閑線程THA_IDLE繼續(xù)(方框605)。中斷IRQ的原因例如是,在通信設備1的機蓋打開時用戶按下數據處理功能的鍵盤14的一個鍵。中斷處理程序檢查在這種情況下按下相應的鍵對移動站功能的運行是否有任何影響,并證實沒有影響,該中斷沒有導致在移動站功能中采取措施。圖6c表示的情形中,在發(fā)生一個普通中斷時,處理器2正在運行第二操作系統(tǒng)OS_B的線程THB1(方框601)。該線程例如包含通信設備1的數據處理功能中與由用戶啟動的應用程序有關的進程。這種情形在圖8中通過有向示意圖也有表示。處理器2處于用戶方式USER。所以,方式轉變?yōu)槠胀ㄖ袛喾绞絀RQ,處理器2轉而運行普通中斷功能的開始符(方框602),然后運行普通中斷的服務程序(圖6c的方框603,圖8中的箭頭801和802)。該中斷導致了需要運行第一操作系統(tǒng)OS_A的至少一個線程,但在中斷中沒有生成被延遲服務例程DSR。在中斷處理結束后(箭頭803),調用請求普通中斷功能的結束符(方框604),設置中斷已經結束的信息。在該普通中斷的服務程序結束之后,將處理器2的方式變回不定方式UND,同時調用第一操作系統(tǒng)的調度程序SCH_A,該調度程序如果需要的話為各線程設置新的狀態(tài)(圖6c的方框608,圖8中的箭頭804)。隨后,第一操作系統(tǒng)OS_A的正在等待執(zhí)行的線程(就緒方式的線程)被運行(箭頭805至808)。然后,當沒有線程等待運行時,將處理器2的方式變回用戶方式USER,執(zhí)行從第二操作系統(tǒng)OS_B被中斷的線程THB1繼續(xù)(圖6c的方框605,圖8中箭頭809、810和811)。在一個表示這種情形的例子中,通信設備1已經收到一個未應答的呼叫。所以,移動站功能的顯示器10以及數據處理功能的顯示器15顯示一條表示有已接收、未應答的呼叫的消息,例如正文“1missedcall”。用戶按下數據處理功能的回車鍵(未予示出),期間就產生一個普通中斷IRQ。在中斷處理中,能用來從移動站功能的顯示器10刪除該正文的第一操作系統(tǒng)OS_A的線程被設置為等待運行方式。中斷結束后,處理器2轉而運行第一操作系統(tǒng)的調度程序SCH_A,其中,第一操作系統(tǒng)OS_A的線程能在已經到達運行方式后從移動站功能的顯示器10刪除該正文。圖6d表示的情形中,當發(fā)生普通中斷時,處理器2正在運行第二操作系統(tǒng)OS_B下的線程THB1(方框601)并被設置在用戶方式USER。所以,方式被轉變?yōu)槠胀ㄖ袛喾绞絀RQ,處理器2轉而運行普通中斷功能的開始符(方框602),然后運行普通中斷的服務程序(方框603)。該中斷導致了需要運行第一操作系統(tǒng)OS_A的至少一個線程。此外,在中斷中,以及/或者在中斷之后運行的第一操作系統(tǒng)OS_A的某線程中,生成了一個被延遲服務例程DSR。在中斷處理結束后,調用普通中斷功能的結束符(方框604),設置中斷已經結束的信息。在普通中斷的服務程序結束之后,將處理器2的方式變回不定方式UND,調用第一操作系統(tǒng)的調度程序SCH_A,該調度程序如果需要的話為各線程設置新的狀態(tài),控制第一操作系統(tǒng)OS_A的正在等待執(zhí)行的線程按照其調度過程執(zhí)行(方框608)。當沒有第一操作系統(tǒng)OS_A線程還在等待運行后,第二操作系統(tǒng)OS_B的被延遲服務例程DSR被處理,然后,將處理器2的方式變回用戶方式USER,執(zhí)行從第二操作系統(tǒng)OS_B的被中斷線程THB1繼續(xù)(方框605),這是因為,被該狀態(tài)的被延遲服務例程改變了的第二操作系統(tǒng)OS_B的線程,優(yōu)先級比第二操作系統(tǒng)OS_B的被中斷線程THB1的低??梢耘e一個例子,情況是用戶已經用數據處理功能的鍵盤14寫了一條短消息(SM)。按下傳輸鍵時導致一個普通中斷IRQ。在中斷處理中,第一操作系統(tǒng)OS_A的一個或多個線程被設置為等待運行方式,以便從緩沖器讀取該待傳輸的消息以及傳輸,而在數據處理功能的顯示器15上則生成一個圖標,由其向用戶通知將有消息被傳輸。中斷結束后,處理器2轉而運行第一操作系統(tǒng)的調度程序SCH_A,其中,第一操作系統(tǒng)OS_A的線程在運行方式中傳輸該消息,然后,生成一個用來刪除該圖標的被延遲服務例程DSR。隨后,第二操作系統(tǒng)的調度程序SCH_B將第二操作系統(tǒng)OS_B的被中斷線程THB1設置成運行方式,因為其優(yōu)先級在這個示例性情形中高于第二操作系統(tǒng)OS_B的圖標刪除線程。以后這個線程到達運行方式,從數據處理功能的顯示器15刪除該圖標。圖6e表示的情形中,當普通中斷到來時,處理器2正在運行第一操作系統(tǒng)OS_A的空閑線程THA_IDLE(方框606)并被設置為不定方式UND。所以,方式轉變?yōu)槠胀ㄖ袛喾绞絀RQ,處理器2轉而運行普通中斷功能的開始符(方框602),然后運行普通中斷的服務程序。該中斷導致需要運行第一操作系統(tǒng)OS_A的至少一個線程。在該中斷和/或第一操作系統(tǒng)OS_A的線程中生成了一個被延遲服務例程DSR,這進一步導致第二操作系統(tǒng)OS_B的一個或多個線程的狀態(tài)轉變成等待執(zhí)行(就緒)。在中斷結束后,調用普通中斷功能的結束符(方框604),在其中設置中斷已經結束的信息。在該普通中斷的服務程序結束之后,改變處理器2的方式和第一操作系統(tǒng)OS_A的狀態(tài)。處理器2的方式變成不定方式UND,然后請求第一操作系統(tǒng)的調度程序SCH_A(方框608),它將各線程依次設置成運行方式,即運行第一操作系統(tǒng)OS_A的正在等待執(zhí)行的(處于就緒方式的)線程。在第一操作系統(tǒng)OS_A沒有正在等待執(zhí)行的線程后,就處理第二操作系統(tǒng)OS_B的被延遲服務例程(方框609),然后調用第二操作系統(tǒng)的調度程序SCH_B(方框610),它按第二操作系統(tǒng)OS_B的運行順序-最好按優(yōu)先級順序,將正在等待執(zhí)行的第一個線程設置成運行方式。然后,處理器2的方式被設置回用戶方式USER,運行從第二操作系統(tǒng)OS_B的、此時具有最高優(yōu)先級的線程THB1繼續(xù)(方框605)。第二操作系統(tǒng)的調度程序SCH_B按其調度原則控制各線程的運行。在示例性情形中,一條短消息到達了通信設備1,例證是移動站功能的顯示器10上和數據處理功能的顯示器15上的圖標。用戶按下移動站功能的鍵盤9上的閱讀鍵(未予示出),引起一個普通中斷。在中斷處理中,要把第一操作系統(tǒng)OS_A的一個或多個線程設置為等待運行方式,以便從移動站功能的顯示器10刪除圖標并在數據處理功能的顯示器15上顯示收到的消息。此外,還生成一個被延遲服務例程DSR,以便從數據處理功能的顯示器15刪除圖標。處理器2在中斷后運行第一操作系統(tǒng)OS_A的調度功能,處理被延遲服務例程DSR,然后轉而去運行第二操作系統(tǒng)OS_B的調度功能,其中第二操作系統(tǒng)的線程在到達執(zhí)行之后從數據處理功能的顯示器15刪除圖標。圖6f表示的情形中,當普通中斷到來時,處理器2執(zhí)行第二操作系統(tǒng)OS_B下的線程THB1(方框601)并被設置為用戶方式USER。所以,方式被轉變?yōu)槠胀ㄖ袛喾绞絀RQ,處理器2轉而運行普通中斷功能的開始符(方框602),然后轉至普通中斷的服務程序(方框603)。該中斷導致了需要運行第一操作系統(tǒng)OS_A的至少一個線程。此外,在中斷中,以及/或者在中斷之后運行的第一操作系統(tǒng)OS_A的某線程中,生成了一個被延遲服務例程DSR,這進一步導致對第二操作系統(tǒng)OS_B的各線程的執(zhí)行時間的重新設置。在中斷處理結束后,調用普通中斷功能的結束符(方框604),設置中斷已經結束的信息。在普通中斷的服務程序結束之后,處理器2的方式和第一操作系統(tǒng)OS_A的狀態(tài)被改變。處理器2的方式變成不定方式UND,然后,調用第一操作系統(tǒng)的調度程序SCH_A,該調度程序-如果需要的話-為線程設置新的狀態(tài)(方框608)。運行第一操作系統(tǒng)OS_A的正在等待執(zhí)行的線程(處于就緒方式中的線程)。然后,當沒有等待運行的第一操作系統(tǒng)OS_A線程剩下時,第二操作系統(tǒng)OS_B的被延遲服務例程DSR被處理(方框609),然后,調用第二操作系統(tǒng)OS_B的調度程序SCH_B(方框610),它將第二操作系統(tǒng)OS_B正在等待的、排在運行順序中第一位的線程設置成要在運行方式中執(zhí)行。在本例中,中斷處理導致被中斷線程THB1還不是要前進到運行方式的線程-相反卻是第二操作系統(tǒng)OS_B的另一個、其狀態(tài)變成等待運行的線程THB2。將處理器2的方式變回用戶方式USER,然后處理器2轉而去運行被設置成運行方式的線程THB2(方框611)。被中斷線程THB1依次到達運行方式(方框605)。作為上述的一個例子的情形中,用戶在用數據處理功能的鍵盤14寫一條短消息并將充電器(未予示出)連接到通信設備1。這導致一個普通中斷IRQ。在中斷處理中,在移動站功能的顯示器10上生成通知進行充電的圖標的第一操作系統(tǒng)OS_A的線程,被設置為等待運行方式。此外,通過一個被延遲服務例程DSR,在數據處理功能的顯示器15上生成一個相應的圖標。圖6g表示的情形中,普通中斷到來時,處理器2在運行第二操作系統(tǒng)OS_B下的線程THB1(方框601),它例如是通信設備1的數據處理功能中的建立連接的應用程序。處理器2處于不定方式UND。所以,將方式轉變?yōu)槠胀ㄖ袛喾绞絀RQ,處理器2轉而運行普通中斷功能的開始符(方框602),此后運行普通中斷的服務程序(方框603)。中斷沒有導致需要運行第一操作系統(tǒng)OS_A的線程,其中在中斷后沒有調用第一操作系統(tǒng)的調度程序SCH_A。在中斷處理結束后,調用普通中斷功能的結束符(方框604),在其中設置中斷已經結束的信息。在普通中斷結束之后,處理器2的方式和第一操作系統(tǒng)OS_A的狀態(tài)改變。處理器2的方式變回不定方式UND。運行從被中斷線程THB1繼續(xù)(方框613)。盡管在中斷中生成過第二操作系統(tǒng)OS_B的被延遲服務例程DSR,這些DSR都會在第一操作系統(tǒng)的所有運行線程被執(zhí)行之前得到處理。例如用戶正在撥電話號碼時,由于按鍵,產生一個普通中斷IRQ。在中斷處理中,按鍵被讀入存儲器17并在移動站功能的顯示器10上顯示,然后中斷返回,等待下一個按鍵。圖6h表示的情形中,普通中斷到來時,處理器2在運行第二操作系統(tǒng)OS_B下的線程THB1(方框612),它例如是通信設備的數據處理功能中的建立連接的應用程序。處理器2處于不定方式UND。所以,將方式轉變?yōu)槠胀ㄖ袛喾绞絀RQ,處理器2轉而運行普通中斷功能的開始符(方框602),然后運行普通中斷的服務程序(方框603)。中斷導致需要運行第一操作系統(tǒng)OS_A的至少一個線程。在中斷結束后,調用普通中斷功能的結束符(方框604),在其中設置中斷已經結束的信息。在普通中斷的服務程序結束之后,改變處理器2的方式和第一操作系統(tǒng)OS_A的狀態(tài)。處理器2的方式變成不定方式UND,然后請求第一操作系統(tǒng)的調度程序SCH_A(方框608),如果需要,它為各線程設置新狀態(tài)。隨后,按照優(yōu)先級順序,運行第一操作系統(tǒng)OS_A的正在等待執(zhí)行的(處于就緒方式的)線程。在本例中,中斷導致第二線程THA2立即前去執(zhí)行(方框614),被中斷線程THA1可能要稍后才輪到去運行(方框613)。盡管在中斷中形成過第二操作系統(tǒng)OS_B的被延遲服務例程,它們不會在第一操作系統(tǒng)OS_A的運行線程被執(zhí)行之前就被運行。例如用戶撥電話號碼后,按下聽筒提起(handset-up)鍵(未予示出),引起一個普通中斷。中斷處理之后,第一操作系統(tǒng)的調度程序SCH_A將一個建立連接的線程設置成執(zhí)行。圖6i進一步表示的情形中,當普通中斷服務例程正在運行時(方框615)發(fā)生一個快速中斷FIQ。處理器2處于普通中斷方式IRQ,于是轉為快速中斷方式FIQ并運行快速中斷功能的開始符(方框616),然后運行快速中斷的服務程序(方框617)。在快速中斷處理結束后,調用快速中斷功能的結束符(方框618),設置快速中斷FIQ已經結束的信息。在快速中斷的服務程序結束之后,將處理器2的方式變回普通中斷狀態(tài)IRQ,然后,運行從被中斷的位置繼續(xù)(方框619)。作為這種情況的例子是,當處理器2正在運行鍵盤9、14的中斷處理時,安裝在通信設備1中的--例如專用集成電路3中的定時器(未予示出)生成一個快速中斷FIQ。處理器2讀取定時器的值并將其存入存儲器17。然后,處理器2返回到鍵盤9、14的中斷處理。在處理器2的上述方式轉換中,處理器2最好開始使用不同的寄存器,不必總要把數據轉移到臨時存儲單元。然而在有些中斷情況中,可能需要數據轉移,這在某種程度上會拖延中斷的處理。還有,有些用作處理器2的微處理器并不包含上述的所有方式,這些不同的方式可通過方式變量等指明。有時也可能需要確定對第二操作系統(tǒng)OS_B的響應時間。所以,第一操作系統(tǒng)的調度程序SCH_A可以在為第二操作系統(tǒng)OS_B剩下的執(zhí)行時間會小于響應時間所要求的時間的情況下提高第一操作系統(tǒng)OS_A的空閑線程THA_IDLE的優(yōu)先級。這樣,第一操作系統(tǒng)OS_A的空閑線程THA_IDLE在其它非關鍵線程之前輪到運行,導致轉而去運行第二操作系統(tǒng)OS_B。這種提高優(yōu)先級的方法,例如是用一個被設置為在預定時間后中斷的定時器來實現的。如果當定時器中斷到達時處理器2尚未到達第一操作系統(tǒng)OS_A的空閑線程THA_IDLE,就調用第一操作系統(tǒng)的調度程序SCH_A,由它來提高空閑線程THA_IDLE的優(yōu)先級。不過這里應當注意,這時最好在提高空閑線程THA_IDLE的優(yōu)先級后只在較短的時間內保持有效,以便也定時地為第一操作系統(tǒng)OS_A的非關鍵線程提供執(zhí)行時間。空閑線程THA_IDLE的優(yōu)先級不能被提高到太高的水平,因為第一操作系統(tǒng)OS_A的關鍵線程必須得到執(zhí)行。這種調度也可以被稱作交替式調度。附圖9和10表示上述交替式調度選擇方案的一個例子。圖9中描述的是一例情況的時序圖,這種情況是,要執(zhí)行第一操作系統(tǒng)0S_A中運行的進程的運行線程THA1、THA2、THA3和第二操作系統(tǒng)OS_B的運行線程THB1、THB2、THB3。圖10中為進一步闡明交替式調度方式而描述了第一操作系統(tǒng)OS_A的一個進程圖。在這個示意圖中出現了在第一操作系統(tǒng)OS_A中運行的進程的三個線程THA1、THA2、THA3和在第二操作系統(tǒng)OS_B的運行的進程的三個線程THB1、THB2、THB3,但是應當明白,可以有更多或更少的在操作系統(tǒng)OS_A、OS_B中運行的線程。第一操作系統(tǒng)OS_A的第一線程THA1例如是電話應用程序,具有相當高的優(yōu)先級。第一操作系統(tǒng)OS_A的第三線程THA3例如是為用戶接口配備的。在第一操作系統(tǒng)OS_A中,第二線程THA2的優(yōu)先級低于第一線程THA1的優(yōu)先級,第三線程THA3的優(yōu)先級低于第二線程THA2的優(yōu)先級。第二操作系統(tǒng)OS_B的第一線程THB1例如是用于通過接口部件16通信的程序。第二操作系統(tǒng)OS_B的第二線程THB2和第三線程THB3例如是一些PDA應用程序-例如一個記事本應用程序和一個日歷應用程序。本例中,假設第二操作系統(tǒng)OS_B的第一線程THB1的優(yōu)先級高于第二操作系統(tǒng)OS_B的第二線程THB2的優(yōu)先級,第二操作系統(tǒng)0S_B的第三線程THB3在這三個線程中優(yōu)先級最低。圖9中用較粗的線條表示線程的執(zhí)行。例如,在時刻T1,開始輪到第一操作系統(tǒng)OS_A的第二線程THA2運行。這由標注號901表示。在稍后的時刻T2,開始輪到第一操作系統(tǒng)OS_A的第三線程THA3運行(902)。也假設第三線程THA3是第一操作系統(tǒng)OS_A的空閑線程THA_IDLE之前的最后一個線程。所以過了一會后,在時刻T3,開始輪到第二操作系統(tǒng)OS_A的第一線程THB1運行(903),檢查是否需要通過接口部件16通信。在稍后的時刻T4,開始輪到第二操作系統(tǒng)OS_B的第二線程THB2運行(904)。在時刻T5也為第二操作系統(tǒng)OS_B的第三線程THB3留下一些執(zhí)行時間(905)。本例中,在時刻T6輪到運行的下一個線程(906)是第二操作系統(tǒng)OS_B的第三線程THB1。圖10中也表示了從時刻T7開始的以上情況。線程THA1、THA2、THA3、調度程序SCH_A、中斷服務例程ISR、中斷向量和第一操作系統(tǒng)的其它服務在圖10中以方框表示。圖10中排列了各線程的優(yōu)先級,位置最高的線程有最高的優(yōu)先級。第一操作系統(tǒng)OS_A的空閑線程THA_IDLE的優(yōu)先級最低。在時刻T7,第一操作系統(tǒng)OS_A的調度程序SCH_A暫時改變第一操作系統(tǒng)OS_A的空閑線程THA_IDLE的優(yōu)先級。這種情形在圖10中時刻T7的右邊表示。在時刻T11,第一操作系統(tǒng)OS_A的調度程序SCH_A將第一操作系統(tǒng)OS_A的空閑線程THA_IDLE的優(yōu)先級改變回最低優(yōu)先級。第一操作系統(tǒng)OS_A的空閑線程THA_IDLE的優(yōu)先級的改變例如可由定時器、由某個事件等處理。用戶例如按下第二接口UI2的某鍵。于是在時刻8又開始輪到第一操作系統(tǒng)OS_A的第三線程THA3運行(907)。調度程序SCH_A已經提高了第一操作系統(tǒng)OS_A的空閑線程THA_IDLE的優(yōu)先級。第一操作系統(tǒng)OS_A的第三線程THA3正在運行時,有經接口部件16進行傳輸的需要。這就引起一個中斷一因為空閑線程THA_IDLE的優(yōu)先級在這個時刻T9高于第一操作系統(tǒng)OS_A的第三線程THA3的優(yōu)先級。于是第一操作系統(tǒng)OS_A的第三線程THA3的執(zhí)行被中斷,開始輪到第二操作系統(tǒng)OS_B的第一線程THB1運行(908)。在第二操作系統(tǒng)OS_B的第一線程THB1的執(zhí)行之后,在時刻T10,繼續(xù)第一操作系統(tǒng)OS_A的第三線程THA3的執(zhí)行。本例中,第一操作系統(tǒng)OS_A的調度程序SCH_A在時刻T11將第一操作系統(tǒng)OS_A的空閑線程THA_IDLE的優(yōu)先級降回到最低水平。第一操作系統(tǒng)OS_A的第三線程THA3的執(zhí)行在時刻T12再次被中斷,因為有通知說有更高優(yōu)先級的線程要執(zhí)行(910)。這個線程例如是第一操作系統(tǒng)OS_A的第二線程THA2。在時刻T13,第一操作系統(tǒng)OS_A的第二線程THA2被中斷,因為有通知說有更高優(yōu)先級的線程-第一操作系統(tǒng)OS_A的第一線程THA1-要執(zhí)行(911)。在時刻T14,第一操作系統(tǒng)OS_A的第一線程THA1執(zhí)行后,第一操作系統(tǒng)OS_A的第二線程THA2的執(zhí)行繼續(xù)(912)。在時刻T15,第一操作系統(tǒng)OS_A的第二線程THA2的執(zhí)行完成。同時(時刻,T15),第二操作系統(tǒng)OS_B的第一線程THB1也變得運行準備就緒。然而,第一操作系統(tǒng)OS_A的第三線程THA3的執(zhí)行卻在時刻15繼續(xù)(913)。這與較早時在時刻T9的行為相反。第一操作系統(tǒng)OS_A的第三線程THA3的執(zhí)行在時刻15第一操作系統(tǒng)OS_A的第二線程THA2已經執(zhí)行后繼續(xù)。第二操作系統(tǒng)OS_B的第一線程THB1在時刻T16開始輪到運行(914),服務于經接口部件16的傳輸。表1進一步總結了與中斷相聯系的從一種方式向另一種方式的轉換。第一列表示改變方式時處理器2所處的方式,第一行表示處理器2被轉換到的方式。表的其它方框表示導致各方式的變化的情況。各縮寫就是本說明書前文中所用的不同方式和中斷的縮寫。<tablesid="table1"num="001"><table>USERUNDSVCIRQFIQUSER--------OS_B線程請求SWIIRQ中斷OS_B線程FIQ中斷OS_B線程UND從最后一個OS_A線程或DSR返回----DSR或空閑線程請求SWIIRQ中斷OS_A線程、DSR或空閑線程FIQ中斷OS_A線程、DSR或空閑線程SVC從快速SWI返回在慢SWI期間----IRQ中斷快速SWIFIQ中斷快速SWIIRQ如果不存在活動的OS_A線程或DSR,從IRQ返回如果存在活動的OS_A線程或DSR,從IRQ返回--------FIQ中斷IRQFIQ如果沒有活動的OS_A線程或DSR,從FIQ返回如果活動的OS_A線程或DSR,從FIQ返回----如果IRQ被中斷,從FIQ返回----</table></tables>表1下面的例子描述不同操作系統(tǒng)OS_A、OS_B中執(zhí)行的線程之間消息的傳輸。圖7a和7b以簡化示意圖表示這種消息傳輸機制。消息驅動器MD(messagedriver)是操作系統(tǒng)OS_A、OS_B公用的,也是消息隊列MQ1、MQ2公用的。第二操作系統(tǒng)OS_B的運行線程THB1調用消息驅動器MD,將所傳送消息(例如一條正文消息)和目標線程THA1的符號作為參數傳輸(圖7a箭頭701)。消息驅動器MD將該消息轉移到第一消息隊列MQ1(箭頭702)并最好生成一個軟件中斷(SWI),這個中斷激活一個基本如本說明書前文據圖6所述的中斷處理-只不過該中斷是由軟件中斷SWI而不是普通中斷IRQ引起的。離開中斷處理程序導致激活第一操作系統(tǒng)的調度程序SCH_A,目標線程在由優(yōu)先級確定的時間被執(zhí)行(箭頭703)。這個目標線程讀取第一消息隊列MQ1中的消息(箭頭704)并例如將該消息傳輸到一個無線電通道。在第一操作系統(tǒng)的應用程序中,能執(zhí)行一個被延遲服務例程DSR,由此可能例如以下列方式(圖7b)將消息傳輸到第二操作系統(tǒng)OS_B的線程。在第二操作系統(tǒng)OS_B中,運行線程THB2已經生成了一個消息請求并一直等待著該消息(箭頭705)。該消息請求引起一個軟件中斷SWI,中斷處理程序檢查中斷的原因后斷定第二操作系統(tǒng)OS_B的線程THB2正在帶來來自第一操作系統(tǒng)OS_A的線程THA2的消息。中斷處理后,調用第一操作系統(tǒng)OS_A的調度程序SCH_A(706)。在輪到所希望的線程THA2運行后,該線程生成一個消息并將其添加到第二消息隊列MQ2(箭頭707)。此外,線程THA2還生成一個被延遲服務例程DSR(箭頭708)。在運行了第一操作系統(tǒng)OS_A的各線程后,這個被延遲服務例程DSR緊接著就被處理,其中由線程THA2添加的該被延遲服務例程DSR將第二操作系統(tǒng)OS_B的線程的狀態(tài)改變?yōu)榈却龍?zhí)行(就緒)(箭頭709)。第二操作系統(tǒng)OS_B的調度程序SCH_B按照其調度原則控制各線程的執(zhí)行。當發(fā)過傳輸請求的線程THB2運行時(710),它通過消息驅動器MD的連接接口從第二消息隊列MQ2讀取消息。在實際實施例中,消息隊列MQ1、MQ2最好能按優(yōu)先級來配置。這意味著,高優(yōu)先級的接收線程的消息比較低優(yōu)先級的消息更快經過隊列。另一種可選方案是,采用比本例中的第一MQ1和第二消息隊列MQ2更多的消息隊列。總而言之,可以注意到,本發(fā)明能實現在一個處理器下運行一個或多個操作系統(tǒng)OS_A、OS_B。一個目標是使公用部件最少,也能在這種通信設備1中運行現行技術水平的應用程序。操作系統(tǒng)OS_A、OS_B的公用部件主要是中斷處理程序,中斷處理程序中形成了與操作系統(tǒng)OS_A、OS_B的聯系。在上面的例子中,消息驅動器MD也是公用的。在實際的嵌入式相同1中,有可能為不同的操作系統(tǒng)OS_A、OS_B配置許多公用的中斷處理程序(中斷服務例程)。每次可以有對應一種中斷的其中一個中斷處理程序是活動的,即,例如對應快速中斷FIQ的一個,對應普通中斷IRQ的一個和對應軟件中斷SWI的一個。這樣就有可能將為該中斷配置的另一個中斷處理程序變?yōu)榛顒拥闹袛嗵幚沓绦?。應當指出,兩個操作系統(tǒng)OS_A、OS_B在處理器2的系統(tǒng)中運行也能以這樣的方式實現,例如由第二操作系統(tǒng)OS_B的線程THB1、THB2、THB_IDLE來形成第一操作系統(tǒng)的線程,諸如空閑線程THA_IDLE或超級線程,其中與所有與第二操作系統(tǒng)OS_B有關的運行線程THB1、THB2、THB_IDLE都在這個線程中執(zhí)行。以對應的方式,有可能由第一操作系統(tǒng)OS_A的線程THA1、THA2、THA_IDLE來形成第二操作系統(tǒng)的線程,諸如空閑線程THB_IDLE或超級線程511,其中與所有與第一操作系統(tǒng)OS_A有關的運行線程THA1、THA2、THA_IDLE都在這個線程中執(zhí)行。另一個可選方案是,第一操作系統(tǒng)OS_A的每個線程THA1、THA2、THA_IDLE以獨立于第二操作系統(tǒng)OS_B的超級線程511的形式形成,第二操作系統(tǒng)OS_B把這些線程作為單獨的超級線程(未予示出)來處理。如本說明書前文所述,這些超級線程的響應時間,通常比普通線程的響應時間短得多。響應時間的要求最高的任務仍然能得到運行,方法是為它們生成例如與定時器的中斷處理程序相聯系的中斷處理,其中在轉而執(zhí)行這些任務時不必使用調度功能。就第一操作系統(tǒng)OS_A的每個線程THA1、THA2、THA_IDLE以第二操作系統(tǒng)OS_B中獨立的超級線程511的形式實現的情況來說,如果希望在第一操作系統(tǒng)OS_A的不同線程THA1、THA2、THA_IDLE之間傳輸數據,就要求按照第二操作系統(tǒng)OS_B的信號傳輸。相反,當第一操作系統(tǒng)OS_A的線程THA1、THA2、THA_IDLE是以一個超級線程511的形式實現的時,數據傳輸就能通過使用第一操作系統(tǒng)OS_A的消息傳輸方法而以更簡單的方式實現。本發(fā)明并不僅限于上述各實施例,可以在后附權利要求的范圍內修改。權利要求1.一種包含至少一個用于運行操作系統(tǒng)(OS_A、OS_B)的處理器(2)的嵌入式系統(tǒng)(1),特征在于,嵌入式系統(tǒng)(1)進一步包含-用于在處理器(2)中運行至少兩個操作系統(tǒng)(OS_A、OS_B)的裝置(17、401、412);-包含第一組線程(THA1、THA2、THA-IDLE)的第一操作系統(tǒng)(OS_A);-包含第二組線程(THB1、THB2、THB_IDLE)的第二操作系統(tǒng)(OS_B);-用于向處理器(2)生成中斷(FIQ、IRQ、SWI)的裝置(nFIQ、nIRQ、nSWI);-檢查裝置(401、603、617),用于檢查已經到達處理器(2)的中斷(FIQ、IRQ、SWI)影響哪個線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)的執(zhí)行;-傳輸裝置(401、412、603、609、617),用于將中斷數據傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA_IDLE、THB-IDLE)有關的操作系統(tǒng)(OS_A、OS_B)。2.按照權利要求1的嵌入式系統(tǒng)(1),特征在于,所述檢查裝置(401、603、617)包含至少一個、至少部分為所述至少兩個操作系統(tǒng)(OS_A、OS_B)所公用的中斷處理程序(603、607)。3.按照權利要求1或2的嵌入式系統(tǒng)(1),特征在于,它包含移動站功能和數據處理功能,所述至少兩個操作系統(tǒng)(OS_A、OS_B)中,第一操作系統(tǒng)(OS_A)涉及移動站功能的運行,第二操作系統(tǒng)(OS_B)涉及數據處理功能的運行。4.按照權利要求3的嵌入式系統(tǒng)(1),特征在于,包含至少一個至少部分涉及移動站功能的用戶接口(UI1)和至少一個至少部分涉及數據處理功能的用戶接口(UI2)。5.按照權利要求4的嵌入式系統(tǒng)(1),特征在于,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的顯示器(10、15)。6.按照權利要求4或5的嵌入式系統(tǒng)(1),特征在于,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的數據提供裝置(9、14)。7.按照權利要求1至6的任一項的嵌入式系統(tǒng)(1),特征在于,它包含用于在沒有第一操作系統(tǒng)(OS_A)的線程(THA1、THA2、THA_IDLE)正在運行時將第一操作系統(tǒng)(OS_A)的執(zhí)行轉到第二操作系統(tǒng)(OS_B)的執(zhí)行的裝置(2,THA_IDLE)。8.按照權利要求1至7的任一項的嵌入式系統(tǒng)(1),特征在于,它包含用于在對處理器(2)的中斷(FIQ、IRQ、SWI)影響第一操作系統(tǒng)(OS_A)下的至少一個線程(THA1、THA2、THA_IDLE)的運行時從執(zhí)行第二操作系統(tǒng)(OS_B)轉而運行第一操作系統(tǒng)(OS_A)的裝置(2,SCH_A)。9.按照權利要求1至8的任一項的的嵌入式系統(tǒng)(1),特征在于,至少第一操作系統(tǒng)(OS_A)是實時操作系統(tǒng)。10.按照權利要求1至9的任一項的的嵌入式系統(tǒng)(1),特征在于,處理器(2)至少包含下列方式-用戶方式(USER方式);-特權方式(SVC方式);-不定方式(UND方式);-一個或多個中斷方式(FIQ方式、IRQ方式、SWI方式);并且安排第一操作系統(tǒng)(OS_A)至少部分地在不定方式(UND方式)中運行,安排第二操作系統(tǒng)(OS_B)至少部分地在用戶方式(USER方式)中運行,安排中斷處理程序(603、617)在某個中斷方式(FIQ方式、IRQ方式、SWI方式)中運行。11.按照權利要求1至10的任一項的嵌入式系統(tǒng)(1),特征在于,第一組線程的線程中的一個線程(THA1、THA2、THA-IDLE)包含第二操作系統(tǒng)(OS_B)。12.按照權利要求2至10的任一項的的嵌入式系統(tǒng)(1),特征在于,它包含至少兩個用于至少一個中斷(FIQ、IRQ、SWI)的中斷服務例程,并包含用于從這至少兩個中斷服務例程中選擇一個與中斷(FIQ、IRQ、SWI)一起使用的裝置(2)。13.一種用于在嵌入式系統(tǒng)(1)的處理器(2)中執(zhí)行操作系統(tǒng)(OS_A、OS_B)的方法,特征在于,在該方法中-在所述處理器(2)中執(zhí)行至少兩個操作系統(tǒng)(OS_A、OS_B);-涉及第一操作系統(tǒng)(OS_A)時,執(zhí)行第一組線程(THA1、THA2、THA_IDLE);-涉及第二操作系統(tǒng)(OS_B)時,執(zhí)行第二組線程(THB1、THB2、THB_IDLE);-向處理器(2)生成中斷(FIQ、IRQ、SWI);-檢查已經到達處理器(2)的中斷影響哪個線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)的執(zhí)行;-將處理器(2)所接收中斷(FIQ、IRQ、SWI)的信息傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)有關的操作系統(tǒng)(OS_A、OS_B)。14.按照權利要求13的方法,特征在于,在檢查處理器(2)所接收中斷(FIQ、IRQ、SWI)時,至少使用一個至少部分為至少兩個操作系統(tǒng)(OS_A、OS_B)所公用的中斷處理程序。15.按照權利要求13的方法,特征在于,在嵌入式系統(tǒng)(1)中,執(zhí)行移動站功能和數據處理功能,所述至少兩個操作系統(tǒng)(OS_A、OS_B)中,第一操作系統(tǒng)(OS_A)涉及移動站功能的執(zhí)行,第二操作系統(tǒng)(OS_B)涉及數據處理功能的執(zhí)行。16.按照權利要求15的方法,特征在于,移動站功能由第一用戶接口(UI1)使用,數據處理功能由第二用戶接口(UI2)使用。17.按照權利要求16的方法,特征在于,移動站功能和數據處理功能在至少部分公用的顯示器(10、15)上顯示。18.按照權利要求16或17的方法,特征在于,為使用移動站功能和數據處理功能,通過至少部分公用的裝置(9、14)來提供數據。19.按照權利要求13至18的任一項的方法,特征在于,在沒有第一操作系統(tǒng)(OS_A)的線程(THA1、THA2、THA_IDLE)正在運行時,進行從第一操作系統(tǒng)(OS_A)的執(zhí)行到執(zhí)行第二操作系統(tǒng)(OS_B)的轉換。20.按照權利要求13至19的任一項的方法,特征在于,在處理器(2)所接收的中斷影響第一操作系統(tǒng)(OS_A)下的至少一個線程(THA1、THA2、THA-IDLE)的執(zhí)行時,進行從第二操作系統(tǒng)(OS_B)的執(zhí)行到執(zhí)行第一操作系統(tǒng)(OS_A)的轉換。21.按照權利要求13至20的任一項的方法,特征在于,至少第一操作系統(tǒng)(OS_A)是實時操作系統(tǒng)。22.按照權利要求13至21的任一項的方法,特征在于,在第一組線程的一個線程(THA1、THA2、THA_IDLE)中執(zhí)行第二操作系統(tǒng)(OS_B)。23.按照權利要求22的方法,特征在于,為第一組線程的每個線程(THA1、THA2、THA-IDLE)確定優(yōu)先級,為了增加第二操作系統(tǒng)(OS_B)的執(zhí)行時間,可以提高其中執(zhí)行第二操作系統(tǒng)(OS_B)的線程的優(yōu)先級。24.一種包含至少一個用于運行操作系統(tǒng)(OS_A、OS_B)的處理器(2)的通信設備(1),特征在于,通信設備(1)進一步包含-用于在處理器(2)中運行至少兩個操作系統(tǒng)(OS_A、OS_B)的裝置(17、401、412);-包含第一組線程(THA1、THA2、THA-IDLE)的第一操作系統(tǒng)(OS_A);-包含第二組線程(THB1、THB2、THB_IDLE)的第二操作系統(tǒng)(OS_B);-用于向處理器(2)生成中斷(FIQ、IRQ、SWI)的裝置(nFIQ、nIRQ、nSWI);-檢查裝置(401、603、617),用于檢查已經到達處理器(2)的中斷(FIQ、IRQ、SWI)影響哪個線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)的執(zhí)行;-傳輸裝置(401、412、603、609、617),用于將中斷數據傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA_IDLE、THB_IDLE)有關的操作系統(tǒng)(OS_A、OS_B)。25.按照權利要求24的通信設備(1),特征在于,檢查裝置(401、603、617)包含至少一個、至少部分為至少兩個操作系統(tǒng)(OS_A、OS_B)所公用的中斷處理程序(603、607)。26.按照權利要求24或25的通信設備(1),特征在于,它包含移動站功能和數據處理功能,這至少兩個操作系統(tǒng)(OS_A、OS_B)中,第一操作系統(tǒng)(OS_A)涉及移動站功能的運行,第二操作系統(tǒng)(OS_B)涉及數據處理功能的運行。27.按照權利要求26的通信設備(1),特征在于,包含至少一個至少部分涉及移動站功能的用戶接口(UI1)和至少一個至少部分涉及數據處理功能的用戶接口(UI2)。28.按照權利要求27的通信設備(1),特征在于,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的顯示器(10、15)。29.按照權利要求27或28的通信設備(1),特征在于,涉及移動站功能的用戶接口(UI1)和涉及數據處理功能的用戶接口(UI2)包含至少部分公用的數據提供裝置(9、14)。30.按照權利要求24至29的任一項的通信設備(1),特征在于,它包含用于在沒有第一操作系統(tǒng)(OS_A)的線程(THA1、THA2、THA_IDLE)正在運行時將第一操作系統(tǒng)(OS_A)的執(zhí)行轉到第二操作系統(tǒng)(OS_B)的執(zhí)行的裝置(2,THA_IDLE)。31.按照權利要求24至30的任一項的通信設備(1),特征在于,它包含用于在對處理器(2)的中斷(FIQ、IRQ、SWI)影響第一操作系統(tǒng)(OS_A)下的至少一個線程(THA1、THA2、THA_IDLE)的運行時從執(zhí)行第二操作系統(tǒng)(OS_B)轉而運行第一操作系統(tǒng)(OS_A)的裝置(2,TH1_SCH_A)。32.按照權利要求24至31的任一項的的通信設備(1),特征在于,至少第一操作系統(tǒng)(OS_A)是實時操作系統(tǒng)。33.按照權利要求24至32的任一項的的通信設備(1),特征在于,處理器(2)至少包含下列方式-用戶方式(USER方式);-特權方式(SVC方式);-不定方式(UND方式);-一個或多個中斷方式(FIQ方式、IRQ方式、SWI方式);并且安排第一操作系統(tǒng)(OS_A)至少部分地在不定方式(UND方式)中運行,安排第二操作系統(tǒng)(OS_B)至少部分地在用戶方式(USER方式)中運行,安排中斷處理程序(603、617)在某個中斷方式(FIQ方式、IRQ方式、SWI方式)中運行。34.按照權利要求24至33的任一項的通信設備(1),特征在于,第一組線程的線程中的一個線程(THA1、THA2、THA_IDLE)包含第二操作系統(tǒng)(0S_B)。全文摘要一種包含至少一個用于運行操作系統(tǒng)(OS-A、OS-B)的處理器(2)的嵌入式系統(tǒng)(1)。嵌入式系統(tǒng)(1)進一步包含:用于在處理器(2)中運行至少兩個操作系統(tǒng)(OS-A、OS-B)的裝置(17、401、412);包含第一組線程(THA1、THA2、THA-IDLE)的第一操作系統(tǒng)(OS-A);包含第二組線程(THB1、THB2、THB-IDLE)的第二操作系統(tǒng)(OS-B);用于向處理器(2)生成中斷(FIQ、IRQ、SWI)的裝置(nFIQ、nIRQ、nSWI);用于檢查已經到達處理器(2)的中斷(FIQ、IRQ、SWI)影響哪個線程(THA1、THA2、THB1、THB2、THA-IDLE、THB-IDLE)的執(zhí)行的裝置(401、603、617);用于將中斷數據傳輸給與影響處理器(2)所接收中斷(FIQ、IRQ、SWI)的線程(THA1、THA2、THB1、THB2、THA-IDLE、THB-IDLE)有關的操作系統(tǒng)(OS-A、OS-B)的裝置(401、412、603、609、617)。文檔編號G06F9/48GK1294706SQ99804263公開日2001年5月9日申請日期1999年1月21日優(yōu)先權日1998年1月21日發(fā)明者R·倫凱,V·薩里寧,J·坎托拉,J·萊斯克萊,K·萊姆皮寧,A·普爾霍寧申請人:諾基亞移動電話有限公司