day21-Linux基础学习 进程管理(上)

一、进程的概念

1、什么是进程

比如:开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。
总结一句话就是:当我们运行一个程序,那么我们将运行的程序叫进程。
当程序运行为进程后,系统会为该进程分配内存,以及进程运行的身份和权限。
在进程运行的过程中,系统会有各种指标来表示当前运行的状态。

2、程序和进程的区别

(1)程序是数据和指令的集合,是一个静态的概念。比如/bin/ls、/bin/cp等二进制文件。同时程序可以长期存在系统中。

(2)进程是程序运行的过程,是一个动态概念。进程是存在生命周期的概念的,也就是说进程会随着程序的终止而销毁,不会永久存在系统中。

3、进程的生命周期

生命周期就是指一个对象的生老病死。

day21-Linux基础学习 进程管理(上)_第1张图片
图1.png

当父进程接收到任务调度时,会通过fock派生子进程来处理,那么子进程会继承父进程属性。

(1)子进程在处理任务代码时,父进程会进入等待状态中。
(2)子进程在处理任务代码后,会执行退出,然后唤醒父进程来回收子进程的资源。
(3)如果子进程在处理任务过程中,父进程退出了,子进程没有退出,那么这些子进程就没有父进程来管理了,就变成僵尸进程。

每个进程父进程叫PPID,子进程则叫PID。

二、监控进程状态

程序在运行后,我们需要了解进程的运行状态。查看进程的状态分为 静态 和 动态 两种方式。

1、静态进程

使用ps命令查看当前的进程状态(静态)

(1)ps -aux常用组合

ps -aux常用组合,查看进程用户、PID、占用cpu百分比、占用内存百分比、执行的命令等。

day21-Linux基础学习 进程管理(上)_第2张图片
图2.png
状态 描述
USER 启动进程的用户
PID 进程运行的ID号
%CPU 进程占用CPU百分比
%MEM 进程占用内存百分比
VSZ 进程占用虚拟内存大小(单位KB)
RSS 进程占用物理内存实际大小(单位KB)
TTY 进程是由哪个终端运行启动的tty1、pts/0等 ?表示内核程序与终端无关
STAT 进程运行过程中的状态man ps(/STATE)
START 进程的启动时间
TIME 进程占用CPU的总时间(为0表示还没超过秒)
COMMAND 程序的运行指令,[方括号]属于内核态的进程。没有[] 的是用户态进程。

(2)STAT状态详解

STAT状态的Ss、S< 、S、S+、R、R+、D、T、Z 等等,都是什么意思?

STAT基本状态 描述 STAT状态+符号 描述
R 进程运行 s 进程是控制进程,Ss进程的领导者,父进程
S 可中断睡眠 < 进程运行在高优先级上,S<优先级较高的进程
T 进程被暂停 N 进程运行在低优先级上,SN优先级较低的进程
D 不可中断睡眠 + 当前进程运行在前台,R+该表示进程在前台运行
Z 僵尸进程 | 进程是多线程的,Sl表示进程是以线程方式运行

(3)案例

1)ps命令模拟查看 R+ S+ T

  • 同一台虚拟机开启两个窗口
  • 终端1 输入vim fxtx ,然后停止不输入任何东西,转到终端2
  • 终端2 运行ps命令查看状态
[root@oldboy ~]# ps aux | grep fxtx       #S表示睡眠模式,+表示前台运行
root       7880  0.0  0.2 151528  5200 pts/1    S+   15:51   0:00 vim fxtx
root       7897  0.0  0.0 112708   976 pts/0    R+   16:06   0:00 grep --color=auto fxtx
  • 终端1 挂起vim命令,按下:ctrl+z ,回到终端2
  • 终端2 再次运行ps命令查看状态
[root@oldboy ~]# ps aux | grep fxtx      #T表示停止状态
root       7880  0.0  0.2 151528  5200 pts/1    T    15:51   0:00 vim fxtx
root       7901  0.0  0.0 112708   976 pts/0    S+   16:16   0:00 grep --color=auto fxtx

2)tar命令模拟查看 D+

  • 同一台虚拟机开启两个窗口
  • 终端1 输入tar -czf etc.tar.gz /etc/ /usr/ /var/ ,然后转到终端2
  • 终端2 运行ps命令查看状态
#使用tar打包文件时,可以通过终端不断查看状态,由S+,R+变为D+
[root@oldboy ~]# ps aux | grep etc.tar.gz       
root 7903 4.0  0.0 123680 1332 pts/1  D+ 16:19 0:00 tar -czf etc.tar.gz /etc/ /usr/ /var/
root 7906 0.0  0.0 112708  988 pts/0  R+ 16:19 0:00 grep --color=auto etc.tar.gz

[root@oldboy ~]# ps aux | grep etc.tar.gz
root 7903 16.0 0.0 123812  1332 pts/1 S+ 16:19 0:01 tar -czf etc.tar.gz /etc/ /usr/ /var/

[root@oldboy ~]# ps aux | grep etc.tar.gz
root 7903 16.5 0.0 123812  1548 pts/1 R+ 16:19 0:01 tar -czf etc.tar.gz /etc/ /usr/ /var/
root 7910  0.0 0.0 112708   988 pts/0 R+ 16:19 0:00 grep --color=auto etc.tar.gz

[root@oldboy ~]# ps aux | grep etc.tar.gz
root 7903 15.3  0.0 123812 1548 pts/1 S+ 16:19 0:01 tar -czf etc.tar.gz /etc/ /usr/ /var/
root 7912  0.0  0.0 112708  988 pts/0 R+ 16:19 0:00 grep --color=auto etc.tar.gz

2、动态进程

(1)top命令

使用top命令查看当前的进程状态(动态)
top命令可以模拟查看 R S

day21-Linux基础学习 进程管理(上)_第3张图片
图3.png

day21-Linux基础学习 进程管理(上)_第4张图片
图4.png

#Tasks: 92 total    当前进程的总数
#3 running          正在运行的进程数
#89 sleeping        睡眠的进程数
#0 stopped          停止的进程数    挂起
#0 zombie           僵尸进程数
#%Cpu(s): 0.0 us    系统用户进程使用CPU百分比
#0.3 sy             内核中的进程占用CPU百分比,通常内核是于硬件进行交互
#0.0 ni             优先级的进程占用cpu的百分比
#99.7 id            空闲CPU的百分比
#0.0 wa             CPU等待IO完成的时间
#0.0 hi             硬中断,占的CPU百分比
#0.0 si             软中断,占的CPU百分比
#0.0 st             虚拟机占用物理CPU的时间

(2)中断

1)什么是中断

中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。

2)为什么要有中断

中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。

3)中断带来的问题

由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。特别是,中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。

4)系统中的软中断

事实上,为了解决中断处理程序执行过长和中断丢失的问题,Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部:

  • 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关工作。
  • 下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。
5)Linux软中断与硬中断小结

Linux 中的中断处理程序分为上半部和下半部:

  • 上半部对应硬件中断,用来快速处理中断。
  • 下半部对应软中断,用来异步处理上半部未完成的工作。

Linux 中的软中断包括网络收发、定时、调度、等各种类型,可以通过查看 /proc/softirqs 来观察软中断的运行情况。

(3)top 常见指令

字母 含义
h 查看帮助
1 数字1,显示所有CPU核心的负载
z 以高亮显示数据
b 高亮显示处于R状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
q 退出top

你可能感兴趣的:(day21-Linux基础学习 进程管理(上))