【Linux】进程的描述组织与进程状态



🎪 进程的描述组织

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体,简单来说,进程就是一个正在运行的程序,是担当分配系统资源的实体
在这里插入图片描述

🚀1.什么是进程

我们前面说了进程是一个正在运行的程序,我们上一篇博客(博客链接:冯诺依曼体系结构和操作系统概念理解)中说到:操作系统诞生的意义就是对计算机软硬件资源进行管理,而管理的本质就是先描述,在组织,每个进程包含它对应的代码和数据,而描述进程的就是数据结构叫PCB(进程控制块),而每个PCB里面包含着进程相关的信息,每款操作系统都有自己的PCB,而Linux自己的PCB是task_struct,task_struct的相关信息如下:

  • 标示符: 描述本进程的唯一标示符,用来区别其他进程
  • 状态: 任务状态,退出代码,退出信号等
  • 优先级: 相对于其他进程的优先级
  • 程序计数器: 程序中即将被执行的下一条指令的地址
  • 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
  • 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]
  • I/ O状态信息: 包括显示的I/O请求,分配给进程的I/ O设备和被进程使用的文件列表
  • 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
  • 其他信息
    在这里插入图片描述

🚀2.进程的形成

当我们打开一个程序(本质上也是文件),实际上它是被加载到了内存中,也就变成了进程。我们之前任何启动并运行程序的行为,都会有操作系统帮助我们将程序转换成进程,完成特定的任务。
在这里插入图片描述
我们启动应用程序的时候,OS会将对应的程序的代码和数据加载到内存,并且会形成当前程序对应的PCB,将其链接。总之:进程 = 内核中关于程序对应的数据结构 + 对应的代码和数据

🚀3.进程标识符 *

进程标识符(PID)是大多数操作系统的内核用于唯一标识进程的一个数值。(简言之,就是进程的绰号。)这一数值可以作为许多函数调用的参数,以使调整进程优先级、kill(命令)进程之类的进程控制行为成为可能。

⭐3.1 PS命令查看PID

这里我们先写一个C程序,命名为process1.c.

process1.c

#include <stdio.h>
#include <unistd.h>

int main()
{
   
  while (1)
  {
   
    printf("我是一个进程,我叫process1.\n");
    sleep(2);
  }
  return 0;
}

这里为了便于观察我们加上sleep函数,让它休眠2s,sleep()函数的头文件为<unistd.h>,在通过make自动化构建:
Makefile

process1:process1.c
	gcc process1.c -o process1 
.PHONY:clean
clean:
	rm -f process1

这里我们为了便于观察,复制一个ssh渠道
在这里插入图片描述

我们开始运行我们的程序process1(每2s循环打印)

命令:ps -axj
功能:查看当前所有进程

在这里插入图片描述

我们通过管道过滤出process1:输入ps -axj | grep process1

在这里插入图片描述
我们找到了进程,可是它前面那串数字是什么呢?我们键入命令:ps -axj | head 1查看它的第一行.
在这里插入图片描述

另外我们查看我们自己的process1进程的时候,发现它下面还有一个含有关键字process1的进程,那么它是什么呢?我们之前说过Linux每一个命令实际上也是一个可执行文件,那么我们用的grep当然也是进程,所以说显示的当然是grep的进程,我们将它过滤掉即可:ps -axj | head -1 && ps -axj | grep process1 | grep -v grep

在这里插入图片描述
这样我们就找到了process1的PID为20824

⭐3.2 /proc目录查看进程属性

在 Linux 系统中,/proc 目录是一个位于内存中的伪文件系统。该目录下保存的并不是真正的文件和目录,而是一些【运行时】的信息,如 CPU 信息、负载信息、系统内存信息、磁盘 IO 信息等。/proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关系统硬件及当前运行进程的信息。

./proc存放的是进程相关的所有信息,在硬盘上并不存在,在操作系统开机后才会创建.每新建一个进程,操作系统都会在/proc目录下新建一个以进程PID命令的目录,我们可以通过这个目录来查看该进程属性.

在这里插入图片描述
我们进入该目录,即可查看process1进程相关信息。
在这里插入图片描述
当process1这个进程被杀死,那么该PID目录将不复存在:

命令:kill -9 PID
功能:杀死PID对应的进程

在这里插入图片描述杀死

评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Corwttaml

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

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

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

打赏作者

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

抵扣说明:

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

余额充值