10taskkill無法終止程序 程序的狀態轉換

2021-10-16 04:00:07 字數 2275 閱讀 4656

一、程序的狀態和轉換

按程序在執行過程中的不同情況至少要定義三種狀態:

引起程序狀態轉換的具體原因如下:

​執行態→等待態:等待使用資源;如等待外設傳輸;等待人工干預。

​等待態→就緒態:資源得到滿足;如外設傳輸結束;人工干預完成。

​執行態→就緒態:執行時間片到;出現有更高優先權程序。

​就緒態—→執行態:cpu 空閒時選擇乙個就緒程序。

五態模型在三態模型的基礎上增加了新建態(new)和終止態(exit)。

引起程序狀態轉換的具體原因如下:

​null→新建態:執行乙個程式,建立乙個子程序。

​新建態→就緒態:當作業系統完成了程序建立的必要操作,並且當前系統的效能和虛擬記憶體的容量均允許。

​執行態→終止態:當乙個程序到達了自然結束點,或是出現了無法克服的錯誤,或是被作業系統所終結,或是被其他有終止權的程序所終結。

​執行態→就緒態:執行時間片到;出現有更高優先權程序。

​執行態→等待態:等待使用資源;如等待外設傳輸;等待人工干預。

​就緒態→終止態:未在狀態轉換圖中顯示,但某些作業系統允許父程序終結子程序。

​等待態→終止態:未在狀態轉換圖中顯示,但某些作業系統允許父程序終結子程序。

​終止態→null:完成善後操作。

三態模型和五態模型都是假設所有程序都在記憶體中的事實上有序不斷的建立程序,當系統資源尤其是記憶體資源已經不能滿足程序執行的要求時,必須把某些程序掛起(suspend),對換到磁碟對換區中,釋放它占有的某些資源,暫時不參與低階排程。起到平滑系統操作負荷的目的。

引起程序掛起的原因是多樣的,主要有:

1.終端使用者的請求。當終端使用者在自己的程式執行期間發現有可疑問題時,希望暫停使自己的程式靜止下來。亦即,使正在執行的程序暫停執行;若此時使用者程序正處於就緒狀態而未執行,則該程序暫不接受排程,以便使用者研究其執**況或對程式進行修改。我們把這種靜止狀態成為「掛起狀態」。 2.父程序的請求。有時父程序希望掛起自己的某個子程序,以便考察和修改子程序,或者協調各子程序間的活動。 3.負荷調節的需要。當實時系統中的工作負荷較重,已可能影響到對實時任務的控制時,可由系統把一些不重要的程序掛起,以保證系統能正常執行。 4.作業系統的需要。作業系統有時希望掛起某些程序,以便檢查執行中的資源使用情況或進行記賬。 5.對換的需要。為了緩和記憶體緊張的情況,將記憶體中處於阻塞狀態的程序換至外存上。

七態模型在五態模型的基礎上增加了掛起就緒態(ready suspend)和掛起等待態(blocked suspend)。

引起程序狀態轉換的具體原因如下:

​等待態→掛起等待態:作業系統根據當前資源狀況和效能要求,可以決定把等待態程序對換出去成為掛起等待態。

​掛起等待態→掛起就緒態:引起程序等待的事件發生之後,相應的掛起等待態程序將轉換為掛起就緒態

​掛起就緒態→就緒態:當記憶體中沒有就緒態程序,或者掛起就緒態程序具有比就緒態程序更高的優先順序,系統將把掛起就緒態程序轉換成就緒態。

​就緒態→掛起就緒態:作業系統根據當前資源狀況和效能要求,也可以決定把就緒態程序對換出去成為掛起就緒態。

​掛起等待態→等待態:當乙個程序等待乙個事件時,原則上不需要把它調入記憶體。但是在下面一種情況下,這一狀態變化是可能的。當乙個程序退出後,主存已經有了一大塊自由空間,而某個掛起等待態程序具有較高的優先順序並且作業系統已經得知導致它阻塞的事件即將結束,此時便發生了這一狀態變化。

​執行態→掛起就緒態:當乙個具有較高優先順序的掛起等待態程序的等待事件結束後,它需要搶占 cpu,而此時主存空間不夠,從而可能導致正在執行的程序轉化為掛起就緒態。另外處於執行態的程序也可以自己掛起自己。

​新建態→掛起就緒態:考慮到系統當前資源狀況和效能要求,可以決定新建的程序將被對換出去成為掛起就緒態。

掛起程序等同於不在記憶體中的程序,因此掛起程序將不參與低階排程直到它們被調換進記憶體。

掛起程序具有如下特徵:

(如有錯誤,還望指正)

程序的終止

系統呼叫exit 實現程序的終止。exit 在linux系統函式庫stdlib.h中的函式宣告如下 void exit int status exit 只有乙個引數status,稱作程序的退出狀態,父程序可以使用它的低8位。exit 的返回值通常用於指出程序所完成任務的成敗。如果成功,則返回0 如果...

程序的終止

通常採用exit來結束乙個程序 相應的函式呼叫為 include void exit int status int atexit void function void int on exit void function int void void arg void abort void includ...

程序的終止

有五種方法使程序終止 1.正常終止 1 在main函式內執行return語句,這等效於呼叫exit。2 呼叫exit函式。此函式由ansi c定義,其操作包括呼叫各終止處理程式,然後關閉所有標準i o流等。3 呼叫 exit系統呼叫函式,此函式由exit呼叫。2.異常終止 1 呼叫abort。2 由...