專利名稱:多操作系統協同工作實現方法
技術領域:
本發明涉及嵌入式操作系統領域,更具體的說,是涉及一種多操作系統協同工作實現方法。
背景技術:
隨著計算機技術的發展和人們對效率的追求,操作系統由單任務變為多任務,又由多任務變成多線程并行。而如今,除了需要不斷提高單一操作系統上程序的并行度外,越來越多的工作環境中也需要多操作系統同時運行。
虛擬化技術的出現滿足了這個要求。它允許一個平臺同時運行多個操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率,同時為程序設計人員提供了極大的便利。而實現虛擬化技術的軟件就被稱為虛擬機。
另外,由于工業、航天、遠程醫療的需要,特別是在嵌入式設備上,各種各樣實時系統也在不斷發展。所謂實時系統,即系統的正確性不僅依賴于計算結果的正確性,還取決于輸出結果時間的及時性。而判斷一個系統是否是實時主要有以下兩個指標中斷延遲和搶占延遲。
如果一個系統以上兩個指標是確定的、可預測的,那么就可以說該系統是實時的,許多實時操作系統比如RTlinux和Vxworks都支持內核可搶占,因此在這些方面都有著很高的性能。同時,一些涉及軟硬件方面的策略也可以改善實時性能,比如cache技術、關中斷和Linux2.6內核中的O(1)調度算法。
在現有的實時操作系統中,為了進一步減少實時響應的時間,所采用的技術主要有兩種第一種方法是減少系統時鐘粒度。這種方法縮短了實時任務響應的時間,但是卻提高了時鐘中斷中斷處理過程在CPU運行時間中所占的百分比,致使系統性能提升受到限制。第二種方法將系統分為實時核與非實時核兩個部分,分別處理實時任務和非實時任務。由于實時核的功能包括處理實時中斷,傳遞非實時中斷給非實時核,以及向非實時核提供硬件操作和中斷處理的虛擬接口,這就極大的提高了該實時系統的設計時間,而且設計人員葉需要對非實時核(一般為一個普通的操作系統)的底層代碼進行大量的修改,因而不利于開發和移植。同時統一的存儲空間使非實時任務的運行對實時任務的運行造成一定的影響,比如內存的換進換出,而且系統可靠性也被降低。
發明內容
本發明的主要目的在于克服現有技術中的不足,提供一種多操作系統協同工作實現方法。
為了解決上述技術問題,本發明是通過以下技術方案實現的。
一種多操作系統協同工作實現方法,包括以下步驟(1)啟動通用操作系統啟動通用操作系統,將實時系統裝載進入處理器內置的靜態隨機存儲器中,該通用操作系統繼續運行并等待實時中斷的到來;(2)接收實時中斷通用操作系統響應任意時刻到來的實時中斷,接收實時中斷并進入實時中斷處理函數,并保存實時中斷上下文;(3)保存通用操作系統的運行時關鍵信息首先用實時系統中新的實時中斷處理函數替換當前正在運行的通用操作系統的實時中斷處理函數,并保存被替換的實時中斷的入口,同時保存運行時關鍵信息,然后執行跳轉指令,進入靜態隨機存儲器中的實時系統;(4)實時系統的執行運行靜態隨機存儲器中的實時系統,完成相應實時任務;(5)實時任務運行完成,進入第二次實時中斷,準備退出實時系統第二次實時中斷到來,進入實時系統的實時中斷處理函數,保存當前實時系統的上下文,準備退出;(6)修改返回地址將進入第二次實時中斷前所保存的上下文中的返回地址改為通用操作系統在將控制權交給實時系統前所運行的地址,在實時系統中斷處理返回時恰好返回到通用操作系統的下一條指令,使該通用操作系統能夠繼續運行,繼續處理步驟(2)中該通用操作系統實時中斷的未完成部分;(7)退出中斷,返回通用操作系統
恢復第二次實時中斷的上下文,由于該上下文中的返回地址已經被修改,所以返回到通用操作系統在步驟(4)執行前的地址處,該地址的上一條指令的功能是執行跳轉進入靜態隨機存儲器,因此通用操作系統得以繼續運行;(8)退出通用操作系統實時中斷退出通用操作系統的實時中斷處理函數,恢復步驟(2)中保存的實時中斷上下文。
作為一種改進,在ARM體系結構下的通用操作系統,其運行時關鍵信息包括程序計數器、程序狀態寄存器和R0至R12寄存器。
與現有技術相比,本發明的有益效果是(1)高效性。本發明實現了在嵌入式環境下多操作系統協同工作的方法,通過將實時任務作為一個系統在高速的靜態隨機存儲器中運行,獨占CPU且邏輯上獨立于通用操作系統,有利于明確實時系統的任務和縮短實時系統響應的時間,提高該實時系統的性能。
(2)可靠性。本發明通過對非對稱中斷處理過程進行仔細的分析,適當地更改了中斷處理的過程,保證了通用操作系統在從實時系統切換回來后的正常運行。
(3)實用性。本發明提出的多操作系統協同工作實現方法,可以用在各種級別的任務和系統切換上,特別是對非對稱中斷處理過程的處理,有利于一些對中斷嵌套級別要求較深的任務的解決。
圖1是本發明的流程示意圖。
圖2是本發明實時中斷寄存器示意圖。
具體實施例方式
結合附圖,通過具體實施例對本發明進一步說明。
一種多操作系統協同工作實現方法,包括以下步驟(1)啟動通用操作系統啟動通用操作系統,將實時系統裝載進入處理器內置的靜態隨機存儲器中,該通用操作系統繼續運行并等待實時中斷的到來;(2)接收實時中斷
通用操作系統響應任意時刻到來的實時中斷,接收實時中斷并進入實時中斷處理函數,并保存實時中斷上下文;(3)保存通用操作系統的運行時關鍵信息首先用實時系統中新的實時中斷處理函數替換當前正在運行的通用操作系統的實時中斷處理函數,并保存被替換的實時中斷的入口,同時保存運行時關鍵信息,然后執行跳轉指令,進入靜態隨機存儲器中的實時系統;(4)實時系統的執行運行靜態隨機存儲器中的實時系統,完成相應實時任務;(5)實時任務運行完成,進入第二次實時中斷,準備退出實時系統第二次實時中斷到來,進入實時系統的實時中斷處理函數,保存當前實時系統的上下文,準備退出;(6)修改返回地址將進入第二次實時中斷前所保存的上下文中的返回地址改為通用操作系統在將控制權交給實時系統前所運行的地址,在實時系統中斷處理返回時恰好返回到通用操作系統的下一條指令,使該通用操作系統能夠繼續運行,繼續處理步驟(2)中該通用操作系統實時中斷的未完成部分;(7)退出中斷,返回通用操作系統恢復第二次實時中斷的上下文,由于該上下文中的返回地址已經被修改,所以返回到通用操作系統在步驟(4)執行前的地址處,該地址的上一條指令的功能是執行跳轉進入靜態隨機存儲器,因此通用操作系統得以繼續運行;(8)退出通用操作系統實時中斷退出通用操作系統的實時中斷處理函數,恢復步驟(2)中保存的實時中斷上下文。
下面詳細介紹本發明所述的多操作系統協同工作的實現方法,該方法的實現步驟如下(1)啟動通用操作系統啟動通用操作系統,比如Linux操作系統,將實時系統裝載進入處理器內置的靜態隨機存儲器中,該通用操作系統繼續運行并等待實時中斷的到來;(2)接收實時中斷通用操作系統響應任意時刻到來的實時中斷,接收實時中斷并進入實時中斷處理函數,保存實時中斷上下文,比如處理器地址指針、處理器模式以及與該模式向對應的堆棧地址。本過程由通用操作系統自動處理。
其中,包括兩個主要步驟
A、保存用戶模式上下文。首先進入中斷模式(IRQ),進入Vector_IRQ部分進行處理,同時硬件自動把用戶模式(USR)下的程序計數器(PC)和處理器狀態寄存器(CPSR)保存在中斷態下的寄存器lr_irq和spsr_irq中,然后分別保存在.Lcsirq指向的內存里,供以后使用。這兩個寄存器保存了中斷后實際要返回的地址和返回后應該恢復的程序狀態寄存器的值。然后進入_svc_irq,并同時將模式轉換到系統模式(SVC)。
B、保存系統模式上下文。實時中斷上下文共有18個寄存器,如圖2所示。其中sp_svc表示進入系統模式(SVC)的堆棧初始指針,sp表示要傳給中斷處理程序的結構Struct pt_regs*regs指針地址,即實時中斷的上下文。其中sp=sp_svc-72。然后獲得中斷向量號,放入寄存器R0,并把sp放入R1中,調用asm_do_IRQ(),進入真正的中斷處理函數asm_do_IRQ,然后進入實時中斷處理函數。
(3)保存原有系統的運行時關鍵信息A、用實時系統中新的實時中斷處理函數替換當前正在運行的通用操作系統的實時中斷處理函數,并保存當前實時中斷函數的入口。
B、保存運行時關鍵信息。ARM體系結構下的通用操作系統的運行時關鍵信息包括程序計數器(PC)、處理器狀態寄存器(CPSR)和R0至R12寄存器。
C、執行跳轉指令,進入靜態隨機存儲器運行。
(4)實時系統的執行運行靜態隨機存儲器中的實時系統,完成相應任務。
(5)實時任務運行完成,進入第二次實時中斷,準備退出實時系統實時任務運行完成后通知實時系統進入第二次實時中斷,即已經替換后的實時系統的實時中斷響應函數,這是在第一次通用操作系統實時中斷未完全退出的情況下第二次進入實時中斷處理函數,在本次實時中斷處理中,需要保存當前實時系統的上下文,準備退出。本步驟由通用操作系統自動處理。
(6)修改返回地址A、恢復以前的實時中斷處理函數。
B、把第一次保存的當前程序計數器(PC)、處理器狀態寄存器(CPSR)和R0至R12寄存器保存到第二次實時中斷的上下文里,即修改第二次實時中斷的返回地址(原返回地址為靜態隨機存儲器里的實時系統代碼部分),使之在中斷結束后不返回到靜態隨機存儲器里,而是進入第一次實時中斷里執行跳轉前的下一條指令。
(7)退出中斷,返回通用操作系統恢復第二次實時中斷的上下文,由于該上下文中的返回地址已經被修改,所以返回到通用操作系統在步驟(4)執行前的地址處,該地址的上一條指令的功能是執行跳轉進入靜態隨機存儲器,因此該通用操作系統得以繼續運行,繼續處理步驟(2)中該通用操作系統實時中斷的未完成部分。
(8)退出通用操作系統的實時中斷處理函數,恢復步驟(2)中保存的實時中斷上下文,比如處理器地址指針、處理器模式以及與該模式向對應的堆棧地址。
本發明所述的多操作系統協同工作實現方法,其主要功能利用了嵌入式處理器的片內隨機靜態存儲器存取的高效性,將實時操作系統放置在其中運行,提高了實時系統的性能。并通過對arm體系結構下Linux系統中斷處理特點的研究,克服了非對稱中斷處理的困難,并為此開發了一種操作系統級的切換技術,用于通用操作系統和實時系統之間的切換。本方法具有很強的通用性,可以在各級別的切換技術中使用。
最后,還需要注意的是,以上列舉的僅是本發明的具體實施例子。顯然,本發明不限于以上實施例子,還可以有許多變形。本領域的普通技術人員能從本發明公開的內容直接導出或聯想到的所有變形,均應認為是本發明的保護范圍。
權利要求
1.一種多操作系統協同工作實現方法,其特征在于,包括以下步驟(1)啟動通用操作系統啟動通用操作系統,將實時系統裝載進入處理器內置的靜態隨機存儲器中,該通用操作系統繼續運行并等待實時中斷的到來;(2)接收實時中斷通用操作系統響應任意時刻到來的實時中斷,接收實時中斷并進入實時中斷處理函數,并保存實時中斷上下文;(3)保存通用操作系統的運行時關鍵信息首先用實時系統中新的實時中斷處理函數替換當前正在運行的通用操作系統的實時中斷處理函數,并保存被替換的實時中斷的入口,同時保存運行時關鍵信息,然后執行跳轉指令,進入靜態隨機存儲器中的實時系統;(4)實時系統的執行運行靜態隨機存儲器中的實時系統,完成相應實時任務;(5)實時任務運行完成,進入第二次實時中斷,準備退出實時系統第二次實時中斷到來,進入實時系統的實時中斷處理函數,保存當前實時系統的上下文,準備退出;(6)修改返回地址將進入第二次實時中斷前所保存的上下文中的返回地址改為通用操作系統在將控制權交給實時系統前所運行的地址,在實時系統中斷處理返回時恰好返回到通用操作系統的下一條指令,使該通用操作系統能夠繼續運行,繼續處理步驟(2)中該通用操作系統實時中斷的未完成部分;(7)退出中斷,返回通用操作系統恢復第二次實時中斷的上下文,由于該上下文中的返回地址已經被修改,所以返回到通用操作系統在步驟(4)執行前的地址處,該地址的上一條指令的功能是執行跳轉進入靜態隨機存儲器,因此通用操作系統得以繼續運行;(8)退出通用操作系統實時中斷退出通用操作系統的實時中斷處理函數,恢復步驟(2)中保存的實時中斷上下文。
2.根據權利要求1所述的多操作系統協同工作實現方法,其特征在于,在ARM體系結構下的通用操作系統,其運行時關鍵信息包括程序計數器、程序狀態寄存器和R0至R12寄存器。
全文摘要
本發明涉及嵌入式操作系統領域,旨在提供一種多操作系統協同工作實現方法。該方法包括以下步驟(1)啟動通用操作系統,裝載實時系統(2)接收實時中斷;(3)保存通用操作系統的運行時關鍵信息;(4)實時系統的執行;(5)實時任務運行完成,進入第二次實時中斷,準備退出實時系統;(6)修改返回地址;(7)退出中斷,返回通用操作系統;(8)退出通用操作系統實時中斷。本方法通過將實時任務作為一個系統在高速的靜態隨機存儲器中運行,使實時系統具有高效性;適當地更改了對非對稱中斷處理的過程,保證了通用操作系統在從實時系統切換回來后的正常運行;可以用在各種級別的任務和系統切換上,實用性強。
文檔編號G06F9/445GK101051282SQ200710068438
公開日2007年10月10日 申請日期2007年5月9日 優先權日2007年5月9日
發明者陳天洲, 張楠, 胡威, 馬吉軍 申請人:浙江大學