Android 8.0 开机流程 (二) Linux 内核kthreadd进程的启动

上一篇文章中分析了Linux内核idle进程(pid=0)的启动启动过程,并且创建了kthreadd 进程和init进程。init进程较为复杂,放在下一篇分析。本文就先分析kthreadd进程的启动过程。

1、kthreadd的创建

kthreadd定义在 Kernel\kernel\kthread.c

在上文中得知,kthreadd进程在rest_init()中被创建。task_struct结构体是进程描述符,里面包括了pid thread_info和state 进程状态等信息。

                  状态                                                                                描述
TASK_RUNNING 表示进程正在执行或者处于准备执行的状态
TASK_INTERRUPTIBLE 进程因为等待某些条件处于阻塞(挂起状态),一旦等待的条件成立,进程便会从该状态转化成就绪状态
TASK_UNINTERRUPTIBLE 意思与TASK_INTERRUPTIBLE类似,但是我们传递任意信息等不能唤醒他们,只有它所等待的资源可用的时候,才会被唤醒
TASK_STOPPED 进程被停止执行
TASK_TRACED 进程被debugger等进程所监视
EXIT_ZOMBIE 进程的执行被终止,但是其父进程还没有使用wait()等系统调用来获知它的终止信息,此时进程成为僵尸进程
EXIT_DEAD 进程被杀死,即进程的最终状态
TASK_KILLABLE 当进程处于这种可以终止的新睡眠状态中,他的运行原理类似于TASK_UNINTERRUPTIBLE,只不过可以响应致命信号
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值