linux中的進(jìn)程一般分為“交互進(jìn)程”、“批處理進(jìn)程”、“監(jiān)控進(jìn)程”三類。交互進(jìn)程是由一個Shell啟動的進(jìn)程;交互進(jìn)程既可以在前臺運行,也可以在后臺運行。批處理進(jìn)程和終端沒有聯(lián)系,是一個進(jìn)程序列。監(jiān)控進(jìn)程也稱守護(hù)進(jìn)程,是一個在后臺運行且不受任何終端控制的特殊進(jìn)程,用于執(zhí)行特定的系統(tǒng)任務(wù)。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
什么是進(jìn)程
進(jìn)程是正在執(zhí)行的一個程序或命令,每個進(jìn)程都是一個運行的實體,都有自己的地址空間,并占用一定的系統(tǒng)資源。程序一旦運行就是進(jìn)程。
進(jìn)程可以看成程序執(zhí)行的一個實例。進(jìn)程是系統(tǒng)資源分配的獨立實體,每個進(jìn)程都擁有獨立的地址空間。一個進(jìn)程無法訪問另一個進(jìn)程的變量和數(shù)據(jù)結(jié)構(gòu),如果想讓一個進(jìn)程訪問另一個進(jìn)程的資源,需要使用進(jìn)程間通信,比如管道,文件,套接字等。
進(jìn)程分類
在Linux操作系統(tǒng)中,進(jìn)程大致可以分為3中不同的類型,每種進(jìn)程都有自己的特點和屬性。
-
交互進(jìn)程:由一個Shell啟動的進(jìn)程,交互進(jìn)程既可以在前臺運行,也可以在后臺運行。
-
批處理進(jìn)程:這種進(jìn)程和終端沒有聯(lián)系,是一個進(jìn)程序列。
-
監(jiān)控進(jìn)程:也稱守護(hù)進(jìn)程,是一個在后臺運行且不受任何終端控制的特殊進(jìn)程,用于執(zhí)行特定的系統(tǒng)任務(wù)。
進(jìn)程的組成
一個進(jìn)程包含內(nèi)核中的一部分地址空間和一系列數(shù)據(jù)結(jié)構(gòu)。其中地址空間是內(nèi)核標(biāo)記的一部分內(nèi)存以供進(jìn)程使用,而數(shù)據(jù)結(jié)構(gòu)則用來紀(jì)錄每個進(jìn)程的具體信息。
最主要的進(jìn)程信息包括:
-
進(jìn)程的地址空間圖
-
進(jìn)程當(dāng)前的狀態(tài)( sleeping、stopped、runnable 等)
-
進(jìn)程的執(zhí)行優(yōu)先級
-
進(jìn)程調(diào)用的資源信息
-
進(jìn)程打開的文件和網(wǎng)絡(luò)端口信息
-
進(jìn)程的信號掩碼(指明哪種信號被屏蔽)
-
進(jìn)程的屬主
進(jìn)程的狀態(tài)
可運行狀態(tài)
:此時進(jìn)程正在運行或者正在運行隊列中等待準(zhǔn)備運行等待狀態(tài)(阻塞狀態(tài))
:此時進(jìn)程在等待一個事件的發(fā)生或某種系統(tǒng)資源。在Linux系統(tǒng)中等待狀態(tài)又細(xì)分為兩種等待狀態(tài):可中斷的等待狀態(tài)和不可中斷的等待狀態(tài)-
可中斷的等待狀態(tài)
:處于可中斷的等待狀態(tài)的進(jìn)程可以被某一信號中斷
-
不可中斷的等待狀態(tài)
:處于不可中斷的等待狀態(tài)的進(jìn)程不受信號的打擾,將一直等待事件的發(fā)生或等待某種系統(tǒng)資源
暫停狀態(tài)
:處于暫停狀態(tài)的進(jìn)程被暫停運行僵死狀態(tài)
:每個進(jìn)程在運行結(jié)束后都會處于僵死狀態(tài),等待父進(jìn)程調(diào)用進(jìn)而釋放系統(tǒng)資源,處于該狀態(tài)的進(jìn)程已經(jīng)運行結(jié)束,但是它的父進(jìn)程還沒有釋放其系統(tǒng)資源