進程(process)是程序在執行過程中的一個動態實例,是系統進行資源分配和調度的基本單位。讓我們詳細區分進程和程序,并探討在windows和linux系統中的進程管理。
進程與程序的區別
1.0 程序是一組靜態的指令集合;而進程則是程序的動態執行過程,具有生命周期,是動態生成和終止的。程序無法直接申請系統資源,不能被系統調度,也不能作為獨立運行的單位,因此它不占用系統運行的資源。
2.0 程序和進程之間沒有一一對應的關系。
xp進程.png
進程情況.png
Linux系統中的進程屬性
與Windows系統類似,Linux中也總是有許多進程在運行。每個進程都有一個唯一的識別號,稱為PID(進程ID),用于區分不同的進程。進程還具有其他屬性,如擁有者ID、進程名、進程狀態、父進程ID以及運行時間等。
從Linux操作系統的啟動過程來看,系統啟動后的第一個進程是init,其PID為1。init是唯一一個由系統內核直接運行的進程,新的進程可以通過fork命令生成。
進程的狀態
進程狀態.gif
- 就緒狀態:進程已經獲得除CPU之外的所有運行所需資源。
- 運行狀態:進程正在占用CPU運行。
- 等待狀態:進程正在等待某個事件或資源。
- 掛起狀態:正在運行的進程由于某種原因失去CPU而暫停運行。
- 終止狀態:進程已經結束。
- 休眠狀態:進程主動暫時停止運行。
- 僵死狀態:進程已經停止運行,但相關控制信息仍保留。
進程的優先級
Linux系統中,所有的進程根據其狀態按時間順序排列,形成不同的隊列。進程的優先級范圍為-20到19之間的整數,數值越小,優先級越高。
進程的類型
進程控制命令
ps [選項] -a 顯示當前終端所有進程 -A 顯示系統所有進程,包括其他用戶進程和系統進程信息 -u 顯示包括進程擁有者在內的詳細信息
ps.png
pstree [選項] -a 顯示啟動進程的命令行 -n 按照進程號進行排序
pstree.png
top.png
kill [選項] PID kill % 作業號 終止正在運行的進程或作業。 -15 正常結束 -9 強制終止進程 -1 重新加載配置文件
nice -n 優先數 命令名 在進程運行前,更改優先級 renice 優先數 PID 在進程運行中更改優先級
參考文章
- Linux 殺死進程方法大全(kill,killall)
- Linux kill命令詳解
- Linux進程狀態及轉換關系
- Linux上進程狀態查詢