@gain
2016-03-12T13:39:22.000000Z
字数 519
阅读 1239
Linux内核
原创作者:干宇航
原创作品转载请注明出处
《Linux内核分析》MOOC课程
本文使用环境,ubuntu 15.10 i386 上的 Linux-3.18.6内核的Menu OS
使用gdb调试跟踪调试内核
gdb
(gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表
(gdb)target remote:1234
内核启动过程包括start_kernel之前和之后,之前全部是做初始化的汇编指令,
(gdb)break start_kernel
之后开始C代码的操作系统初始化.
各种模块的init初始化
最后执行到rest_init(相当于手工创建的PCB,0号进程,也就是相当于windows xp系统中System Idle Process,
嘻嘻,特地去装了xp的虚拟机。怀旧一下。
总结,首先进入start_kernel 然后进入cpu_idle,然后生成kernel_init和kthread,然后生成下面的用户态进程和核心态进程。