程序狀態轉移

2022-07-16 07:42:08 字數 1116 閱讀 5786

程序在其宣告週期內,由於系統中各個程序之間的相互制約關係及系統的執行環境的變化,使得程序的狀態也在不斷發生變化,即乙個程序會經歷不同的狀態

1. 執行狀態

程序在處理器上執行。在單處理器環境下,同一時刻只有乙個程序在執行

2. 就緒狀態

程序處於準備執行的狀態。程序獲得了除處理器之外的所有所需資源,只等分給時間片執行

3. 阻塞狀態

程序等待某一事件而暫停執行。比如等待鍵盤輸入。這個時候,即使處理器可用,程序也不能執行

4. 建立狀態

程序正在被建立,還沒有轉為就緒狀態。建立程序通常需要:申請乙個空的pcb,並向pcb中填寫控制資訊和管理程序的資訊;然後系統為該程序分配執行所需要的資源;最後把該程序轉為就緒狀態

5. 結束狀態

程序從系統中消失。可能是程序正常結束或者其它原因中斷退出

當程序需要結束執行時,系統首先設定該程序的結束狀態,然後進行資源釋放和**

就緒狀態是程序僅僅缺少處理器,只要獲得處理器時間分片就可以立即執行

等待狀態是程序需要其它資源(處理處理器)或等待某一事件。

之所以把處理器和其它資源劃分開,是因為在分時系統的時間片輪換機制中,每個程序分到的時間片是若干毫秒,程序得到的處理器時間很短而且很頻繁,程序在執行過程中實際上是頻繁的轉換到就緒狀態的。而其它資源(外設)或等待某一事件發生(i/o)物件的時間相對較長,程序轉換到等待狀態的次數也較少

1. 就緒 --> 執行

就緒狀態的程序被排程後,獲得處理器資源,開始執行

2. 執行 --> 就緒

執行中的程序時間片用完後讓出處理器。在可剝奪作業系統中,當有更高優先順序的程序處於就緒狀態時,排程程式將正在執行的程序轉為就緒狀態,讓更高優先順序的程序執行

3. 執行 --> 阻塞

當程序請求某一資源或等待某一事件發生,它就從執行狀態轉為阻塞狀態。程序以系統呼叫的形式請求作業系統提供服務,這是一種特殊的、由執行使用者態程式呼叫作業系統核心過程的形式。

4. 阻塞 --> 就緒

當程序請求的資源可用(被其他程序釋放)或者等待的事件到來時,中斷處理程式將相應的程序由阻塞狀態轉換為就緒狀態。

TCP狀態轉移

tcp狀態轉移,一共存在11個狀態,請看下圖 1.closed 起始點,在超時或者連線關閉時候進入此狀態。2.listen svr端在等待連線過來時候的狀態,svr端為此要呼叫socket,bind,listen函式,就能進入此狀態。此稱為應用程式被動開啟 等待客戶端來連線 3.syn sent 客...

TCP狀態轉移

被動開啟 active open 客戶端通過connect發起主動開啟。客戶端通過connect連線伺服器,客戶端tcp將傳送乙個syn包,告訴伺服器客戶端將在待建立連線傳送資料的初始序列號。客戶端 closed syn sent 伺服器端必須ack客戶端syn,同時傳送乙個syn,告訴客戶端,伺服...

TCP狀態轉移

1 伺服器程式執行,listen監聽之後伺服器進入listen狀態,等待客戶端的連線 2 當伺服器監聽到服務請求 接收到同步報文段 會傳送syn同步報文段和確認報文段,並進入syn rcvd狀態。3 當伺服器接收到客戶端返回的ack確認報文段,伺服器進入established狀態 情況一 4 當伺服...