一起探索进程


在这里插入图片描述

进程的概念

进程=PCB+代码和数据

一个已经加载到内存中的程序(正在执行的程序)叫做进程

如果只是把代码和数据加载到内存中,这不是进程

内核观点:担当分配系统资源(CPU时间,内存)的实体

描述进程-PCB

可执行程序加载到内存中,形成进程时,操作系统要先创建描述进程的结构体对象。进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。课本上称之为PCB(process control block), Linux操作系统下的PCB是: task_struct

注意:在所有的操作系统的进程控制模块都叫PCB,但是在不同平台下PCB有所差异。


为什么操作系统要有PCB?
操作系统要对进程进行管理,需要先描述再组织。


如果要使程序运行起来,就必须让执行程序加载到内存中,本质上是把代码和数据加载到内存中。为了让操作系统更好的管理进程,需要为该进程创建一个PCB对象来描述进程。

在这里插入图片描述

虽然进程是由代码+数据、PCB构成,但是操作系统只关心PCB,不关心代码和数据,需要的是描述代码和数据的结构体PCB

Linux系统进程

task_struct

  • 在Linux中描述进程的结构体叫做task_struct。
  • task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息

task_struct内容

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

组织进程

可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。

查看进程属性

ps -axj | head -1 &&ps ajx | grep myproces.exe

&&用来连接两个指令的操作
左边只打印“表头”信息
右边是将myprocess.exe相关信息过滤出来

在这里插入图片描述

这里最后一行显示的是grep的进程。

进程的信息可以通过 /proc 系统文件夹查看

命令:ls /proc

在这里插入图片描述
proc是Linux系统下的一个目录,关机后,目录里面的信息全都没了,开机的时候操作系统会自动创建对应的目录文件。上图所示,蓝色的数字表示一个,目录,数字是进程的唯一PID。这个目录里面保存了进程的所有属性。

如果要获取PID为1的进程信息,你需要查看 /proc/1 这个文件夹。

大多数进程信息同样可以使用top和ps这些用户级工具来获取

在这里插入图片描述

posted @ 2024-03-23 14:38  gwj124  阅读(0)  评论(0)    收藏  举报  来源
1 2 3