【Linux】task_struct

要了解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.csdn.net/zhangrrrr/article/details/70500217

猜你喜欢

转载自blog.csdn.net/hgelin/article/details/82724624