電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 96|回復(fù): 0
收起左側(cè)

Linux進程狀態(tài)及轉(zhuǎn)換關(guān)系

[復(fù)制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-23 08:00:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

) k5 k( I) q7 h- E% u9 T+ L  p點擊上方藍色字體,關(guān)注我們0 E7 `  r% @* k  D# f& e

% q$ z0 m4 u% `" z在 Linux 系統(tǒng)中,進程狀態(tài)及其轉(zhuǎn)換關(guān)系是進程調(diào)度和管理的核心。我們可以將這些狀態(tài)視作進程在其生命周期中所處的不同階段。: S% H  L4 g3 Z, I# w1 r
4 f: o9 ~/ t8 ^" Q2 b6 q

6 _7 @. b1 {4 l# \8 J0 k; {進程各狀態(tài)之間的切換9 Q5 k* m3 l1 E: N4 i

$ D) M1 h! U8 ]1 d9 \$ a, }1、就緒態(tài)(Ready)
9 {) v7 Q7 o) k. O3 Q: g2 S2 w1 t7 Q6 q; z4 A+ W8 C
就緒態(tài)表示進程已經(jīng)具備執(zhí)行的條件,所有資源都已準備好,但由于 CPU 正在忙于執(zhí)行其他任務(wù),進程暫時沒有獲得執(zhí)行權(quán)。/ z5 Q# i% i- S+ H

) i' E1 P3 A) b6 m, ~9 W" d2 m就緒態(tài)是動態(tài)的,當 CPU 變得空閑時,調(diào)度器會從就緒態(tài)鏈表中選擇一個進程進行執(zhí)行。1 |, r4 o9 z7 x( s6 A! G

7 Y% c' ~* e- R4 l5 x+ o轉(zhuǎn)換關(guān)系:0 J1 s$ Z8 ]$ B  S1 \$ N: p- `+ h1 J& u2 E
  • 從創(chuàng)建態(tài)進入就緒態(tài):進程在創(chuàng)建時進入就緒態(tài),等待被調(diào)度。
  • 從運行態(tài)回到就緒態(tài):當進程的時間片耗盡或 CPU 被其他更高優(yōu)先級的進程搶占,進程會回到就緒態(tài),等待下次調(diào)度。
    2 C5 W& W. B/ `
    . }. u' J1 j+ h
    2、運行態(tài)(Running)5 ^( k7 \' `$ e* R1 C" e" E$ ~# m
    運行態(tài)表示進程正在被 CPU 執(zhí)行。CPU 將按照調(diào)度算法分配給該進程時間片,允許其在有限時間內(nèi)執(zhí)行。6 W5 F9 W' t# H, r/ a/ p/ W

    / e2 x: [! a& n' F轉(zhuǎn)換關(guān)系:( V! u( S- u) |$ m  a* O5 @, C
  • 從就緒態(tài)進入運行態(tài):當調(diào)度器選中某個進程并為其分配 CPU 時,進程進入運行態(tài)。
  • 從運行態(tài)轉(zhuǎn)換到其他狀態(tài):2 R- z% b, N% W8 e1 H# a
  • 如果進程時間片耗盡,會返回到就緒態(tài)。
  • 如果進程需要等待某種資源或事件,會進入睡眠態(tài)(等待態(tài))。
  • 進程也可以通過收到信號進入暫停態(tài)。
    ( l+ w1 Y2 H; K: ?! ]6 C
    , l) j5 J( X" }2 e0 [5 Y* U
    3、僵尸態(tài)(Zombie)
    # R$ c, B3 @5 H9 q6 _6 Y: j6 C僵尸態(tài)進程(Zombie Process)是指進程已完成執(zhí)行,但其父進程尚未通過 wait() 或 waitpid() 系統(tǒng)調(diào)用獲取其退出狀態(tài)并清理資源。2 N6 k- l. y4 g5 t3 F2 W
    $ K1 c2 k( h3 O/ |6 v
    因此,進程仍然保留著一個條目以供父進程讀取其退出狀態(tài)。
    : G& O; p! s, r( }% A9 o) p) x1 Z! ^8 X; }3 ?$ X
    僵尸態(tài)進程不會消耗任何 CPU 資源,但其進程表項仍占用系統(tǒng)資源。
    ' X7 @, B# p1 _* ]1 m1 q! _, g; T! u. e4 ~% T( g
    7 d' [; L: N7 B  r
    轉(zhuǎn)換關(guān)系:' `$ o* h: r+ E+ j& A
  • 從運行態(tài)進入僵尸態(tài):當進程執(zhí)行完畢并調(diào)用 exit() 結(jié)束運行后,進入僵尸態(tài),等待父進程回收其資源。
  • 從僵尸態(tài)到消失:一旦父進程讀取子進程的退出狀態(tài),系統(tǒng)會刪除僵尸進程條目,釋放其占用的資源。/ j" }2 v, G- b$ b" z

    7 @7 E& J2 B) S* T" \2 u& P6 A1 b8 ~4、可中斷睡眠態(tài)(Interruptible Sleep)
    : d5 u* @; S% N" l7 {可中斷睡眠態(tài)是進程正在等待某一事件的發(fā)生,例如等待 I/O 操作完成。2 N, F0 W# J) ]8 c1 i& f

    - \& }" w+ M% Z! g6 ?6 i, Z! l此時進程處于睡眠狀態(tài),可以通過信號喚醒。
    . l. V, M7 L6 S9 y/ c0 |2 x' H* |: p+ Q# k$ C
    轉(zhuǎn)換關(guān)系:
    , u9 v8 u3 t8 J2 g- ~1 u
  • 從運行態(tài)進入可中斷睡眠態(tài):進程調(diào)用某些阻塞型系統(tǒng)調(diào)用(如 read() 等)等待某種外部事件時進入此狀態(tài)。
  • 從可中斷睡眠態(tài)進入就緒態(tài):當外部事件(如 I/O 完成或信號觸發(fā))發(fā)生時,進程被喚醒,進入就緒態(tài)。
    8 f" N3 E! ]  I0 S& v
    ) B5 W6 P6 i) O% k0 X, g
    5、不可中斷睡眠態(tài)(Uninterruptible Sleep)
    , U* P2 h$ f: e不可中斷睡眠態(tài)是進程等待某種無法通過信號喚醒的資源。2 N. b5 P. `2 U5 I

    * Q' _7 D4 B; y2 j) J/ }* Z& x) y例如,等待硬件操作完成時,進程會進入此狀態(tài)。此時進程不會響應(yīng)任何信號,直到所等待的事件發(fā)生。. i* q$ m" P8 P5 n% t9 Y+ O

    , g8 h" D" N- ^% G+ S  o0 T! ]轉(zhuǎn)換關(guān)系:8 \: Q4 f" I1 s0 y4 u1 c$ i! v
  • 從運行態(tài)進入不可中斷睡眠態(tài):進程等待特定資源(如硬件 I/O)時進入此狀態(tài)。
  • 從不可中斷睡眠態(tài)進入就緒態(tài):
    - y. m9 I( X& d# u& u4 J9 x當?shù)却馁Y源可用時,進程會從不可中斷睡眠態(tài)醒來,重新進入就緒態(tài)。9 d# y% c4 c  o; e

    & @  Q) o* J) p3 [4 `6、暫停態(tài)(Stopped)
    % T. |2 `" J: V暫停態(tài)是進程被暫停運行的狀態(tài),通常由接收到 SIGSTOP 信號導(dǎo)致。
    $ E1 e! G; M% ]5 x& ~# f2 |4 p7 G
    進程停止運行但沒有終止,所有的上下文信息都會被保留。
    0 y( b3 _* F. ~5 B
    ; v- h( w% ^! j轉(zhuǎn)換關(guān)系:" c$ X# V6 w5 _/ g$ O7 H7 l0 G( _
  • 從運行態(tài)或就緒態(tài)進入暫停態(tài):進程接收到 SIGSTOP 信號后會進入暫停態(tài),暫停其執(zhí)行。
  • 從暫停態(tài)回到就緒態(tài):當進程接收到 SIGCONT 信號時,進程恢復(fù)執(zhí)行并進入就緒態(tài),等待 CPU 調(diào)度。1 n  L+ E  c" t1 X4 s6 F& {
    , G+ \5 u; g$ G% y: b
    Linux 進程的狀態(tài)變化主要受 CPU 調(diào)度、系統(tǒng)調(diào)用、信號機制以及資源可用性等因素的影響。; M- p: ?5 n& u- s

    - ^* l' w9 [- l$ s; x9 D. f. d, z0 _掌握進程狀態(tài)的轉(zhuǎn)換不僅有助于理解 Linux 的調(diào)度機制,也能有效幫助調(diào)試與優(yōu)化系統(tǒng)中的進程行為。1 ~6 e. U7 o$ n1 l
    6 V: ~& s/ P$ E7 z/ R. Q, y

    : u* U& g7 p" H0 Y2 ` ; ?- x5 ^% z. |# A+ m4 ~
    點擊閱讀原文,更精彩~
  • 回復(fù)

    使用道具 舉報

    發(fā)表回復(fù)

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表