Linux 程序的概念2

2021-10-04 22:43:07 字數 1275 閱讀 7639

#include #include int main()

以上述**為例:

pid_t pid = fork()

pid_t其實就是乙個int型別的變數,用來表示程序的id,fork()返回乙個程序id,這個程序id賦值給pid

這個語句複製呼叫程序(父程序),建立了乙個新的程序(子程序)

父程序在建立子程序成功後,程式計數器走到建立子程序的下一步指令,因此子程序是在fork建立子程序成功後開始呼叫

fork()的返回值:對於父程序來說:返回的是子程序的id,是大於0的

對於子程序來說:返回的都是0

gitpid()獲取呼叫程序的id

根據fork()的返回值不同,進行判斷可以實現父子程序**分流

檢視程序資訊: ps -ef 或者 ps -aux

程序的狀態有三類:就緒,執行,阻塞

linux下程序的狀態:

可執行狀態(r):正在執行/只要拿到時間片就可以執行 -----這種程序排程到cpu上進行處理

可中斷休眠狀態(s):當前處於休眠狀態,這種休眠可以被打斷

不可中斷休眠狀態(d):當前處於休眠狀態,這種休眠不可以被打斷

停止狀態(t):什麼事都不幹

退出狀態 -->程序成為殭屍程序(z):程序已經退出,但是資源沒有完全釋放是處於的一種狀態,等待後續的處理

這裡只是簡單的介紹一下各種狀態,想要詳細了解可以在我的部落格中查閱 程序的狀態

處於退出狀態,但是資源沒有資源沒有完全的釋放,等待父程序「收屍」

危害:資源洩露 :使用者能建立的程序是有限的,殭屍程序過多會導致建立新的子程序的失敗從而導致不可預估後果!!

核心資源:核心中的pcb沒有被 **

產生:給程序設定殭屍狀態的目的是維護子程序的資訊,以便父程序在以後某個時間獲取。這些資訊包括子程序的程序id、終止狀態以及資源利用資訊(cpu時間,記憶體 使用量等等)。如果乙個程序終止,而該程序有子程序處於殭屍狀態,那麼它的所有殭屍子程序的父程序id將被重置為1(init程序)。繼承這些子程序的 init程序將清理它們(init程序將wait它們,從而去除殭屍狀態)。

之所以產生殭屍程序是因為子程序先於父程序退出,而父程序沒有獲取維護子程序的資訊,則該子程序就成為殭屍程序。

避免:父程序一直等待子程序的退出

linux程序概念2

書接上文,在這篇部落格中介紹一下程序狀態。乙個程序可以有幾個狀態 r執行狀態 running 並不意味著程序一定在執行中,它表明程序要麼是在執行中要麼在執行佇列裡。s睡眠狀態 sleeping 意味著程序在等待事件完成 這裡的睡眠有時候也叫做可中斷睡眠 interruptible sleep d磁碟...

Linux 程序的概念

程序根據字面意思,無非就是正在執行或者正在執行的程式。但是在核心觀點上理解,它就是擔任分配系統資源的實體。在linux中,每乙個程序都由task struct 資料結構來定義,而它就是我們常說的pcb process control block 它是對程序控制的唯一手段,也是最有效的手段,他對被裝載...

Linux 程序的概念

1 程序的概念 正在執行的程式 由一條條指令構成 資料 資源 2 作業系統對程序的管理 僵死程序 殭屍程序 程序實體已經釋放,但pcb結點並沒有被釋放 退出碼 在pcb 有退出碼才會退出 1 概念 乙個程序執行結束,但是程序的pcb沒有被系統釋放程序結束後,在pcb中還要儲存程序的退出碼,以備其父程...