天天看點

程序的狀态轉換和線程的狀态轉換

轉載文章:資源來源于網絡

手打用于了解和補充,原文位址如下:

https://blog.csdn.net/sdr_zd/article/details/78748497

程序狀态轉換五态模型

程式的狀态轉換和線程的狀态轉換

建立态(new):是一個程序剛剛被建立的狀态。處于建立态的程序,并沒有被送出執行,而是在等待作業系統完成建立程序的必要操作,作業系統有時将根據系統性能或主存容量的限制推遲建立态程序的送出。

建立一個程序要通過兩個步驟:

  • 為一個新程序建立必要的管理資訊。
  • 讓該程序進入就緒态。

就緒态(ready):是程序具備運作條件,等待系統配置設定處理器運作的狀态。

運作态(running):是程序占有處理器正在運作的狀态。

等待态(blocked):是程序不具備運作條件,正在等待某個事件的完成。

終止态(terminated):是程序結束運作的狀态。進入終止态的程序以後不再執行,但依然保留在作業系統中等待其他程序完成對終态程序資訊的抽取,之後作業系統删除該程序。

程序的終止需要兩個步驟:

  • 需要經過等待作業系統的善後
  • 程序退出主存

引起程序狀态改變的原因

NULL—建立态:執行一個程式,建立一個子程序
建立态—就緒态:作業系統完成了程序建立的必要操作,并且目前系統的性能和虛拟記憶體的容量均允許。
就緒态—運作态:CPU空閑時選擇一個就緒程序。
運作态—就緒态:時間片使用完;出現了優先級更高的程序,剝奪系統資源。
運作态—終止态:當一個程序到達了自然結束點,或是出現了無法克服的錯誤,或是被作業系統所終結,或是被其他有終止權的程序所終結。
終止态—NULL:作業系統完成善後操作,删除此程序。
運作态—等待态:等待使用資源;如等待通路外設資源;等待人工幹預等
等待态—就緒态:資源得到滿足;如外設資源處于空閑狀态;人工幹預完成等
           

程序狀态轉化的三态模型和七态模型請參考文章起始位置連結。

線程狀态轉換

以下資源來自咕泡公開課

線程的6種狀态

  • New(初始狀态)
  • Runnable (ready/running 通過start方法啟動一個線程時,并不會立刻運作,而是由OS排程)
  • Blocked 阻塞(線程因為某種原因放棄CPU使用權)
  • Waiting
  • Time_waiting
  • Terminated
    程式的狀态轉換和線程的狀态轉換

繼續閱讀