日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【Linux】进程概念 —— 进程状态

發布時間:2024/3/12 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Linux】进程概念 —— 进程状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一.操作系統理論中的進程狀態

二.Linux系統中的進程狀態

0.前臺進程與后臺進程

1.R - 運行狀態(Running)

2.S - 睡眠狀態(Sleeping)

3.D - 磁盤睡眠(Disk Sleep)

4.T - 暫停狀態(Stopped)

5.t - 調試狀態(Tracing Stopped)

6.X - 死亡狀態(Dead)?

7.Z - 僵尸狀態(Zombie)


一.操作系統理論中的進程狀態

1.新建態:字面意思,一個進程剛剛被新建出來,還沒有加入到任何隊列中

2.運行態:task_struct在運行隊列中等待CPU執行

3.阻塞態:等待非CPU資源,例如:等待鍵盤輸入就緒,等待網卡等各種非CPU資源...

4.掛起態:內存不足時,OS會挑選需要等待資源時間過長的進程先換出到磁盤(SWAP分區),此時只是將內容和數據換出到磁盤,task_struct仍然還在內存中,當掛起態需要被運行時,先要進行換入內存操作,再添加到運行隊列等待。

5.終止態:字面意思

內存到磁盤換入換出的過程就是I/O的過程,這個過程很浪費時間

掛起所做的事其實本質就是用時間來換取空間

二.Linux系統中的進程狀態

Linux內核中對于狀態的標識與定義

0.前臺進程與后臺進程

進程分為前臺進程和后臺進程,狀態符號后帶有“+”說明是前臺進程

前臺進程:運行時會占用Shell進程,使Shell無法運行,可以使用ctrl+c結束進程

后臺進程:運行時不會影響Shell進程,ctrl+c沒有用,可以使用kill -9 進程pid殺掉

例如:./process為將進程當作前臺進程運行

? ? ? ? ? ?./process &為將進程當作后臺進程運行

1.R - 運行狀態(Running)

進程在運行中或者進程在運行隊列里

對應操作系統理念中的運行態

2.S - 睡眠狀態(Sleeping)

進程在等待事件完成,在等待某種資源(S狀態也可稱為可中斷睡眠)

對應操作系統中的阻塞態/掛起態

3.D - 磁盤睡眠(Disk Sleep)

深度睡眠,不可被中斷,不可被被動喚醒

當服務器壓力過大時,OS會通過一定的手段,殺掉一些進程,來起到節省空間的作用!

如果是S狀態時,可以被OS殺掉;

如果是D狀態時,不能被OS殺掉,OS無法插手,只能等進程自動醒來;

dd命令可以模擬出D狀態的進程

4.T - 暫停狀態(Stopped)

5.t - 調試狀態(Tracing Stopped)

6.X - 死亡狀態(Dead)?

一個進程退出且被檢測好回收后,就是X狀態

該狀態不好捕捉,如果有大量結束的進程都在等待OS回收,才可觀察到,瞬時性非常強

7.Z - 僵尸狀態(Zombie)

此時一個進程已經退出,還不允許被回收釋放,處于一個檢測狀態

維持這個狀態,等待OS或者父進程檢測后來進行回收。

Z與X狀態的結合就是操作系統理論的終止狀態

以上例子,子進程先于父進程結束,處于一個待檢測狀態,但父進程還沒有調用系統調用,也就是還沒有讀取到子進程退出時的返回值,這時子進程就是一個僵尸進程

總結:

只要子進程退出,父進程還沒有退出,且父進程還沒有讀取到子進程的狀態代碼(子進程返回值),子進程就會進入僵尸狀態,成為一個僵尸進程,等待父進程讀取退出狀態代碼。

僵尸進程的危害:

子進程一直處于Z狀態,無法被回收

維護退出狀態本身要用數據維護,task_struct就需要一直維護

最終結果就是:PCB需要一直維護狀態,內存資源也一直被占用,發生內存泄漏!

總結

以上是生活随笔為你收集整理的【Linux】进程概念 —— 进程状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。