Linux内核分析:实验三
来源:互联网 发布:出售备案域名 编辑:程序博客网 时间:2024/04/29 20:03
安常青 + 原创作品转载请注明出处 + 《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的启动流程有了更深的理解。
0 0
- Linux内核分析实验三
- Linux内核分析实验三
- Linux内核分析:实验三
- Linux内核分析:实验三
- Linux内核分析:实验三--内核启动过程分析
- 实验三:跟踪分析Linux内核的启动过程
- 实验三:跟踪分析Linux内核的启动过程
- 实验三:跟踪分析Linux内核的启动过程
- Linux内核分析 实验三:跟踪分析Linux内核的启动过程
- Linux内核分析课程实验三:跟踪分析Linux内核的启动过程
- linux内核编程实验三
- 实验三.Linux内核编译实验
- Linux内核分析:实验一
- Linux内核分析:实验一
- Linux内核分析实验一
- Linux内核分析:实验一
- Linux内核分析:实验二
- Linux内核分析实验二
- 测试基本概念
- cocos2dx 浏览器
- javascript继承
- hdoj--1872--稳定排序(水题)
- 安卓开发中的双日期选择控件(可隐藏日,只显示年月)
- Linux内核分析:实验三
- java运行 第一个helloword!
- QT学习之路————如何创建一个线程
- IO流归纳总结
- coderforces 138CMushroom Gnomes - 2线段树
- linux下解压缩jar包
- 101. Symmetric Tree
- Appium跑python脚本自动生成简单测试结果报告
- BZOJ 3289 Mato的文件管理 莫队算法