大二下学期修过《计算机组成原理》这门课,对计算机底层有了一个相对系统的认识,所以还是建议学弟们或者还未修过这门课的同学好好学习一下这门课,一定收获良多。
因为本身是搞安卓开发的,所以今天来说一下Linux系统的启动过程。
总结来说,Linux的启动过程分为四步:
- 系统通电,硬件电路产生一个确定的复位时序。
- 执行引导程序,也叫Bootloader程序
- 内核初始化
加载并执行第一个应用程序,一般叫Home程序
接下来详细分析一下这四部分别做的是什么:
第一步:开机后,系统通电,按照一定的复位时序,如硬件内部的寄存器状态,磁盘,内存,Cpu等等一一复位,初始化硬件。
第二步:执行完第一步后,cpu开始执行第一条指令,第一条指令在内存中的地址是固定的,到这个固定地址下去取出第一条程序(Bootloader),即引导程序,它的作用装载真正的用户程序。
第三步:执行内核程序。在执行真正的用户程序之前,还必须先执行内核程序,来初始化各种硬件,比如一些网络接口,I/O设备等,同时要建立各种用于多线程调度及内存管理的数据结构。
最后一步:运行真正的“用户程序”,这里的第一个用户程序,一般叫做Home程序,一般系统的桌面程序即Home程序,然后用户就可以通过Home程序来启动其他的应用程序。
至此Linux系统的启动过程就告一段落。Android是基于Linux内核的,所以如果学习安卓开发的话,了解一下Linux是必不可少的。