码迷,mamicode.com
首页 > 其他好文 > 详细

系统启动流程

时间:2017-08-09 22:11:56      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:进程   mbr   文件   用户空间   硬件   文件管理   复杂   win   host   

将系统自检(BIOS)需要用到的指令,映射进CPU可以查找的线性地址空间(ROM),用来检查硬件是否正常。

                                          内核空间               用户空间

POST---->BIOS(启动顺序)------>MBR(BootLoader,446B)找到启动分区------>Kernel(探测硬件,装载驱动)------>init进程(进程)/sbin/init

备注:

 

Kernel作用:文件管理、进程管理、内存管理、网络管理、安全功能、驱动程序

内核设计风格:

      单内核:一个内核安装所有(linux)

           模块化设计:

                 .ko(kernel object)内核专用模块,核心:很小

       .so():外部so模块(内核模块)

                  内核模块:/lib/modules/“内核版本号命令的目录”/   如:/lib/modules/2.6.32/  (作用:减少内核的体积)

                   备注:能够做成内核模块的不仅仅是驱动程序,还有其他的,如:文件系统、加密功能、进程管理的扩展功能

      [root@localhost ~]# ls /lib/modules/2.6.32-358.el6.x86_64/kernel/
      arch crypto drivers fs kernel lib mm net sound

           核心:可以动态加载各种外围内核模块: 当内核识别到一个外围硬件,如:显卡,那么内核的核心会取固定的位置,装载进核心即可,这样内核就可以操作硬件了。 

                  /boot/vmlinuz-2.6.32-358.el6.x86_64

                  初始化时,加载的内核,只是核心本身。

      微内核:需要哪个子系统,取装载就可以。一个子系统,坏了。不影响全局。(实现复杂)(windows,solaris 支持线程)

备注:

1)按启动顺序读取硬盘设备的MBR,如果第一个硬盘MBR无BootLoader,则读第2个硬盘。但如果第一个硬盘

有MBR,但BootLoader损坏,则不会读取第2个硬盘设备。

2)Kernel装载前提:BootLoader识别Kernel所在分区

3)有些目录无法挂载成一个分区,这些目录是与根目录(/)自身完成初始化相关的目录。由于其他目录都是通过根目录才能访问,因此根所在的

分区,通常就是kernel 能够完成进入用户空间的最核心的位置。根所在的分区,叫rootfs(根文件系统),由此把某个分区与/进行了关联关系(挂载)

那么根所在的分区,就是启动OS的入口。系统启动需要的文件在/sbin /bin下,所以这些目录不能独立分区。

取哪找根:由kernel完成,kernel必须装载根目录。然后才能进入用户空间。kernel怎么知道根存在哪个分区?需要指定

4)根文件系统存在与要给硬盘上,假设OS安装包,没有为内核提供此硬盘的驱动程序?那么内核不能访问这个硬盘设备,就无法装载根,这样就无法访问

根下的文件,同样访问不了/lib/modules目录,这样意味着装载不了驱动。这样就有个问题:要想访问根,就需要装载驱动。要想装载驱动,就必须访问根。这样

就矛盾了。(内核要驱动此硬盘,而驱动程序就在硬盘上)

 

系统启动流程

标签:进程   mbr   文件   用户空间   硬件   文件管理   复杂   win   host   

原文地址:http://www.cnblogs.com/zmdsg/p/7327822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!