0号进程
0号进程称为 idle 进程,每个进程都有一个进程控制块PCB(Process Control Block),PCB的数据结构类型是struct task_struct。idle进程对应的PCB是 struct task_struct init_task,其 pid 等于0。
idle进程是唯一一个没有通过fork或者kernel_thread产生的进程,因为 init_task 是静态变量(初始化了的全局变量),其他进程的PCB都是fork或者kernel_thread动态申请内存创建的。
每个进程都有对应的一个函数,idle进程的函数是 start_kernel,因为进入该函数前,栈指针SP已经指向 init_task 的栈顶了,处于什么进程,看SP指向哪个进程的栈。
init_thread_union + THREAD_START_SP 即为栈顶
1号进程
2号进程
标签:task,struct,idle,---,PCB,init,linux,进程 From: https://www.cnblogs.com/god-of-death/p/17092485.html