Linux进程状态转换


进程的状态

进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。

三态模型

在三态模型中,进程状态分为三个基本状态,即就绪态,运行态,阻塞态。

  • 运行态:进程占有处理器正在运行
  • 就绪态:进程具备运行条件,等待系统分配处理器以便运行。当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行。在一个系统中处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列
  • 阻塞态:又称为等待(wait)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成

在这里插入图片描述

五态模型

在五态模型中,进程分为新建态、就绪态,运行态,阻塞态,终止态。

  • 新建态:进程刚被创建时的状态,尚未进入就绪队列
  • 终止态:进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。进入终止态的进程以后不再执行,但依然保留在操作系统中等待善后。一旦其他进程完成了对终止态进程的信息抽取之后,操作系统将删除该进程。

在这里插入图片描述

进程的相关命令

查看进程

ps aux / ajx

a:显示终端上的所有进程,包括其他用户的进程
u:显示进程的详细信息
x:显示没有控制终端的进程
j:列出与作业控制相关的信息

在这里插入图片描述ps aux命令的瞬间的进程信息,并非动态的
USER进程所属用户
PID进程的ID
%CPUCPU的使用
%MEM内存的使用
VSZ是常驻内存集(Resident Set Size),表示该进程分配的内存大小
RSS表示进程分配的虚拟内存
TTY进程所属的终端
STAT状态

在这里插入图片描述
在这里插入图片描述
PPID父进程的ID
PGID进程组的ID
SID会话的ID
START开始的时间
TIME持续的时间
COMMAND执行哪个命令产生的这个进程

实时显示进程动态

top

可以在使用 top 命令时加上 -d 来指定显示信息更新的时间间隔,在 top 命令执行后,可以按以下按键对显示的结果进行排序:
M :根据内存使用量排序
P :根据 CPU 占有率排序
T :根据进程运行时间长短排序
U :根据用户名来筛选进程
K :输入指定的 PID 杀死进程

杀死进程

kill [-signal] pid

kill –l 列出所有信号
kill –SIGKILL 进程ID
kill -9 进程ID
killall name 根据进程名杀死进

在这里插入图片描述在这里插入图片描述
杀死自己终端是不行的,需要加上参数-9强制杀死进程,-9实际上就是KILL信息,可以通过kill -l查看发现是第9个
在这里插入图片描述
首先写一个死循环的输入函数,之后执行,程序会一直输出字符串

在这里插入图片描述
在这里插入图片描述
为了终止这个死循环,我们需要杀死这个进程,打开另一个终端输入命令ps aux查看进程ID,接着输入命令kill -9 PID,可以看到进程已被终止

在这里插入图片描述在这里插入图片描述

进程号和相关函数

  • 每个进程都由进程号来标识,其类型为 pid_t(整型),进程号的范围:0~32767。进程号总是唯一的,但可以重用。当一个进程终止后,其进程号就可以再次使用。
  • 任何进程(除 init 进程)都是由另一个进程创建,该进程称为被创建进程的父进程,对应的进程号称为父进程号(PPID)。
  • 进程组是一个或多个进程的集合。他们之间相互关联,进程组可以接收同一终端的各种信号,关联的进程有一个进程组号(PGID)。默认情况下,当前的进程号会当做当前的进程组号。
  • 进程号和进程组相关函数:
pid_t getpid(void);
pid_t getppid(void);
pid_t getpgid(pid_t pid);

当我们在当前进程中执行a.out时,可以看到此时a.out的PPID就是当前进程的PID
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值