linux核心學習筆記—-進程狀態

來源:互聯網
上載者:User

進程描述符中的state欄位描述了進程當前所處的狀態,它有一組標誌組成,每個標誌描述一種可能的進程狀態,這些狀態是互斥的,也就是說在同一時刻,只能設定一個狀態

 

一、運行狀態:TASK_RUNNING,進程要麼在CPU上運行,要麼準備執行

二、可中斷的等待狀態:TASK_INTERRUPTIBLE,進程被掛起,直到收到某個訊息,喚醒該進程

三、不可中斷的等待狀態:TASK_UNINTERRUPTIBLE ,當等待的條件為真時,並不能改變當前進程的狀態

四、暫停狀態:TASK_STOPPED,當執行的進程收到暫停訊號時,進入暫停狀態

五、跟蹤狀態:TASK_TRACED,進程的執行由debugger程式暫停,當一個進程被另一個進程監控時,任何訊號都可以把這個進程設定為跟蹤狀態

還有兩個狀態既可以存放在進程描述符的state欄位中,也可以放在exit_state欄位中,從這兩個進程的名字可以看出,只有進程終止時,才有可能進入這兩種狀態

六、僵死狀態:EXIT_ZOMBIE,進程的執行被終止,但是,父進程還沒有發布wait4()和waitpid()系統調用來返回有關死亡進程的資訊。之前,核心不能丟棄包含在死進程描述符中的資料,父進程還有可能需要它

七、僵死撤銷狀態:EXIT_DEAD,最終狀態,父進程已經發布了wait4()和waitpid()系統調用,因而系統由系統刪除,為了防止其他執行線程也在同一進程上執行wait()系統調用,所以把進程的狀態由僵死狀態改完僵死撤銷狀態

State欄位的值通常用一個簡單的指派陳述式設定:

p->state=TASK_RUNNING;

核心也使用set_task_state和set_current_state()宏,他們分別設定指定進程的狀態和當前進程的狀態。o宏宏

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.