進程資源和進程狀態 TASK_RUNNING TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE

來源:互聯網
上載者:User

標籤:進程資源   進程狀態   task_running   task_interruptible   task_uninterruptible   

摘要:本文主要介紹進程資源和進程狀態.進程資源由兩部分組成:核心空間進程資源以及使用者空間進程資源.進程狀態,就緒/運行狀態、等待狀態(可以被中斷打斷)、等待狀態(不可以被中斷打斷)、停止狀態和僵死狀態.

1.進程資源    進程是Linux系統下資源管理的基本單位,每個進程都有自己的獨立的Runspace.為了更好的管理Linux所訪問的資源,系統引入了進程式控制制(PCB)的概念,PCB結構體.
    進程資源由兩部分組成:核心空間進程資源以及使用者空間進程資源.
    核心空間進程資源:指的就是PCB相關資訊.包括進程式控制制塊本身、開啟的檔案表項、目前的目錄、當前終端資訊、線程基本資料、可訪問記憶體位址、PID、PPID、UID、EUID等,也就是說核心通過PCB可以訪問到進程所有的資源.這些資源只能通過系統調用才能訪問到.進程退出後,資源由另一進程來回收.
    使用者空間進程資源:通過成員mm_struct映射的記憶體空間.實質就是進程的程式碼片段、資料區段、堆、棧、以及可以共用訪問的庫的記憶體空間.這些資源進程可以直接存取.在進程退出時主動釋放.在進程運行時,可以通過檔案 /proc/{pid}/maps來產看可以訪問的地址空間.
2.進程狀態    人生三大錯覺之一:QQ、暴風影音、瀏覽器等可以一起運行,難道進程是並行啟動並執行.非也非也.對於單CPU系統來說在某一時刻,只能有一個進程處於運行狀態,佔有CPU的使用權,其他進程都處於其他狀態,等待系統資源,各進程根據調度演算法在某些狀態之間不停地的切換.但由於CPU處理效率較快,使使用者感覺不到其中的變化.
    在Linux2.6核心中,使用者級進程擁有以下幾種狀態:就緒/運行狀態、等待狀態(可以被中斷打斷)、等待狀態(不可以被中斷打斷)、停止狀態和僵死狀態.
TASK_RUNNING:正在運行或處於就緒狀態:就緒狀態是指進程申請到了CPU以外的其他所有資源,正所謂:萬事俱備,只欠東風.提醒:一般的作業系統教科書將正在CPU上執行的進程定義為RUNNING狀態、而將可執行但是尚未被調度執行的進程定義為READY狀態,這兩種狀態在Linux下統一為 TASK_RUNNING狀態.
TASK_INTERRUPTIBLE:處於等待隊伍中,等待資源有效時喚醒(比如等待鍵盤輸入、socket串連、訊號等等),但可以被中斷喚醒.一般情況下,進程列表中的絕大多數進程都處於TASK_INTERRUPTIBLE狀態.畢竟皇帝只有一個(單個CPU時),後宮佳麗幾千;如果不是絕大多數進程都在睡眠,CPU又怎麼響應得過來.
TASK_UNINTERRUPTIBLE:處於等待隊伍中,等待資源有效時喚醒(比如等待鍵盤輸入、socket串連、訊號等等),但不可以被中斷喚醒.
TASK_ZOMBIE:僵死狀態,進程資源使用者空間被釋放,但核心中的進程PCB並沒有釋放,等待父進程回收.
TASK_STOPPED:進程被外部程式暫停(如收到SIGSTOP訊號,進程會進入到TASK_STOPPED狀態),當再次允許時繼續執行(進程收到SIGCONT訊號,進入TASK_RUNNING狀態),因此處於這一狀態的進程可以被喚醒.
使用者級進程之間的狀態切換關係2所示.
 
圖2 使用者進程狀態切換圖

筆者:個人能力有限,只是學習參考...讀者若發現文中錯誤,敬請提出.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------勿在浮沙築高台,靜下心來,慢慢地沉澱---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

進程資源和進程狀態 TASK_RUNNING TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.