本文浅谈对内核中进程0、进程1以及进程2的理解。
1、进程0
首先,进程0也叫做空闲进程,它不是一个用户进程,经过对内核代码的分析,发现进程0是一个内核进程,它的主要作用是进入一个死循环,在内核中它表现为一个函数idle,因为我们不可能让cpu像人一样没事干就歇着,只要晶振起振,它就必须不停的工作,而进程0就是为了解决cpu空闲时刻的问题,所做的工作就是在cpu空闲时给cpu一个死循环从而使cpu工作。
它的特殊性在于它是系统创建的第一个进程,并且还是唯一一个没有通过kernel_thread以及它所创建的子类进程所创建的进程,在进程调度中起着重要作用。
2、进程1
我们的进程1也叫做init进程,它拥有两种不同的状态,是通过kernel_thread创建的进程,开始时它在内核态所做的工作就是挂载根文件系统,将根文件系统挂载上之后,就开始寻找我们用户态下的一个程序,通常这个程序叫做linuxrc,只要运行了这个程序,我们就算是进入了用户态了,并且在机器未关闭或复位时不能再返回内核态。运行这个程序之后我们会进入用户交互界面,可以进行输入登录密码以及shell命令行等操作。
进程1的最主要的作用就是对我们操作系统来说,其他所有的用户进程都是由进程1直接或间接创建的,也就是说所有的用户进程都是进程1的子孙进程。
3、进程2
在内核源码中,kthreadd函数就是所谓的进程2,它是我们内核的守护进程,可以管理和调度其他内核线程。
如有理解中的错误请指出,在此感谢大家!