您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Linux系統進程屬性該怎么分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
在Linux系統中所有運行的任務都是進程,更加準確的說,每個用戶任務,每個系統管理,都可以說是一個進程, 那么進程都有那些屬性呢?
有一段程序代碼供該程序運行。
擁有專用的系統堆棧空間。
擁有一個 task_struck 結構來實現進程控制塊(pcb)。
擁有獨立的存儲空間。
Linux 系統中的所有進程都是相互聯系的。
Linux 內核創建了進程標號為 0 和進程標號為 1 的進程,進程標號為 1 的進程是一個初始化進程 init,Linux 中的所有進程都是由其衍生而來的,在 Shell 下執行程序啟動的進程則是 Shell 進程的子進程,在用戶的啟動進程中可以再啟動自己的子進程,這樣就形成了一棵進程樹,每個進程都是樹中的一個節點,樹的根是初始化進程 init。進程之間的關系可以用圖中的親屬關系來描述,通常包括以下幾個部分。
p_opptr(祖先,original parent): 指向創建進程 P 的進程描述符,如果父進程不存在,則指向進程 init 的描述符。當一個 Shell 用戶啟動一個后臺進程并從 Shell 退出時,后臺進程將變成 init 的子進程。
p_ pptr(父進程,parent): 指向進程的父進程,值通常來說和 p_ opptr 一致,也可能不同。
p_ cptr (子進程,child): 指向進程年齡最小的子進程的描述符,即進程上一次創建的進程描述符。
p_ ysptr(弟進程,younger sibling): 指向在本進程創建之后由父進程創建的進程。
p_ osptr(兄進程,older sibling):指向在本進程創建之前由父進程創建的進程。
Linux 操作系統通常包括三種不同類型的進程。
交互進程:由一個 Shell 啟動的進程,既可以在前臺運行,也可以在后臺運行。
批處理進程:和終端沒有聯系,是一個進程序列。
守護進程:Linux 系統啟動時啟動的進程,并在后臺運行。
進程在其生存周期內可能處于以下狀態中,這些狀態是互斥的,在 task_struct 結構的狀態域中使用不同關鍵字來定義這些狀態。
可運行狀態(TASK_RUNNING):占用處理器執行或者準備執行。
可中斷的等待狀態(TASK_INTERRUPTIBLE):進程被掛起或者睡眠,當某些條件變成真的時候退出這種等待狀態,比如:硬件中斷、進程正在等待的系統資源被釋放、傳遞一個信號等,退出等待狀態之后的進程會回到 TASK_RUNNING 狀態。
不可中斷的等待狀態(TASK_ UNINTERRUPTIBLE):和可中斷的等待狀態類似,其差別是當接收到信號時并不能退出這個等待狀態。
暫停狀態(TASK_STOPPING): 進程的執行被暫停,通常來說當進程接收到 SIGSTOP、SIGTTIN 或者 SIGTTOU 信號后,進入暫停狀態。如果一個進程被另外一個進程監控時,任何信號都可以把這個進程置于 TASK_STOPPEN 狀態。
僵尸狀態(TASK_ZOMBIE):進程的執行已經被終止,但是父進程還沒有使用 wait 調用已返回的相應信息,此時內核不能丟棄包含在該進程中的相應數據,因為父進程還可能需要這些數據。
進程在這幾種狀態之間相互轉化,但對于用戶而言是透明的,這個切換的過程也常常被稱為進程的調度。
進程是一個隨執行過程不斷變化的實體,進程也包含程序計數器和所有處理器寄存器的值,同時它的堆棧中存儲著(如子程序)參數、返回地址以及變量之類的臨時數據。當前的執行程序,或者說進程,包含著當前處理器中的活動狀態。在多處理操作系統中,進程具有獨立的權限與職責。如果系統中某個進程崩潰,不會影響到其余的進程。每個進程運行在各自的虛擬地址空間中,通過一定的通信機制,它們之間才能發生聯系。
上述就是小編為大家分享的Linux系統進程屬性該怎么分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。