Kernel

方括號中的程序是否以與其他程序相同的方式調度?

  • August 19, 2020

ps(1),使用該-f選項,將輸出方括號中沒有相關命令行的程序,如下所示:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Aug28 ?        00:07:42 /sbin/init
root         2     0  0 Aug28 ?        00:00:01 [kthreadd]
root         3     2  0 Aug28 ?        00:00:00 [rcu_gp]
root         4     2  0 Aug28 ?        00:00:00 [rcu_par_gp]
root         6     2  0 Aug28 ?        00:00:00 [kworker/0:0H-kblockd]
root         8     2  0 Aug28 ?        00:00:00 [mm_percpu_wq]
root         9     2  0 Aug28 ?        00:02:14 [ksoftirqd/0]
root        10     2  0 Aug28 ?        00:05:33 [rcu_preempt]
root        11     2  0 Aug28 ?        00:01:36 [rcuc/0]
root        12     2  0 Aug28 ?        00:00:00 [rcub/0]
root        13     2  0 Aug28 ?        00:00:07 [migration/0]
root        14     2  0 Aug28 ?        00:00:00 [idle_inject/0]
root        16     2  0 Aug28 ?        00:00:00 [cpuhp/0]
root        17     2  0 Aug28 ?        00:00:00 [cpuhp/1]
root        18     2  0 Aug28 ?        00:00:00 [idle_inject/1]
root        19     2  0 Aug28 ?        00:00:05 [migration/1]
root        20     2  0 Aug28 ?        00:00:55 [rcuc/1]

這些程序是否像其他程序一樣被調度?

在 Linux 下,為每個程序在以 pid 命名的目錄中處理ps核心top提供的資訊。/proc這包括兩個文件,commcmdline; comm是程序的命令名稱,並且cmdline是程序的命令行,提供給它的參數(包括它自己的“名稱”)。pstop使用方括號來區分兩者:如果程序有命令行,則args欄位(也稱為CMD)輸出;否則它會輸出命令名稱,並用方括號括起來。

這在手冊頁中有描述ps用於args

有時程序 args 將不可用;發生這種情況時,ps將改為在括號中列印執行檔名稱。

沒有程序參數的程序包括沒有任何命令行(甚至沒有argv[0])構造的程序,例如核心執行緒,以及失去了命令行的程序,失效程序,也稱為殭屍程序(可通過<defunct>後綴辨識)。

這些都不會改變調度屬性:所有程序都以相同的方式調度,根據它們的狀態、優先級等。

引用自:https://unix.stackexchange.com/questions/548818