Linux内核学习笔记:【001】浅谈Linux系统启动各个部分的作用

  • Linux的软件架构

在linux系统软件架构可以分为4个层次(从低到高分别为):
 
1.引导加载程序
        引导加载程序(BootLoader)是固化在硬件Flash中的一段引导代码,用于完成硬件的一些基本配置,引导内核启动。
 
2.系统内核
        系统内核(Kernel)是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能,包括防火墙机制、是否支持LVM或Quota等文件系统等等,如果内核不认识某个最新的硬件,那么硬件也就无法被驱动,你也就无法使用该硬件。计算机真正工作的东西其实是硬件,例如数值运算要使用到CPU、数据储存要使用到硬盘、图形显示会用到显示适配器、音乐发声要有音效芯片、连接Internet 可能需要网络卡等等。内核就是控制这些芯片如何工作。
 
3.文件系统
        Linux文件系统(File System)中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
        文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
 
4.用户程序
        用户应用程序(Application)为了完成某项或某几项特定任务而被开发运行于操作系统之上的计算机程序。
 
 
  • Linux启动过程
上电 ——> BootLoader ——> 加载内核 ——> 内核挂载根文件系统 ——>执行应用程序
 
  • 如何理解BootLoader与Kernel
操作系统内核本身就是一个裸机程序,和我们学的uboot和其他裸机程序没有本质的区别;事实上,不少U-Boot源码就是根据相应的Linux内核源程序进行简化而形成的,尤其是一些设备的驱动程序。如果我们去琢磨U-Boot源码的注释,便会轻易的发现这一情况。
 
区别就是操作系统运行起来后可以分为应用层(用户态)和内核层(内核态),分层后,两层的权限不同,内存访问和设备操作的管理上更加精细(内核可以随便方位各种硬件,而应用程序只能被限制的访问硬件和内存地址)
 
直观来看:uboot的镜像是u-boot.bin,Linux系统的镜像是zImage,这两个东西其实都是裸机程序镜像。
从系统启动的角度来讲的。内核和uboot就是裸机程序;
 
 

猜你喜欢

转载自www.cnblogs.com/schips/p/9080307.html