【Linux】task_struct

本文详细解析了Linux内核中的task_struct结构体,它是进程控制块(PCB)的具体实现,用于描述进程的各种属性和状态,如PID、任务状态、I/O信息、优先级、程序计数器、内存指针、上下文数据、记账信息等,是理解任务调度和进程管理的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要了解task_struct必须先了解进程

1.进程:

1.1进程概念:

   我们可以说是正在运行的程序。站在内核的角度上来说进程是担当分配系统资源(cpu资源,内存)的实体。在操作系统角度来说,进程是一个结构体-PCB--Linux下有自己的名字task_struct。

1.2描述进程---PCB

   进程信息被放在一个成为进程控制块的结构体中,可以理解为进程属性的集合。课本上称之为PCB(process control block),Linux称之为task_struct。
2.task_struct结构体:

 Linux下的每一个进程都是由task_struct来定义,task_struct就是PCB,他是对进程控制唯一的最有效的手段,当我们调用fork()时,系统和自动为我们分配一个task_struct结构。然后从父进程那里继承一些数据,并把新的进程插入到进程树中,以待进行进程管理。因此理解task_struct是对我们理解任务调度(在linux中任务和进程是同一概念)的关键。每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct。
    task_struct进程的描述信息中都有如下描述:
    标示符:PID:描述本进程的唯一标识符,用来区别于其他进程。
    状态:任务状态,退出信号,退出代码等。
    I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
    优先级:相对于其他进程的优先级。
    程序计数器:程序中即将被执行的下一条指令的地址。
    内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。
    上下文数据:进程执行时处理器的寄存器中的数据(休学例子,要加图的CPU,寄存器)。
    记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等...
    其他信息:

3.task_struct结构体内容:以下链接中有task_struct所在位置以及task_struct结构体详细信息

 https://blog.youkuaiyun.com/zhangrrrr/article/details/70500217

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值