程序概念和程序狀態

2021-10-22 16:57:31 字數 2028 閱讀 9309

檢視程序

程序狀態

孤兒程序

執行中的程式。

對於作業系統來說就是pcb程序控制塊,在linux中就是乙個task_struct結構體。

是作業系統對程式執行的動態描述,系統通過這個描述實現程式執行的管理和排程。

要執行main這個程式,作業系統找到對應main的pcb,在pcb上讀取main執行所需要的的資訊,載入到cpu上,cpu就開始執行這個程式了。

(task_struct內容)

上下文資料:程序執行時處理器的暫存器中的資料。

程序id:用於標識程序的唯一數值。

i/o資訊:包括顯示的i/o請求,分配給程序的i/o裝置和被程序使用的檔案列表。

程序優先順序:相對於其他程序的優先順序。

程序狀態:執行態,可中斷休眠態,不可中斷休眠態,死亡態,殭屍態……

可以通過/proc、top 、ps等指令檢視程序狀態。

程序id:pid

父程序id:ppid

printf

("pid = %d\n"

,getpid()

);printf

("ppid = %d\n"

,getppid()

);

通過返回值來區分父子程序:

返回值為0時,表示子程序。

返回值大於0時,表示父程序,且返回值為新建立的子程序的pid。

返回值小於0時,表示fork出現錯誤。

#include

#include

intmain()

else

return0;

}

執行態r:不一定表示程序正在執行中,表明程序在執行中或者在執行佇列裡。

可中斷休眠態s: 可以被中斷的休眠狀態,滿足喚醒條件或者休眠被中斷進入執行態。

不可中斷休眠態d:不能被中斷的休眠態,滿足喚醒條件進入執行態。

停止態t:程式停止執行(會被排程)

殭屍態z:程序已經退出不再排程了,但是程序的資源還沒被釋放等待處理的狀態

是處於殭屍態的程序,是一種退出了,資源還沒完全釋放的程序。

產生過程:

子程序先於父程序退出,父程序沒有關注到子程序的退出,系統不會完全釋放子程序的資源,子程序進入殭屍態。

子程序退出後,在pcb中儲存了自己的退出返回值,在父程序沒有關注處理的情況下,pcb資源不會被釋放。

讓父程序休息30s後退出,在另乙個終端檢視程序狀態。子程序退出,父程序休眠沒有關注到子程序退出,子程序進入殭屍態

危害資源洩露:

pcb的資源沒法被釋放

使用者能建立的程序數有限

父程序先於子程序退出,子程序會成為孤兒程序,執行在後台,父程序成為一號程序。

發現pid為6080的子程序還在後台執行,s態。

Linux下的程序概念,程序狀態和程序等待

程序就是乙個pcb process control block 是作業系統對執行中程式的描述,通過這個描述實現對執行中程式的排程管理,linux下pcb是乙個task struct結構體,task struct是linux核心的一種資料結構。task struct結構體中的內容 包括記憶體指標,上下...

Linux 程序概念以及程序狀態理解

2 程序狀態 2.2 孤兒程序 2.3 守護程序 精靈程序 程序是乙個pcb 程序控制塊 是乙個執行程式中的描述 在linux下是乙個task struct結構體,通過這個結構體實現作業系統對執行中程式的排程管理。1.1 task struct結構體 task struct結構體是linux核心中的...

殭屍程序和孤兒程序 概念

這裡僅給出殭屍程序和孤兒程序的概念。深入了解計算機系統 原書第3版 和網上的部落格,下面會給出部落格 前言 子程序 當乙個程序由於某種原因終止時,核心並不是立即把它從系統中清除。相反,程序被保持在一種已終止的狀態中,直到被它的父程序 reaped 當父程序 已終止的子程序時,核心將子程序的退出狀態傳...