linux系統之進程管理詳解

1、進程與線程的概念

來源百度百科:

進程(Process) 是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。 在當代面向線程設計的計算機結構中,進程是線程的容器。程序是指令、數據及其組織形式的描述,進程是程序的實體。是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。程序是指令、數據及其組織形式的描述,進程是程序的實體。

線程(thread) 是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以並發多個線程,每條線程並行執行不同的任務。

2、什麼是進程管理

到底什麼是進程呢?

進程是正在執行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,並占用一定的系統資源。

那麼什麼是程序呢?
程序是人使用計算機語言編寫的可以實現特定目標或解決特定問題的代碼集合。

那我們換一種說法:

程序是人使用計算機語言編寫的,可以實現一定功能,並且可以執行的代碼集合。進程是正在執行中的程序。程序被執行時,執行人的權限和屬性、以及程序的代碼都會被加載如內存,操作系統給這個進程分配一個ID號,我們成為PID(進程ID)

3、進程管理的作用

判斷服務器健康狀態:運維工程師最主要的工作就是保證服務器安全穩定的運行。理想的狀態是,在服務器出現問題,但是還沒有造成服務器宕機或停止服務時,就人為幹預解決瞭問題。進程管理最主要的工作就是判斷服務器當前運行是否健康,是否需要人為幹預。如果服務器的CPU占用率、內存占用率過高,就需要人為介入解決問題瞭。

查看系統中所有的進程:我們需要查看系統中所有正在運行的進程,通過這些進程可以判斷系統中運行瞭哪些服務,是否有非法服務運行。

殺死進程:這是進程管理中最不常用的手段,當我需要停止服務時,會通過正確關閉命令來停止服務(如apache服務可以通過service httpd stop來關閉)。隻有當正確終止進程的手段失效的情況下,才會考慮使用kill命令殺死進程(你不是殺手,不要什麼進程都用kill來終止,否則非常容易導致服務器崩潰)

4、Linux進程的幾種狀態

D:不可被喚醒的睡眠狀態,通常用於I/O情況。

R:該進程正在運行。

S:該進程在睡眠狀態,可被喚醒。

T:停止狀態,可能是在後臺暫停或進程在除錯狀態。

W:內存交互狀態(從2.6內核開始無效)。

X:死掉的進程(應該不會出現)。

Z:僵屍進程。進程已經終止,但是部分程序還在內存當中。

<:高優先級(以下狀態在BSD格式當中出現)。

N:低優先級。

L:被鎖入內存。

s:包含子進程。

l:多線程(小寫L)。

+:位於後臺。

5、進程與線程的關系

(1)線程與進程的關系

比如電腦同時進行著200個進程:

線程與進程概念線程: 每個進程中至少包含一個線程,而這些線程都在共享進程的資源空間等,當線程發生變化的時候隻會引起CPU執行的過程發生變化,不會改變進程所擁有的資源。同理一個程序中至少包含一個進程。進程中執行運算的最小單位,亦是執行處理機調度的基本單位進程: 每個進程都有自己的地址空間,資源如,內存,I/O,CPU,同一個進程裡的 線程共享本進程裡的地址空間,那能不能使用別人傢進程的地址空間呢,顯然這是不可以的。由於進程的獨立性,當某一個進程崩潰之後,在保護模式下不會對別的進程進行影響。資源分配的基本單位,運行調度的基本單位,系統中並發執行的單位。

兩者的比較調度
同一個進程中,線程的切換不會引起進程的切換。
由一個進程的線程切換到另一個線程的進程時,引起進程的切換。並發性
進程可以並發執行,而一個進程中的線程也可以並發執行。擁有的資源
一般來說,線程並不會擁有自己的資源,但是它可以訪問自己本進程中的資源。比如,一個進程打開的文件等,進程中的其他線程是可以共享的。

(2)總結

我們簡單總結下:

進程:指在系統中正在運行的一個應用程序,程序一旦運行就是進程,進程是資源分配的最小單位。線程:系統分配處理器時間資源的基本單元,或者說進程之內獨立執行的一個單元執行流,線程是程序執行的最小單位。

到此這篇關於linux系統之進程管理詳解的文章就介紹到這瞭,更多相關linux進程管理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: