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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux 进程状态详解

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

目的

為了對進程從產生到消亡的整個過程進行跟蹤和描述,就需要定義各種進程的各種狀態并制定相應的狀態轉換策略,以此來控制進程的運行。

粗略分類

  • ???????運行態:進程占用 CPU,并在 CPU 上運行;
  • ???????就緒態:進程已經具備運行條件,但是 CPU 還沒有分配過來;
  • ???????阻塞態:進程因等待某件事發生而暫時不能運行;
  • 當然理論上上述三種狀態之間轉換分為六種情況;

  • 運行 → 就緒:這是有調度引起的,主要是進程占用 CPU 的時間已耗盡。
  • 就緒 → 運行:當前運行的進程的時間片用完,調度就從就緒隊列中選擇合適的進程分配給 CPU。
  • 運行 → 阻塞:發生了 I/O 請求或等待某件事的發生。
  • 阻塞 → 就緒:進程所等待的事件發生,就進入就緒隊列。
  • 以上4種情況可以相互正常轉換,不是還有兩種情況嗎?

  • 阻塞 → 運行:即使給阻塞進程分配 CPU,也無法執行,操作系統進行調度時不會從阻塞隊列進行挑選,其調度的選擇對象為就緒隊列
  • 就緒 → 阻塞:因為就緒態根本就沒有執行,何來進入阻塞態??
  • 詳細分類

    現在知道了進程的三種基本狀態,但是在操作系統具體現實中,設計者可以根據實際情況設置不同的狀態,這樣以來就出現了以下幾種狀態:

  • 可運行態:運行態和就緒態的合并,表示進程正在運行或準備運行,Linux 中使用 TASK_RUNNING 宏表示此狀態。
  • 淺度睡眠態:進程正在睡眠(被阻塞),等待資源到來是喚醒,也可以通過其他進程信號或時鐘中斷喚醒,進入運行隊列。Linux 使用 TASK_INTERRUPTIBLE 宏表示此狀態。
  • 深度睡眠態:其和淺度睡眠基本類似,但有一點就是不可其他進程信號或時鐘中斷喚醒。Linux 使用 TASK_UNINTERRUPTIBLE 宏表示此狀態。
  • 暫停狀態:進程暫停執行接受某種處理。如正在接受調試的進程處于這種狀態,Linux 使用 TASK_STOPPED 宏表示此狀態。
  • 僵死狀態:進程已經結束但未釋放 PCB,Linux 使用 TASK_ZOMBIE 宏表示此狀態。
  • 我們可以來看下以上宏在內核中的定義:

    #define TASK_RUNNING??????????? 0 #define TASK_INTERRUPTIBLE????? 1 #define TASK_UNINTERRUPTIBLE??? 2 #define __TASK_STOPPED????????? 4 #define __TASK_TRACED?????????? 8 /* in tsk->exit_state */進程的退出狀態 #define EXIT_ZOMBIE???????????? 16 #define EXIT_DEAD?????????????? 32 /* in tsk->state again */我理解為進程的喚醒狀態 #define TASK_DEAD?????????????? 64 #define TASK_WAKEKILL?????????? 128 #define TASK_WAKING???????????? 256 #define TASK_STATE_MAX????????? 512 #define TASK_STATE_TO_CHAR_STR "RSDTtZXxKW"

    LINUX進程間狀態轉換和內核調用圖

    ?

    (SAW:Game Over!)

    總結

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

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