Linux下的PCB结构体

本文深入解析Linux中的进程控制块(PCB)——task_struct结构体,阐述其在进程管理中的作用。内容包括PCB的定义、包含的信息如进程ID、状态、优先级、程序计数器、内存指针、上下文数据、I/O状态等,并通过/proc文件系统和ps命令展示如何获取进程信息。此外,还详细介绍了task_struct的各个字段及其在进程调度、信号处理、时间管理和内存管理等方面的应用。
摘要由CSDN通过智能技术生成

本文的重点是剖析task_struct,在这之前我们先来认识下进程的概念和linux进程控制块PCB

首先什么是进程?

1>进程是程序的一个执行的实例;

2>进程是正在执行的程序

3>进程是能分配处理器并由处理器执行的实体

按内核的观点来谈进程:它所担当分配系统资源(CPU时间,内存)的实体。

进程的两个基本的元素如下:

一、程序代码(可能被执行相同程序的其它进程共享)二是和代码相关联的数据集。这里和代码相关联的数据集指的是数据段和进程控制块。进程是一种动态描述,但是并不代表所有的进程都在运行。(进程在内存中因策略或调度需求,会处于各种状态)。

task_struct:

为了管理进程,操作系统必须对每个进程所做的事情进行清楚的描述,为此,操作系统使用数据结构来代表处理不同的实体,这个数据结构就是通常所说的进程描述符或进程控制块(PCB)。

PCB在linux操作系统下就是task_struct结构 ,所属的头文件#include   <sched.h>每个进程都会被分配一个task_struct结构,它包含了这个进程的所有信息,在任何时候操作系统都能够跟踪这个结构的信息,宰割结构是linux内核汇总最重要的数据结构,下面我们会详细的介绍。

这个进程的主要信息:

1、pid_t pid标识符:与进程相关的唯一标识符,区别正在执行的进程和其他进程

2、状态:描述进程的状态,因为进程有阻塞、挂起、运行等好几个状态,所以都有个表示符来记录进程的执行状态。

3、优先级:如果有好几个进程正在执行,就涉及到进程的执行的先后顺序,这和进程的优先级这个标识符有关。

4、程序计数器:程序中即将被执行指令的下一条地址。

5、内存指针:程序代码和进程相关数据的指针。

6、上下文数据:进程执行时处理器的寄存器中的数据。

7、I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

8、记账信息:包括处理机的时间总和,记账号等等。

进程的信息可以通过/proc系统文件夹查看。假如要获取PID为400的进程信息,你需要查看/proc/400这个文件夹。

接下来就来给出一些task_struct各个字段的介绍:

进程信息同样可以使用ps命令来获取。

假如我们获取pid 为3040的这个进程信息

下面我们深度的理解下进程的各个字段的含义:

Struct  task_struct

{

1、支持对称多处理器方式(SMP)时的数据成员

(1)int processor;  //进程正在使用的CPU

(2)int last_processor;  //进程最后一次使用的CPU

(3)int lock_depth;  //上下文切换时系统内核锁的深度

2、其他数据成员

(1)unsigned short used_math;  //是否使用MPU

(2)char comm[16];  //进程正在运行的可执行文件的文件名

(3)struct rlimit rlim[RLIM_NLIMITS];  //结构rlimit用于资源管理,定义在linux/include/linux/resource.h中,

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值