普通的进程 , 包含 内核虚拟地址空间 和 用户虚拟地址空间 , 其中 内核虚拟地址空间 所有进程共享 , 用户虚拟地址空间 由进程独立拥有 ;
除了 普通进程 外 , 进程 还有
种 特殊形式 :
线程 : 用户线程 又称为 线程 ;
线程组 : 共享 相同 用户虚拟地址空间 的线程 , 组成了一个 线程组 ,
C 语言中 标准库 提供的 进程 , 与 Linux 内核 中的 进程 这两个概念是不同的 ;
C 标准库 中的 包含多个线程 的进程 , 在 Linux 内核中 称为 " 线程组 " ;
C 标准库 中的 只有一个线程 的进程 , 在 Linux 内核中 称为 " 任务 / 进程 " ;
C 标准库 中的 线程 , 在 Linux 内核中 称为 " 共享 用户虚拟地址空间 的 进程 "
在 Ubuntu 中 , 执行
ps aux
命令 , 可以查看当前系统的进程状态 , 确定有哪些进程 正在运行 , 占用的 CPU , 内存资源比例, 进程 ID 是多少 ;
ps 命令显示的当前执行命令时的 瞬间状态 , 不是 实时动态更新的 ;
实时进程使用 top 命令 ;
进程字段说明 :
执行过程如下 :
root@octopus:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.3 0.2 225864 9376 ? Ss 09:26 0:03 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 09:26 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 09:26 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 09:26 0:00 [rcu_par_gp]
root 6 0.0 0.0 0 0 ? I< 09:26 0:00 [kworker/0:0H-kb]
root 9 0.0 0.0 0 0 ? I< 09:26 0:00 [mm_percpu_wq]
root 10 0.0 0.0 0 0 ? S 09:26 0:00 [ksoftirqd/0]
root 11 0.0 0.0 0 0 ? I 09:26 0:00 [rcu_sched]
root 12 0.0 0.0 0 0 ? S 09:26 0:00 [migration/0]
root 13 0.0 0.0 0 0 ? S 09:26 0:00 [idle_inject/0]
root 14 0.0 0.0 0 0 ? S 09:26 0:00 [cpuhp/0]
root 15 0.0 0.0 0 0 ? S 09:26 0:00 [cpuhp/1]
root 16 0.0 0.0 0 0 ? S 09:26 0:00 [idle_inject/1]
root 17 0.0 0.0 0 0 ? S 09:26 0:00 [migration/1]
root 18 0.0 0.0 0 0 ? S 09:26 0:00 [ksoftirqd/1]
root 20 0.0 0.0 0 0 ? I< 09:26 0:00 [kworker/1:0H-kb]
root 21 0.0 0.0 0 0 ? S 09:26 0:00 [cpuhp/2]
root 22 0.0 0.0 0 0 ? S 09:26 0:00 [idle_inject/2]
root 23 0.0 0.0 0 0 ? S 09:26 0:00 [migration/2]