為了弄清楚正在執行的程序是什麼意思,我們需要知道程序的不同的狀態。乙個程序可以有·7個狀態(在linux核心中,程序有時也叫作任務)。
下面的狀態在fs/proc/array.c檔案中定義:
執行狀態(running)並不意味著程序一定在執行中,它表明程序要麼是在執行中要麼在執行佇列裡。睡眠狀態(sleeping)意味著程序在等待時間完成(這的睡眠有時也叫中斷睡眠(interruptible sleep))。磁碟休眠狀態(disk sleep)有時也叫不可中斷睡眠(uninterruptible sleep),在這個狀態的程序通常會等待io的結束。
死亡狀態時核心執行kernel/exit.c裡的do_exit()函式返回的狀態。這個狀態只是乙個返回狀態,你不會在任務表裡看到這個狀態。
僵死狀態(zombies)是乙個比較特殊的狀態。當程序退出並且父程序(使用wait()系統呼叫)沒有讀取到子程序退出的返回**就會產生僵死程序。僵死程序會以終止狀態儲存在程序表中,並且會一直在等待父程序讀取退出的狀態**。
下面有乙個建立維持3秒的僵死程序例子:
執行結果:
程序的狀態
三態模型 在多道程式系統中,程序在處理器上交替執行,狀態也不斷地發生變化。程序一般有3種基本狀態 執行 就緒和阻塞。1 執行 當乙個程序在處理機上執行時,則稱該程序處於執行狀態。處於此狀態的程序的數目小於等於處理器的數目,對於單處理機系統,處於執行狀態的程序只有乙個。在沒有其他程序可以執行時 如所有...
程序的狀態
執行狀態 當乙個程序在處理機上執行時,則該程序處於執行狀態。處於次狀態的程序的數目小於等於處理器的數目,在單處理系統中,處於執行態的程序只有乙個。就緒狀態 當乙個程序獲得了除cpu以外的任何資源,一旦獲得cpu,便可立即執行,則該程序處於就緒狀態。乙個系統中處於就緒狀態的程序可能有多個,通常它們按優...
程序的狀態
程序是乙個動態的實體,所以它是有生命的,從建立到消亡,是乙個程序的整個生命週期。一般有三個狀態 1.就緒態 程序已經獲得所需的其他資源,正在申請處理器資源,準備開始執行,這種情況下,稱程序處於就緒態 2.阻塞態 休眠態或者等待態 程序需要等待所需資源而放棄處理器,或者是程序不擁有處理器而且其他資源也...