文章目录

  • 一、进程特殊形式 ( 内核线程 | 用户线程 )
  • 二、C 标准库与 Linux 内核中进程相关概念
  • 三、Linux 查看进程命令及输出字段解析

一、进程特殊形式 ( 内核线程 | 用户线程 )


普通的进程 , 包含 内核虚拟地址空间 和 用户虚拟地址空间 , 其中 内核虚拟地址空间 所有进程共享 , 用户虚拟地址空间 由进程独立拥有 ;

除了 普通进程 外 , 进程 还有 222 种 特殊形式 :

  • 内核级线程 : 只有 内核虚拟地址空间 , 没有 用户虚拟地址空间 的进程 , 称为 内核线程 ;
  • 用户级线程 : 共享 用户虚拟地址空间 的进程 , 称为 用户线程 ;

线程 : 用户线程 又称为 线程 ;

线程组 : 共享 相同 用户虚拟地址空间 的线程 , 组成了一个 线程组 ,

二、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 查看进程命令及输出字段解析 )相关推荐

  1. python获取当前线程名称_python使用标准库根据进程名如何获取进程的pid详解

    前言 标准库是Python的一个组成部分.这些标准库是Python为你准备好的利器,可以让编程事半功倍.特别是有时候需要获取进程的pid,但又无法使用第三方库的时候.下面话不多说了,来一起看看详细的介 ...

  2. linux服务器配置考试试卷,Linux服务器配置和管理试题题目及答案,课程2021最新期末考试题库,章节测验答案...

    ( )是指通过电视.广播收看收听广告的户数与电视机或收音机拥有的户数之间的比例. 有一张3000元的托收承付第四联凭证月末未从银行取回.在编制银行存款余额调节表时应(). A.在"银行对账单 ...

  3. vs2017 linux so导出函数,将Visual Studio 2017中的Assembly和C ++与命令行和输出相结合

    我正在尝试将这些语言结合起来用于测试目的.有没有人知道为什么,在构建项目后,当.asm文件在源文件夹中时,无法找到clear函数.下面显示的以下图像应该解释我的要求,我将进一步编辑. .586 ;Ta ...

  4. linux计划任务执行日志,linux中centos制定计划任务执行命令并且输出日志

    1.写脚本 最简单的 写如下代码 #!/bin/sh A B C 1.每个命令之间用;隔开 说明:各命令的执行给果,不会影响其它命令的执行.换句话说,各个命令都会执行, 但不保证每个命令都执行成功. ...

  5. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  6. Linux内核源码分析《进程管理》

    Linux内核源码分析<进程管理> 前言 1. Linux 内核源码分析架构 2. 进程原理分析 2.1 进程基础知识 2.2 Linux进程四要素 2.3 进程描述符 task_stru ...

  7. 五、Linux进程管理

    进程管理 一.进程概述以及属性介绍 1.1 进程概述 进程是一个在系统中运行的程序,每个进程都是一个运行的实体,并占用一定的系统资源 进程是已启动的可执行程序的运行实例,动态,有生命周期及运行状态 程 ...

  8. Linux进程管理及作业控制(转)

    Linux是一个多任务的操作系统,系统上同时运行着多个进程,正在执行的一个或多个相关进程称为一个作业.使用作业控制,用户可以同时运行多个作业,并在需要时在作业之间进行切换.本章详细介绍进程管理及作业控 ...

  9. Linux内核内存管理:地址转换和MMU

    地址转换和MMU 虚拟内存是一个概念,是给进程的一种错觉,因此它认为自己拥有巨大的.几乎无限的内存,有时甚至比系统实际拥有的内存还要多.每次访问内存位置时,由CPU将虚拟地址转换为物理地址.这种机制称 ...

最新文章

  1. 数据库复习1——数据库体系结构和关系系统
  2. [转]ExtJS Grid 分页时保持选中的简单实现方法
  3. 如此智能的Windows Embedded Standard 7
  4. kafka_consumer_消费原理介绍
  5. Python--第3次平时作业
  6. Recovering deleted Records
  7. spotlight on windows 监控 配置 无法连接的问题
  8. *** cannot be resolved or is not a field
  9. 查看系统端口是否被占用
  10. 最基础的傅里叶变换公式推导
  11. 使用Syncthing文件同步工具在两台Windows server服务器实现文件同步(实战)
  12. 算法竞赛入门经典第11章 无根树转有根树
  13. C/C++基础题045.PUM
  14. 基于微信小程序奶茶店在线点单管理系统#毕业设计
  15. SAP S4HANA1610/Fiori安装过程全记录
  16. 【Java面试】Java 内存溢出 栈溢出的原因与排查方法
  17. electron exec 神坑
  18. mysql md5 多少位_mysql的MD5加密后的字符能不能设定长度
  19. TransMVSNet阅读笔记
  20. 开发板上新抢先知丨居然可以用来跑游戏?

热门文章

  1. CSS定位布局display/float/position属性之间的关系/区别和如何使用取值行为机制
  2. 理解并演示:思科的netflow功能(200-120新增考点)
  3. 仿Word自动套用格式,用CSS设置表格样式
  4. python 为空判断场景
  5. Sublime text 3 汉化教程
  6. UVA1103分区涂色+vc使用注意事项
  7. 如何查看表和索引的统计信息
  8. [FFmpeg] ffmpeg参数详解
  9. D3.tsv与D3.csv加载数据
  10. python指定版本 安装模块包