进程描述符(task_struct)包含了内核管理进程所需的全部信息,在kernel2.6之前,task_struct在创建进程时保存在内核栈的尾部,在kernel2.6之后,由slab分配器分配task_struct结构(通过预先分配和重复使用task_struct,可以避免动态分配和释放所带来的资源消耗),此时在内核栈thread_info结构有一个指向进程描述符的指针:
current_thread_info() -> task
下图摘自《Linux内核设计与实现》