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