Linux系统启动过程

注:袁帅+ 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 

linux内核分析的第二课:完成一个简单的时间片轮转多道程序内核代码

linux内核分析的第三课:Linux系统启动过程


首先从计算机上电是说起,对于X86CPU,bios会首先把磁盘硬盘的第一个扇区的内容(即bootloader)读到内存,然后把CPU控制权交给

bootloader,bootloader负责把内核读到内存,然后启动内核,内核启动时,先执行一段汇编指令,做硬件相关的初始化操作,然后跳到start_kernel()处执行。


分析start_kernel()的执行:在这个函数里面,是内核在启动第一个进程之前做的各种初始化,为接下来的进程创建好各种数据结构。

这里面的schedule_init()调用init_idle()函数,将当前进程初始化成就绪态。



最后是调用rest_init()函数,该函数首先调用kernel_thread()[会调用到fork()]创建init进程,创建kthreadd,然后idel调用schedule_preempt_disabled(),一个包含schedule()的函数,让启动过程进行下去,最后调用cpu_start_entry()。



总结:idel进程是在start_kernel()函数初始化的时候手工创建的,在rest_init()中调用kernel_thread()创建第一个进程,对内核启动过程还不是十分清楚,还需要花更多时间来深入理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山墨客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值