程序管理負責控制程序對 cpu 的訪問,如任務的建立、排程和終止等。任務排程是程序管理最核心的工作,由 linux 核心排程器來完成。linux 核心排程器根據程序的優先順序選擇最值得執行的程序。
乙個程序的可能狀態有如下幾種:
(1) 執行態——已經獲得了資源,並且程序正在被 cpu 執行。程序既可執行在核心態,也可執行在使用者態。
(2) 就緒態——當系統資源已經可用,但由於前乙個程序還沒有執行完釋放 cpu,準備進入執行狀態。
(3) 可中斷睡眠狀態——當程序處於可中斷等待狀態時,系統不會排程該程式執行。當系統產生乙個中斷或者釋放了程序正在等待的資源,或者程序收到乙個訊號,都可以被喚醒進入就緒狀態或者執行態。
(4) 不可中斷睡眠狀態——處於中斷等待狀態,但是該程序只能被使用 wake_up()函式明確喚醒的時候才可進入就緒狀態。
(5) 暫停狀態——當程序收到 sigstop、sigstp、sigttin 或者 sigttou 就會進入暫停狀態,收到 sigcont 訊號即可進入執行態。
(6) 僵死態——程序已經停止執行,但是其父程序還沒有詢問其狀態。
linux核心如何管理程序
程序 有諸多的定義,在許多的教材資料上,其定義是乙個程式的執行例項,這不無道理,也有的人認為它是程式處理所描述的所有資料結構的集合。這裡不深究其定義,如果換個角度而言,程序就好像我們人類,他們被產生,它們有自己的生命週期,儘管生命週期的長短不一,從幾毫秒至幾秒,甚至幾個月,幾年。與人類的真正區別就在...
Linux核心 程序管理
注 對linux系統來說,執行緒只是一種特殊的程序,linux不區分執行緒和程序 程序 處於執行期的程式 包含的資源 一 程序描述符及任務結構 程序存放在任務佇列 task list 的雙向迴圈鍊錶中 鍊錶中每一項型別均為task struct 程序描述符,也可表示為task t 該結構定義在inc...
Linux核心 程序管理
1 程序生命週期 某個程序通過系統呼叫fork,建立乙個用於執行程式的程序。生成此程序的程序稱為父程序,被生成的程序稱為子程序。子程序通過複製父程序的資料得以建立 父程序執行系統呼叫wait,等待子程序結束 子程序通過系統呼叫exec將程式讀取到記憶體並開始執行 當程式執行完畢後,子程序通過系統呼叫...