实验要求:
-
使用gdb跟踪调试内核从start_kernel到init进程启动
-
详细分析从start_kernel到init进程启动的过程并结合实验截图撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:
-
题目自拟,内容围绕Linux内核的启动过程,即从start_kernel到init进程启动;
-
博客中需要使用实验截图
-
博客内容中需要仔细分析start_kernel函数的执行过程
-
总结部分需要阐明自己对“Linux系统启动过程”的理解,尤其是idle进程、1号进程是怎么来的。
-
3)请提交博客文章URL到网易云课堂MOOC平台Linux内核分析MOOC课程,编辑成一个链接可以直接点击打开。
/////////////////////////////////////////////////////////////////////////////////////////////////
实验流程只贴图

gdb 可以使用 -tui 参数 达到命令和源码分屏效果 如下

设置两个断点


一直跟踪到rest_init()

总结
1.idle是一个进程,其pid为0。
2.主处理器上的idle由原始进程(pid=0)演变而来。从处理器上的idle由init进程fork得到,但是它们的pid都为0。
3.Idle进程为最低优先级,且不参与调度,只是在运行队列为空的时候才被调度。
4.Idle循环等待need_resched置位。默认使用hlt节能。
5.init pid 为1
6.init通关kernel_thread()创建
#1-4 参考https://www.douban.com/note/56531301/
参考
浙公网安备 33010602011771号