进程以及Linux中的进程相关概念(三)

2019-07-14 10:33发布

6.进程控制块        进程控制块(PCB)是进程这一抽象概念在计算机中的描述,是对进程生命周期内所有事情的全面描述。进程和进程控制块之间有非常严格的一一对应关系,在进程的整个生命周期中,内核通过PCB对进程进行控制。        PCB所包含的内容很多,Linux2.6内核中task_struct已经达到1.7KB的大小,里面的信息相当多,可以简单地归纳为下面三个方面:       基本信息:亲属关系、标识符       管理信息(系统和程序指定):进程间通信信息、文件系统信息、虚拟内存信息、调度信息       控制信息(实时变化):当前状态、时间和定时器信息、寄存器及堆栈状态             当然PCB信息可以有以下更详细的描述:            调度时刻需要跟踪的信息:跟踪状态,是否需要调度,上下文,多处理器支持等       进程结构之间的组织:队列前后指向指针,父进程,子进程       进程属性:优先级,进程号,对应的程序等等       用户以及资源配置:计时(跟踪记录各种时间信息),文件相关(掌握的文件资源),内存相关(内存资源管理包括页表映射等配额、用户信息)       进程间通信、扩展点以及异常处理:信号以及处理的挂钩,各种锁,信号量等         Linux为每个进程分配一个8KB大小的内存区域thread_union,用于存放该进程两个不同的数据结构:             thread_info             –进程的内核态堆栈                下图是对thread_union的示意:                      内核控制路径所用的堆栈很少,对thread_union来说,8KB足够了。       thread_info和task_struct中都有一个域指向对方,因此是一一对应的关系。       进程控制块的所有成员中被引用最频繁的部分、和硬件关系最密切的一些数据存放在thread_info中。