方括号中的进程是否与其他进程的调度方式相同?

ext*_*xe5 5 process scheduling kernel

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]
Run Code Online (Sandbox Code Playgroud)

这些进程是否像其他进程一样被调度?

Ste*_*itt 6

在Linux下,pstop通过内核做出手柄可用信息/proc,对于每一个进程,在该PID命名的目录。这包括两个文件,commcmdlinecomm是进程的命令名称,cmdline是进程的命令行,提供给它的参数(包括它自己的“名称”)。pstop使用方括号来区分两者:如果一个进程有一个命令行,那么该args字段(也称为CMD)输出那个;否则它输出命令名称,用方括号括起来。

这是在描述ps手册页,用于args

有时进程参数将不可用;发生这种情况时,ps将改为在括号中打印可执行文件名称。

没有进程参数的进程包括没有任何命令行(甚至不是argv[0])构建的进程,例如内核线程,以及失去命令行的进程,失效进程,也称为僵尸进程(可通过<defunct>后缀识别)。

这些都不会改变调度属性:所有进程都以相同的方式调度,根据它们的状态、优先级等。

  • 它还包括执行了没有参数的命令的进程,甚至不包括 `argv[0]`(通常不会发生)。例如,尝试使用 `perl -e 'exec {"/bin/sh"} ()'`。 (2认同)