Linux 程序的概念

2021-09-02 13:55:49 字數 2178 閱讀 2969

程序根據字面意思,無非就是正在執行或者正在執行的程式。

但是在核心觀點上理解,它就是擔任分配系統資源的實體。

在linux中,每乙個程序都由task_struct 資料結構來定義,而它就是我們常說的pcb(process control block),它是對程序控制的唯一手段,也是最有效的手段,他對被裝載到ram裡幷包含這程序的資訊。

task_struct內容的簡述:

程序的狀態:記錄程序的狀態,等待,執行或者阻塞等等

識別符號:描述本程序的唯一識別符號,用來區別其他程序

優先順序:和其他程序相比優先順序的大小

記憶體指標:指向程式執行的**和資料

上下文資料:cpu在對程序進行切換排程時,儲存資料

io狀態資訊:包含顯示的io請求,分配給程序的io裝置和被程序使用的檔案列表

記賬資訊 :可能包括處理器時間總和,使用的時鐘總和,時間限制,記賬號等

其他資訊

ps   -ef    檢視所有的程序資訊

ps   -ef|grep   ***(可執行的程式)   檢視某乙個可執行程式具體的程序資訊                               

ps aux    檢視的比較詳細

top         能夠實時顯示系統中各個程序的資源占用狀況

getpid     系統呼叫介面,在**中獲取程序pid

我們通常使用fork指令來建立乙個程序,我們可以使用man fork來了解linux下fork的相關概念。

使用fork系統呼叫通過複製呼叫程序來建立乙個新的程序,呼叫程序我們稱之為父程序

建立出來的新程序稱之為子程序

fork函式對於父程序來說,返回值是子程序的pid

對於子程序來說,返回值是0;

因為子程序是以父程序為模板來建立的,因此父子程序的**段是完全一樣的,也就是說他們執行的程式是一樣的,我們使用者就是通過對返回值的判斷來分辨父子程序,來進行**分流,父子程序返回值不同,公用同乙個**段,但是他們的資料並不共用。

#include#include#includeint main()

else if(ret == 0)else

sleep(1);

return 0;

}

我們在linux核心種可以看到程序的不同狀態。

r  running      (執行狀態)         並不意味著程序一定在執行,它表明程序要麼在執行當中,要麼在執行佇列之中

s  sleeping     (睡眠狀態)         程序在等待時間完成  

d  disk sleep  (磁碟休眠狀態) 也可以叫作不可中斷睡眠狀態,在這個狀態的程序通常會等待io的結束

t  stopped     (停止狀態)         可以通過傳送sigstop訊號來停止程序,這個暫停的程序可以通過傳送sigcont讓程序繼續執行

x  dead         (死亡狀態)         這是乙個返回狀態,不會再任務列表中看到

(1)殭屍程序

產生原因:子程序先於父程序退出,它要保留退出原因在pcd中,incident退出後不會釋放所有資源,子程序退出後作業系統會通知父程序                     這個家屬說子程序退出了,你去獲取一下原因,然後完全釋放子程序資源,假如父程序不管子程序的退出狀態,那麼這個子進                      程將進入將死狀態,,成為殭屍程序。

z+狀態就是殭屍態

危害:父程序建立了子程序,但是沒有**,這個殭屍程序一直佔著資源,沒有釋放,就造成了資源的洩漏。

(2)孤兒程序

父程序先於子程序退出,子程序將成為孤兒程序。 父程序變成init程序,子程序如果後來退出了,init程序將負責釋放資源,init程序

將負責釋放資源,所以孤兒程序最後不會變成殭屍程序。

#include#include#includeint main()

else if(id==0)

else

return 0;

}

Linux 程序的概念

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

Linux程序的概念

呼叫fork函式後,會建立乙個子程序,並且父子兩個程序都從fork處執行,fork函式有兩個返回值,對於父程序會返回子程序的pid,此時pid會大於0,對於子程序來說,pid會等於0。include 獲取子程序的狀態 include 獲取子程序的狀態 include 程序標頭檔案 include i...

Linux 程序概念

任何計算機系統都包含乙個基本的程式集合,成為作業系統 os 它包括 作業系統是管管理的軟體 使用者操作 使用者操作介面 shell,lib,指令等 作業系統 驅動程式 硬體 作業系統管理硬體 系統呼叫 在開發者角度,作業系統會對外表現為乙個整體,但是會暴露自己的一部分介面供上層開發者使用,這部分由作...