Linux内核分析:实验三

安常青 + 原创作品转载请注明出处 + 《Linux 内核分析》 MOOC 课程

Linux内核分析:实验三


1.计算机启动过程

计算机上电后,首先运行ROM里面的BIOS程序,对系统的硬件进行检测。然后运行bootloader程序,一般位于磁盘的第一个扇区,它把操作系统从磁盘加载到内存中,然后将控制权交给操作系统。操作系统首先运行一段汇编代码,主要完成一系列的初始化工作,然后跳转到start_kernel,这里,我们就分析一下start_kernel的流程。


2.start_kernel

首先启动gdb,在start_kernel处设置断点:


然后continue继续运行,程序停止在start_kernel处,用list查看代码:




如图所示,可以看到start_kernel里面的主要函数。下面设置断点看一下主要的几个函数:

2.1trap_init:


中断向量表初始化函数,针对x86,设置了很多中断门。

2.2sched_init:


进程调度初始化,其中一个很重要的任务就是完成了0号进程的初始化。

2.3 rest_init:


创建1号进程,即init进程,它是用户态所有进程的祖先。然后创建kthreadd进程,它是内核态所有进程的祖先。最后通过cpu_startup_entry启动0号进程。

然后continue继续执行,完成启动,出现MEMOS界面:



3.总结

通过这次实验,对linux的启动流程有了更深的理解。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值