本篇文章主要介绍了"第二块和第三块 进程控制块的task_struct结构",主要涉及到第二块和第三块方面的内容,对于Linuxjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
》进程控制块 在linux中进程信息存放在叫做进程控制块的数据结构中,每个进程在内核中都有?个进程控制块(PCB)来维护进程相关的信息,Linux内核...
》进程控制块
在linux中进程信息存放在叫做进程控制块的数据结构中,每个进程在内核中都有?个进程控制块(PCB)来维护进程相关的信息,Linux内核的 进程控制块是task_struct结构体。在Linux中,这个结构叫做task_struct。
task_struct是Linux内核的一种数据结构,它会被装载到RAM?并且包含着进程的信息。
每个进程都把它的信息放在 task_struct 这个数据结构?, task_struct 包含了这些内容:
》》》》》》
标?符 : 描述本进程的唯?标?符,?来区别其他进程。
状态 : 任务状态,退出代码,退出信号等。
优先级 : 相对于其他进程的优先级。
程序计数器: 程序中即将被执?的下?条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下?数据: 进程执?时处理器的寄存器中的数据。
I/O状态信息:包括显?的I/O请求,分配给进程的I/O设备和被进程使?的?件列表。
记账信息: 可能包括处理器时间总和,使?的时钟数总和,时间限制,记账号等。
》》》》》》》
保存进程信息的数据结构叫做 task_struct,并且可以在 include/linux/sched.h ?找到它。
所有运?在系统?的
在task_struct中存放的信息是非常多的,下面是整个结构体的内容,可以进行了解了解:
Linux中task_struct结构如下:
struct task_struct
{
volatile long state; //说明了该进程是否可以执行,还是可中断等信息
unsigned long flags; //Flage 是进程号,在调用fork()时给出
int sigpending; //进程上是否有待处理的信号
mm_segment_t addr_limit; //进程地址空间,区分内核进程与普通进程在内存存放的位置不同 //0-0xBFFFFFFF
for user-thead //0-0xFFFFFFFF for kernel-thread
//调度标志,表示该进程是否需要重新调度,若非0,则当从内核态返回到用户态,会发生调度
volatile long need_resched;
int lock_depth; //锁深度
long nice; //进程的基本时间片