專利名稱:Java操作系統中進程的實現和進程狀態轉換的方法
技術領域:
本發明涉及Java操作系統,尤其是涉及一種Java操作系統中進程的實現和進程狀態轉換的方法。
背景技術:
操作系統的進程是對正在運行的程序的抽象,是一種數據結構,目的在于清晰地刻畫動態系統的內在規律,有效管理和調度進入計算機系統主存儲器運行的程序。
進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動,由數據結構以及在其上執行的程序(語句序列)組成,是程序在這個數據集合上的運行過程,也是操作系統進行資源分配和保護的基本單位。它具有如下屬性●(結構性)進程包含了數據集合和運行于其上的程序。
●(共享性)同一程序同時運行于不同數據集合上時,構成不同的進程。或者說,多個不同的進程可以共享相同的程序。
●(動態性)進程是程序在數據集合上的一次執行過程,是動態概念,同時,它還有生命周期,由創建而產生,由撤銷而消亡。
●(獨立性)進程既是系統中資源分配和保護的基本單位,也是系統調度的獨立單位。凡是未建立進程的程序,都不能作為獨立單位參與運行。
●(制約性)并發進程之間存在著制約性,進程在進行的關鍵點上需要相互等待或互通消息,以保證程序執行的可再現性。
●(并發性)進程可以并發地執行。對于一個單處理器的系統來說,m個進程P1,P2,…,Pm是輪流占用處理器并發地執行。例如可能是這樣進行的,進程P1執行了n1條指令后讓出處理器給P2,P2執行了n2條指令后讓出處理器給P3,…,Pm執行了nm條指令后讓出處理器給P1,…。因此,進程的執行是可以被打斷的,或者說,進程執行完一條指令后在執行下一條指令前,可能被迫讓出處理器,由其它若干個進程執行若干條指令后才能再獲得處理器而執行。
發明內容
為了對正在Java操作系統中運行的程序做出抽象,清晰地刻畫動態系統的內在規律,有效管理和調度在Java操作系統中運行的程序,本發明的目的在于提供一種Java操作系統中進程的實現和進程狀態轉換的方法。
本發明解決技術問題所采用的技術方案是一種Java操作系統中進程的實現和進程狀態轉換的方法,為了便于管理進程,按進程在執行過程中的不同狀況,Java操作系統定義不同的進程狀態●新建態對應于Java進程剛剛被創建的狀態;●運行態Java進程占有處理器正在運行;●就緒態Java進程具備運行條件,等待系統分配處理器以便運行;●等待態Java進程不具備運行條件,正在等待某個事件的完成;●掛起就緒態和掛起等待態Java進程對換到磁盤鏡像區中,暫時不參與進程調度;●終止態Java進程以后不再執行。
2、進程狀態轉換的具體方式如下空NULL—→新建態執行一個程序,創建一個子進程;新建態—→就緒態Java操作系統完成了進程創建的必要操作,并且當前系統的性能和虛擬內存的容量均允許,提交到就緒態隊列;新建態—→掛起就緒態考慮到系統當前資源狀況和性能要求,可以決定新建的進程將被對換出去成為掛起就緒態;掛起就緒態—→就緒態當內存中沒有就緒態進程,或者掛起就緒態進程具有比就緒態進程更高的優先級,系統將把掛起就緒態進程轉換成就緒態;就緒態—→掛起就緒態Java操作系統根據當前資源狀況和性能要求,也可以決定把就緒態進程將被對換出去成為掛起就緒態;就緒態—→運行態Java操作系統在就緒態進程隊列里面選中一個進程,在中心處理器中運行;運行態—→終止態當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結;運行態—→掛起就緒態當一個具有較高優先級的掛起等待態進程的等待事件結束后,它需要搶占了中心處理器,,而此時主存空間有不夠,從而可能導致正在運行的進程轉化為掛起就緒態。另外處于運行態的進程也可以自己掛起自己;終止態—→空NULL完成善后操作,退出執行;就緒態—→終止態Java操作系統中允許父進程終結子進程;等待態—→終止態Java操作系統中操作系統允許父進程終結子進程;
等待態—→掛起等待態如果當前不存在就緒進程,那么至少有一個等待態進程將被對換出去成為掛起等待態;操作系統根據當前資源狀況和性能要求,也可以決定把等待態進程將被對換出去成為掛起等待態;掛起等待態—→掛起就緒態引起進程等待的事件發生之后,相應的掛起等待態進程將轉換為掛起就緒態;掛起等待態—→等待態當一個進程等待一個事件時,原則上時不需要把它調入內存的。但是當一個進程退出后,主存已經有了一大塊自由空間,而某個掛起等待態進程具有較高的優先級并且操作系統已經得知導致它阻塞的事件即將結束,此時便發生了這一狀態變化。
本發明具有的有益效果是首先,在Java操作系統中這種進程實現和建立狀態的方法,清晰刻畫了進程的每一個狀態,在某一個特定時刻,一個特定的進程只能處于一個特定的狀態;其次,進程狀態轉換沿著固定的路線和狀態導向進行,對于特定的觸發條件和系統環境,Java操作系統中的進程向特定的狀態進行狀態切換。本Java操作系統的設計方案嚴格遵循了背景中所提及的進程結構性、共享性、動態性、獨立性、制約性、并發性的特點,在Java操作系統的實現中得到了巨大的靈活性和可控制性。
附圖是本發明的流程圖。
具體實施例方式
1、一種應用于Java操作系統中進程實現和建立狀態的方法,其特征在于為了便于管理進程,按進程在執行過程中的不同狀況,Java操作系統定義不同的進程狀態●新建態(new)對應于Java進程剛剛被創建的狀態。
●運行態(running)Java進程占有處理器正在運行。
●就緒態(ready)Java進程具備運行條件,等待系統分配處理器以便運行。
●等待態(blocked)Java進程不具備運行條件,正在等待某個事件的完成。
●掛起(suspend)Java進程對換到磁盤鏡像區中,暫時不參與進程調度●終止態(exit)Java進程以后不再執行一個Java進程在創建后將處于就緒狀態。每個進程在執行過程中,任一時刻當且僅當處于上述狀態之一。同時在一個進程執行過程中,它的狀態將會發生改變。運行狀態的進程將由于出現等待事件而進入的等待狀態,當等待事件結束之后等待狀態的進程將進入就緒狀態,而處理器的調度策略又會引起運行狀態和就緒狀態之間的切換。
新建態對應于Java進程剛剛被創建的狀態。創建一個進程要通過兩個步驟,首先是為一個新進程創建必要的管理信息,然后是讓該進程進入就緒態。此時進程將處于新建態,它并沒有被提交執行,而是在等待操作系統完成創建進程的必要操作。Java操作系統有時將根據系統性能或主存容量的限制推遲新建態Java進程的提交。
進程的終止通過兩個步驟,首先是等待操作系統進行善后,然后退出主存。當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結,將進入終止態。進入終止態的進程以后不再執行,但依然臨時保留在操作系統中等待善后。一旦其他進程完成了對終止態進程的信息抽取之后,Java操作系統建刪除該進程。
由于進程的不斷創建,系統的資源已經不能滿足進程運行的要求,這個時候就必須把某些進程掛起(suspend),對換到磁盤鏡像區中,暫時不參與進程調度,起到平滑系統操作負荷的目的。
2、按照
所示,進程狀態轉換的具體方式如下在具有掛起進程功能的Java操作系統中,進程增加了兩個新狀態掛起就緒態(ready,suspend)和掛起等待態(blocked,suspend)。掛起就緒態表明了進程具備運行條件但目前在二級存儲器中,只有當它被對換到主存才能被調度執行。掛起等待態表明了進程正在等待某一個事件且在二級存儲器中。
空NULL—→新建態執行一個程序,創建一個子進程。
新建態—→就緒態Java操作系統完成了進程創建的必要操作,并且當前系統的性能和虛擬內存的容量均允許,提交到就緒態隊列。
新建態—→掛起就緒態考慮到系統當前資源狀況和性能要求,可以決定新建的進程將被對換出去成為掛起就緒態。
掛起就緒態—→就緒態當內存中沒有就緒態進程,或者掛起就緒態進程具有比就緒態進程更高的優先級,系統將把掛起就緒態進程轉換成就緒態。
就緒態—→掛起就緒態Java操作系統根據當前資源狀況和性能要求,也可以決定把就緒態進程將被對換出去成為掛起就緒態。
就緒態—→運行態Java操作系統在就緒態進程隊列里面選中一個進程,在中心處理器中運行。
運行態—→終止態當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結。
運行態—→掛起就緒態當一個具有較高優先級的掛起等待態進程的等待事件結束后,它需要搶占了中心處理器,,而此時主存空間有不夠,從而可能導致正在運行的進程轉化為掛起就緒態。另外處于運行態的進程也可以自己掛起自己。
終止態—→空NULL完成善后操作,退出執行。
就緒態—→終止態Java操作系統中允許父進程終結子進程。
等待態—→終止態Java操作系統中操作系統允許父進程終結子進程。
等待態—→掛起等待態如果當前不存在就緒進程,那么至少有一個等待態進程將被對換出去成為掛起等待態;操作系統根據當前資源狀況和性能要求,也可以決定把等待態進程將被對換出去成為掛起等待態。
掛起等待態—→掛起就緒態引起進程等待的事件發生之后,相應的掛起等待態進程將轉換為掛起就緒態。
掛起等待態—→等待態當一個進程等待一個事件時,原則上時不需要把它調入內存的。但是當一個進程退出后,主存已經有了一大塊自由空間,而某個掛起等待態進程具有較高的優先級并且操作系統已經得知導致它阻塞的事件即將結束,此時便發生了這一狀態變化。
引起進程掛起的原因是多樣的,主要有●操作系統中的進程0均處于等待狀態,處理器空閑,此時需要把一些進程對換出去,以騰出足夠的內存裝入就緒進程運行。
●進程競爭資源,導致系統資源不足,負荷過重,此時需要掛起部分進程以調整系統負荷。
●把一些定期執行的進程(如審計程序、監控程序、記賬程序)對換出去,以減輕系統負荷。
●用戶要求掛起自己的進程,以根據中間執行情況和中間結果進行某些調試、檢查和改正。
●父進程要求掛起自己的后代進程,以進行某些檢查和改正。
●當系統出現故障或某些功能受到破壞時,需要掛起某些進程以排除故障。
Java操作系統把一個掛起進程等同于不在主存的進程,因此掛起的進程將不參與進程調度直到它們被對換進主存。一個掛起進程具有如下特征
●該進程不能立即被執行。
●掛起進程可能會等待一個事件,但所等待的事件是獨立于掛起條件的,事件結束并不能導致進程具備執行條件。
●進程進入掛起狀態是由于操作系統、父進程或進程本身阻止它的運行。
●結束進程掛起狀態的命令只能通過操作系統或父進程發出。
本Java操作系統軟件已經向中華人民共和國版權局申請計算機軟件著作權登記。
權利要求
1.一種Java操作系統中進程的實現和進程狀態轉換的方法,其特征在于為了便于管理進程,按進程在執行過程中的不同狀況,Java操作系統定義不同的進程狀態●新建態對應于Java進程剛剛被創建的狀態;●運行態Java進程占有處理器正在運行;●就緒態Java進程具備運行條件,等待系統分配處理器以便運行;●等待態Java進程不具備運行條件,正在等待某個事件的完成;●掛起就緒態和掛起等待態Java進程對換到磁盤鏡像區中,暫時不參與進程調度;●終止態Java進程以后不再執行。
2.進程狀態轉換的具體方式如下空NULL—→新建態執行一個程序,創建一個子進程;新建態—→就緒態Java操作系統完成了進程創建的必要操作,并且當前系統的性能和虛擬內存的容量均允許,提交到就緒態隊列;新建態—→掛起就緒態考慮到系統當前資源狀況和性能要求,可以決定新建的進程將被對換出去成為掛起就緒態;掛起就緒態—→就緒態當內存中沒有就緒態進程,或者掛起就緒態進程具有比就緒態進程更高的優先級,系統將把掛起就緒態進程轉換成就緒態;就緒態—→掛起就緒態Java操作系統根據當前資源狀況和性能要求,也可以決定把就緒態進程將被對換出去成為掛起就緒態;就緒態—→運行態Java操作系統在就緒態進程隊列里面選中一個進程,在中心處理器中運行;運行態—→終止態當一個進程到達了自然結束點,或是出現了無法克服的錯誤,或是被操作系統所終結,或是被其他有終止權的進程所終結;運行態—→掛起就緒態當一個具有較高優先級的掛起等待態進程的等待事件結束后,它需要搶占了中心處理器,,而此時主存空間有不夠,從而可能導致正在運行的進程轉化為掛起就緒態。另外處于運行態的進程也可以自己掛起自己;終止態—→空NULL完成善后操作,退出執行;就緒態—→終止態Java操作系統中允許父進程終結子進程;等待態—→終止態Java操作系統中操作系統允許父進程終結子進程;等待態—→掛起等待態如果當前不存在就緒進程,那么至少有一個等待態進程將被對換出去成為掛起等待態;操作系統根據當前資源狀況和性能要求,也可以決定把等待態進程將被對換出去成為掛起等待態;掛起等待態—→掛起就緒態引起進程等待的事件發生之后,相應的掛起等待態進程將轉換為掛起就緒態;掛起等待態—→等待態當一個進程等待一個事件時,原則上時不需要把它調入內存的。但是當一個進程退出后,主存已經有了一大塊自由空間,而某個掛起等待態進程具有較高的優先級并且操作系統已經得知導致它阻塞的事件即將結束,此時便發生了這一狀態變化。
全文摘要
本發明公開了一種應用于Java操作系統中進程的實現和進程狀態轉換的方法。在Java操作系統中,定義了原子化的七個不同的進程狀態新建態、運行態、就緒態、等待態、掛起就緒、掛起等待、終止態,并且Java操作系統中的進程可以按照系統條件和狀態,根據設定的進程狀態切換條件,進行明確的狀態切換。這一方法在突出了Java操作系統中進程在安全性、靈活性方面的優勢,從整體上提高了Java操作系統的運行速度,特別是在嵌入式平臺這類本身硬件運行速度不是很快時,更具有明顯的效果。
文檔編號G06F9/46GK1804806SQ200610049099
公開日2006年7月19日 申請日期2006年1月16日 優先權日2006年1月16日
發明者陳天洲, 戴鴻君, 黃彧 申請人:浙江大學