Linux 内核进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )相关的知识,希望对你有一定的参考价值。
文章目录
一、进程特殊形式 ( 内核线程 | 用户线程 )
普通的进程 , 包含 内核虚拟地址空间 和 用户虚拟地址空间 , 其中 内核虚拟地址空间 所有进程共享 , 用户虚拟地址空间 由进程独立拥有 ;
除了 普通进程 外 , 进程 还有 2 2 2 种 特殊形式 :
- 内核级线程 : 只有 内核虚拟地址空间 , 没有 用户虚拟地址空间 的进程 , 称为 内核线程 ;
- 用户级线程 : 共享 用户虚拟地址空间 的进程 , 称为 用户线程 ;
线程 : 用户线程 又称为 线程 ;
线程组 : 共享 相同 用户虚拟地址空间 的线程 , 组成了一个 线程组 ,
二、C 标准库与 Linux 内核中进程相关概念
C 语言中 标准库 提供的 进程 , 与 Linux 内核 中的 进程 这两个概念是不同的 ;
C 标准库 中的 包含多个线程 的进程 , 在 Linux 内核中 称为 " 线程组 " ;
C 标准库 中的 只有一个线程 的进程 , 在 Linux 内核中 称为 " 任务 / 进程 " ;
C 标准库 中的 线程 , 在 Linux 内核中 称为 " 共享 用户虚拟地址空间 的 进程 "
三、Linux 查看进程命令及输出字段解析
在 Ubuntu 中 , 执行
ps aux
命令 , 可以查看当前系统的进程状态 , 确定有哪些进程 正在运行 , 占用的 CPU , 内存资源比例, 进程 ID 是多少 ;
ps 命令显示的当前执行命令时的 瞬间状态 , 不是 实时动态更新的 ;
实时进程使用 top 命令 ;
进程字段说明 :
- USER : 表示 进程是属于哪个账户的 ;
- PID : 进程 ID ;
- %CPU : 使用的 CPU 资源占用的 百分比 ;
- %MEM : 使用的 内存 资源占用的 百分比 ;
- VSZ : 该进程 占用的虚拟内存容量是多少 , 单位是 KB , 225864 表示 225864KB ;
- RSS : 实际占用的内存容量 ;
- TTY : 进程 运行的终端 ;
- STAT : 程序目前的状态 ; S 表示程序在休眠 , 可以发送信号唤醒 ;
执行过程如下 :
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]
以上是关于Linux 内核进程管理 ( 进程特殊形式 | 内核线程 | 用户线程 | C 标准库与 Linux 内核中进程相关概念 | Linux 查看进程命令及输出字段解析 )的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核进程管理 ( 内核线程概念 | 内核线程普通进程用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )