抓住那个进程,它要跑路

一.基本概念

1.程序与进程

1)程序

数据+指令的集合,静态过程,可长期存储于系统;

通常以文件的形式存储在磁盘上。

2)进程

程序运行过程,动态过程,随程序killed而消失,不会长存于系统中。

原来原来,静态与动态:大概就是平静的湖面,与台风天的湖面(桦加沙的威力......)

3)如何理解?

同一个菜谱(程序)可以被多个厨师(进程)同时使用来做出多份菜。

一个程序可以对应多个进程(例如,同时打开多个浏览器窗口);

进程是操作系统进行资源分配和调度的基本单位;

进程之间通常是相互隔离的,一个进程的崩溃通常不会直接影响其他进程(独立的地址空间)。

2.进程与线程

1)进程

拥有独立的内存空间,资源分配基本单位。

2)线程

线程是进程的执行单位,一个进程可以包含一个或多个线程。

每个线程有自己的程序计数器寄存器状态

3)如何理解?

如果把进程比作一个工厂,那么线程就是工厂里的工人。工人们共享工厂的资源,但每个工人有自己的工作台(栈)和当前正在做的具体任务(程序计数器)。

进程是资源分配的单位,线程是CPU调度的单位。

进程有独立的地址空间,线程共享所属进程的地址空间。

线程比进程更轻量,创建和切换更快,通信更方便,但也更易受线程彼此影响(需要同步机制)。

3.并发与并行

1)并发

一段时间多个任务都处于“执行”状态(可能交替执行),任务的分解、组合和调度逻辑上的同时发生

2)并行

同一时刻有多个任务执行,多个计算资源(如多核CPU、多台机器)来加速计算物理上的同时发生

3)如何理解?

并行是并发的一种实现方式

并发:单核靠切换

并行:多核真干活

4.进程运行状态

运行态:进程正在执行CPU指令

运行---->阻塞:进程IO操作,需等待而无法运行

阻塞态:进程由于等待某个事件的发生而无法继续执行。

阻塞---->就绪:进程等待已完成,无法立即运行

就绪---->运行:运行时间片已用完,CPU从就绪队列选择合适进程分配

就绪态:进程已准备好运行,获得除CPU之外的必要资源。

运行---->就绪:

1)进程占用CPU时间过长;

2)高优先级进程抢占资源,低优先级先转就绪态(呜呜呜呜......又搞霸凌)

如何理解?

运行态:火箭发射;阻塞态:天时地利人和;就绪态:已做最后检查等待点火指令。

(觉得抽象的话自己再查查,个人观点,仅供参考)

5.僵尸进程与孤儿进程

当父进程接受到任务时会通过fork派生子进程来处理,子进程继承父进程属性。

ppid:父进程 pid:子进程

1)僵尸进程

子进程执行 exit() 结束。

内核保留其进程控制块(PCB),记录退出状态等信息。

父进程未调用 wait()waitpid() 来读取子进程退出状态。

2)孤儿进程

父进程在子进程仍在运行时提前退出。

子进程的父进程 PID 被设置为 1(即 initsystemd)。

init 进程会定期调用 wait() 回收这些“养子”进程。

3)区别

二.进程运行状态监控

1.静态监控

1.1ps-aux

下面对每列进行说明:

其中:TTY中?代表内核程序;COMMAND中有[]代表内核态进程,无[]代表用户态进程

1.2STAT

就是上图中的stat

附加字符:

总结

R = 正在跑或准备跑

S = 睡觉中(可被叫醒)

D = 深度睡眠(叫不醒,等 I/O)

T = 被暂停

Z = 僵尸(等父进程收尸)

s/l/+/< = 附加(会话领导/多线程/前台/高优先级)

2.动态监控

2.1top

-d:刷新时间

-p:指定pid

-u:指定用户

2.2字段含义

第一行:系统运行时间和负载;

第二行:任务(进程)统计;

第三行:CPU 使用情况(按时间平均);

硬中断与软中断

1)硬中断(hi):由硬件设备主动发起(如键盘,网卡),与当前 CPU 执行的指令无关(异步

2)软中断(si):由软件指令主动触发,由当前执行的程序显式调用(同步

nice值(ni)

-20 到 +19含义:最高优先级到最低优先级。

nice 值越高,获得的 CPU 时间越少;nice 值越低,获得的 CPU 时间越多

注意:上图中

PR(优先级):显示nice值,-20映射到0,+19映射到39

NI(Nice值):显示nice值,默认是0

第四、五行:内存使用情况(单位通常为 KiB)

total:物理内存总量。

free:完全未被使用的内存。

used:已被使用的内存(包括应用程序和内核使用)。

buff/cache:用于缓冲区和缓存的内存,可被回收。

avail Mem:估算的可用于启动新应用程序的内存。

Swap 行:交换分区(虚拟内存)的使用情况。

计算公式:

存在误差是正常的,只是估算

total=used+free+buffer+cache

used=total-free-buffers-cache

free=total-used-buffer-cache

avail=free+(buffer+cache可释放的空间)

3.管理进程状态

3.1进程信号

三种常用:

1)SIGHUP:常用来加载配置文件;

9)SIGKILL:强制杀死进程

11)SIGSEGV:终止进程,默认信号

3.2关闭进程

1)kill -15:终止

2)kill -9:用于-15无效,强制

3)pkill + 进程服务名称

4.后台进程

不占用终端,运行时不阻塞用户继续输入其他命令,通常没有控制终端(TTY)。

常用于执行系统服务、守护任务、定时作业或其他不需要用户界面支持的操作。

4.1如何启动?

在命令末尾加 &

4.2如何查看后台任务?

使用 jobs 命令(仅查看当前 shell 的后台任务)

5.系统平均负载

5.1如何理解?

平均负载 = 可运行状态(R) + 不可中断状态(D) 的平均进程数。---->R和D上面有提到

5.2三个数值

[root@node ~]# uptime

18:46:49 up 2:11, 1 user, load average: 0.00, 0.01, 0.04

这里的load average:代表1分钟,5分钟,15分钟平均负载

5.3如何判断负载是否合理?

假设系统有N 个 CPU 核心:

Load ≈ N:系统满载,资源刚好用完。

Load < N:系统较空闲。

Load > N:有进程在排队等待资源,系统过载。

注意:Load 长期超过 CPU 核数的 70% 就应警惕

5.4平均负载 ≠ CPU 使用率

I/O 密集型任务会导致负载升高,但 CPU 使用率可能很低。

平均负载高有可能是CPU密集型进程导致。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

my一阁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值