日期:2014-05-16  浏览次数:20724 次

Linux进程的表示

个人学习整理笔记,不保证正确性。。。


1、表示一个进程需要哪些信息

     当进程在内存中时,内核要能够追踪到进程的状态,需要了解进程的各个段在内存中的分布,代码段、数据段、用户堆栈、核心堆栈等相关数据,还有进程执行是相关的寄存器。8个通用寄存器、段寄存器、指令寄存器等。进程的运行级别、进程的状态、进程使用的资源、进程相关的信号等等,内核需要有方法能够追踪到上述所有的数据,才能够保证对进程状态的全面掌控。

2、linux进程相关的数据结构

     首先来看内核描述进程所用的数据结构。在Linux内核0.11版本中,进程数据结构的定义在sched.h文件中,定义如下
struct task_struct {
/* these are hardcoded - don't touch */
                 long state;             /*表示进程当前的状态的字段。关于进程状态字段相关值的定义也在shced.h文件中*/
                 long counter;         /*进程已用的时间片计数器*/
                 long priority;        /*进程优先级*/
                 long signal;            /*进程接收到的信号量*/
                 struct sigaction sigaction[32];   /*sigaction与进程信号量的处