进程以及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中。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮