从Top命令入手学习Linux进程与线程

本文介绍了Linux系统监控工具top和htop的使用,包括查看内存和CPU使用情况,以及进程状态和负载平均值的解释。通过进程状态和CPU利用率等指标,理解系统资源的使用状况。同时,探讨了进程与线程的区别,以及线程为何比进程更节省资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从Top命令入手

查看本机内存使用情况

top
或者(平时更推荐下面的方法,可动态可视化占用情况)12
yum install htop
htop

以下为top显示情况

top - 11:32:45 up  1:17,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 198 total,   2 running, 195 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :    781.7 total,     84.3 free,    441.3 used,    256.2 buff/cache
MiB Swap:   1024.0 total,    854.0 free,    170.0 used.    210.9 avail Mem 
top - 11:32:45 up  1:17,  1 user,  load average: 0.00, 0.00, 0.00

当前时间为11:32:45,在线1小时17分钟,现有一个用户正在使用,最后一个字段意思是在过去的1min,5min,15min内的平均负载均为0

平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是在就绪队列里的进程数

只要就绪队列里有一个进程在排队就说明cpu很忙,工作饱和,也就是说,只要load average里任一数字超过1,就说明CPU很忙了,以下为进程处理流程图:

Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie

进程数:共193个进程,1个正在运行,192正在休眠,0中止,0僵尸进程

什么是僵尸进程?

僵尸进程已经被杀死,不再运行,但是仍占用内存空间

%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st

第一个cpu的使用情况,按1可以切换到下一个cpu,按2可以看到node模块的使用情况,以下为具体参数介绍,主要用到us,sy,ni三个参数

0.0 us 用户空间占用CPU百分比
0.3 sy 内核空间占用CPU百分比
0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
100.0 id 空闲CPU百分比
0.0 wa 等待输入输出的CPU时间百分比
0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比
0.0 si 软中断(Software Interrupts)占用CPU的百分比
0.0 st 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间

MiB Mem :    780.9 total,    125.3 free,    433.8 used,    221.8 buff/cache
MiB Swap:   1024.0 total,    850.5 free,    173.5 used.    223.1 avail Mem 

内存,当物理内存(Mem)还剩30%时,系统就开始使用交换分区(swap),total,free,used分别表示各个部分的存储量

buff/cache 用作内核缓存的内存量

avail 代表可用于进程下一次分配的物理内存数量

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND              
   1 root      20   0  246040   6832   3220 S   0.0   0.9   0:02.94 systemd              
   2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd             
   3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp      

SHR:share,共享内存占用的空间,进程之间的通信方式共有六种:

  • 共享内存
  • 管道
  • socket文件
  • 队列
  • 信号
  • 信号量(锁)
指标意义
PR优先级
NInice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比,top是据此对进程进行排序的
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行

进程与线程

定义

进程是竟争计算机系统资源的基本单位,每一个进程都有一个自己的地址空间

线程是 CPU 调度的一个基本单位

三句话弄懂进程与线程的关系

进程里面包含了线程,一个进程里面可以有很多线程,一个没有线程的进程可以被看作是单线程。

线程是操作系统可识别的最小执行和调度单位。

进程拥有一个完整的虚拟地址空间,不依赖于线程而独立存在;反之,线程是进程的一部分,没有自己的地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。

为什么线程比进程省资源?

进程:pcb+code+data

线程:tcb+code+data

  1. 线程可以共享它所属的进程的资源,省下了进程间通过操作系统通讯的资源
  2. 线程没有自己的地址空间,不占用系统资源

为什么线程比进程省资源?

进程:pcb+code+data

线程:tcb+code+data

  1. 线程可以共享它所属的进程的资源,省下了进程间通过操作系统通讯的资源
  2. 线程没有自己的地址空间,不占用系统资源

因为以上两点因此节约了内存里存储代码的空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦知2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值