第三章:进程管理-进程描述符及任务结构
内核把进程的列表存放在叫做任务队列(task_list)的双向循环链表中,链表中每一项都是类型为task_struct、称为进程描述符的结构。 进程描述符包含了一个具体进程的所有信息。 进程描述符中包含的数据能完整地描述一个正在进行的程序:它打开的文件、进程的地址空间、挂起的信号、进程的状态,还有其他更多信息。 Linux通过slab分配器分配task_struct结构,这样能达到对象复用和缓存着色的目的。 内核通过一个唯一的进程标识值PID来标识每个进程。 内核把每个进程的PID存放在它们各自的进程描述符中。 PID的最大值为32768; PID的最大值很重要,因为它实际上是系统中允许同时存在的进程的最大数量。 进程数据量越小,转一圈就越快,本来数值大的进程比数值的进程迟运行,但是这样一来就破坏了这一原则。 在内核中,访问任务通常需要获得指向其task_struct的指针。实际上内核中大部分处理进程的代码都是直接通过task_struct进行的。
进程状态 进程描述符中的state域描述了进程的当前状态,系统中每个进程都必然处于五种状态中的一种:
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
- task_running(运行)
- task_interruptible(可中断)
- task_uninterruptible(不可中断)
- _task_traced
- _task_stopped(停止)

更多精彩