在乙個作業系統課件的ppt裡看到幾張比較有趣的關於程序狀態的,所以就亮出來,順便理一下程序狀態的轉換機制.
程序的基本狀態
1、就緒狀態(ready)
存在於處理機排程佇列中的那些程序,它們已經準備就緒,一旦得到cpu,就立即可以執行,這些程序所取的狀態為就緒狀態。(可有多個程序處於此狀態)
2、執行狀態(running)
當程序由排程/分派程式分派後,得到cpu控制權,它的程式正在執行,該程序所處的狀態為執行狀態。(在系統中,某一時刻,總只有乙個程序處於此狀態,這也就是所謂的微觀上序列。)
3、等待狀態(wait)或者阻塞狀態(blocked)
若乙個程序正在等待某個事件的發生(如等待i/o的完成),而暫停執行,這時,即使給它cpu時間,它也無法執行,則稱該程序處於等待狀態。
程序狀態轉換
在程序執行過程中,由於程序自身進展情況及外界環境的變化,這三種基本狀態可以依據一定的條件相互轉換
就緒-->執行(程序排程)
執行-->就緒(時間片到等)
執行-->等待(服務請求,如請求i/o等)
等待-->就緒(服務完成/事件來到)
就緒狀態不能轉換為等待狀態.
注:掛起(suspend)狀態未作討論.
程序概念和程序狀態
檢視程序 程序狀態 孤兒程序 執行中的程式。對於作業系統來說就是pcb程序控制塊,在linux中就是乙個task struct結構體。是作業系統對程式執行的動態描述,系統通過這個描述實現程式執行的管理和排程。要執行main這個程式,作業系統找到對應main的pcb,在pcb上讀取main執行所需要的...
linux 程序 狀態
程序在執行過程中會根據環境來改變state。linux程序有以下狀態 running 程序處於執行 它是系統的當前程序 或者準備執行狀態 它在等待系統將cpu分配給它 waiting 程序在等待乙個事件或者資源。linux將等待程序分成兩類 可中斷與不可中斷。可中斷等待程序可以被訊號中斷 不可中斷等...
程序狀態 API
1.列舉當前主機中的程序,包括程序pid,控制代碼,程式映像路徑等.2.列舉當前程序的執行緒,包括tid,控制代碼等 3.列舉程序載入的模組,包括模組映像路徑,控制代碼,位置等.4.獲取程序的記憶體使用情況,包括模組映象路徑,控制代碼,位置等.5.獲取程序的堆分配資訊,包括程序的堆,在堆上分配的記憶...