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与进程信号量的处