一 .何为进程

1.进程是计算机系统中正在运行的程序的实例。它是操作系统进行资源分配和调度的基本单位,包含程序代码、数据和执行状态。每个进程拥有独立的地址空间、系统资源。

2.进程的组成

  1. 代码段:存储可执行指令。

  2. 数据段:包含全局变量和静态变量。

  3. 堆栈段:用于函数调用、局部变量和返回地址。

  4. 进程控制块(PCB):操作系统维护的数据结构,记录进程ID、状态、优先级、资源使用情况等。

二 .何为线程 

1.线程是操作系统能够进行运算调度的最小单位,被包含在进程之中,是进程中的实际运作单元。一个进程可以包含多个线程,所有线程共享进程的资源(如内存、文件描述符等),但每个线程拥有独立的程序计数器、栈和寄存器等执行上下文。

OK前情提要至此,下面开始正式介绍Linux下对于进程和线程的管理。

一.进程的查看

1.1在图形中查看

window中有启动任务管理器,Linux也有自己的启动任务管理器,在shell中输入以下命令。

# gnome-system-monitor      //用于打开图形的进程管理工具

1.2常用查看进程的指令--ps

        #ps指令用于显示当前指令的进程状态信息,提供进程的详细属性

        ps命令在Unix/Linux系统中的参数风格有以下三种

        Unix风格:#ps  -ef                //显示所有进程完整信息

                          #ps  -aux             //显示所有用户进程

        Bsd风格: #ps  xjf                //显示进程树状结构

        Gnu风格:#ps  --forest        //树状显示进程层级

ps 命令默认执行(只显示当前终端运行的程序)

#ps a        //显示系统中所有有字符设备使用的进程

#ps x         //显示系统中所有无字符设备使用的进程

#ps ax

使用该命令之后终端会显示以下信息

#PID 进程id #TTY 进程使用终端 #STAT 进程情况 #TIME进程占用cpu时长 #COMMAND进程名称

#ps aux

使用该命令之后终端会显示以下信息

#USER进程所有人#PID进程id#%CPU进程使用cpu的用量#%MEM进程所使用内存大小

#VSZ进程所使用虚拟内存大小#RSS进程常驻内存大小#TTY进程所使用终端

#STAT进程状态#START进程运行时长#TIME进程使用cpu时长#COMMAND进程名称

1.3常用查看进程的指令--pgrep

pgrep

#进程过滤

#-u  uid  //指定用户进程

#-t tty     //指定终端进程

#-l          //显示进程名称

如图我们打开2个shell后,我们就可以通过pgrep命令过滤出用户(liaosuo)的进程

1.4常用查看进程的指令--top

top指令用于动态的查看进程的信息

#-d                //指定刷新频率

#-b                //以批次方式显示

#-n                //指定显示数量

  1. 系统概览
    顶部区域显示:

    • 系统运行时间(uptime
    • 当前登录用户数
    • 负载平均值(1/5/15分钟):如 load average: 0.02, 0.01, 0.00
      表示系统任务队列的平均长度,数值超过 CPU 核心数可能表示过载。
  2. CPU 状态

    • %us:用户空间占用
    • %sy:内核空间占用
    • %id:空闲率
    • 例如:%Cpu(s): 12.3 us, 1.5 sy, 86.2 id
  3. 内存统计

    • Mem:物理内存使用(total/free/used/buffers
    • Swap:交换空间使用情况
  4. 进程列表
    默认按 CPU 占用率排序,显示:

    • PID:进程 ID
    • USER:所有者
    • %CPU:CPU 占用百分比
    • %MEM:内存占用百分比
    • COMMAND:进程名

二.进程的前后台调用

#<ctrl>+<z>                //将shell程序在后台挂起

#bg                //将后台程序运行

#fg                //将后台程序调回前台

#jobs                //查看当前终端的所有后台程序

三.进程的优先级

3.1.何为进程优先级

进程优先级通过一个数值系统来管理,核心是“nice值”和调度策略。nice值用于调整进程的相对优先级,而调度策略则定义了进程如何在CPU上执行。优先级越高(nice值越低),进程越容易获得CPU资源;反之,优先级越低(nice值越高),进程获得的CPU时间越少。

3.2.nice值

nice值是Linux中表示进程优先级的核心参数:

  • 范围从$ -20 $(最高优先级)到$ 19 $(最低优先级)。
  • 默认nice值是$ 0 $,表示普通优先级。
  • 例如,nice值为$ -10 $的进程比nice值为$ 5 $的进程有更高的优先级,因此会优先执行。

nice值由内核维护,用户可以通过命令调整它。需要注意的是,设置负nice值(提高优先级)通常需要管理员权限(root),以防止普通用户独占资源。

3.3.进程优先级的调整

需要注意0-99是内核自控范围,100-139是用户可控范围

#nice -n -5 gedit                        //指定优先级并打开一个gedit

#renice -n -5 id                //将指定的进程优先级修改

  

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐