




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux内核源代码介绍,2011年秋季,哈尔滨工业大学(威海)嵌入式系统实验室,系统引导和初始化,概述史前时代:BIOS古代:引导加载程序中世纪:设置()函数复兴:startup_32()函数现代:start_kernel()函数,2020/6/9,引导过程概述,当计算机第一次通电时,所有硬件设备都是无用的。整个计算机就像史前时期的地球一样,处于混乱、无序、随机和分散的状态。随机存储器包含无用的随机数据。引导是指当计算机开机时,将操作系统映像从混沌状态加载到内存中,并将其转移到操作系统的运行状态。操作系统用来管理和控制计算机进程存储操作系统映像的非易失性介质可以是硬盘、软盘、可编程只读存储器或闪存,或网络中的其他节点。以典型的硬盘引导为例,2020/6/9。启动过程概述,要在计算机开机时从非易失性介质加载操作系统映像,要求一旦启动,中央处理器就能自动执行程序。显然,这个程序应该存储在EPROM或闪存中。这个程序应该知道如何从非易失性介质加载操作系统映像的一部分。所有类型的处理器都被设计成一开机就从一个特殊的地址执行指令。存储在存储器中的程序很小。不足以从磁盘直接读取操作系统映像的文件系统的不同操作系统内核映像可能被压缩,并且在加载的同时需要解压缩的不同的CPU指令也是不同的.2020/6/9,2020/6/9,引导扇区。为了解决EPROM中的程序不足以直接加载操作系统映像的问题,通常,一些映像的地理信息和适用于特定操作系统的程序被存储在盘的第一扇区,即引导扇区的内容取决于特定操作系统,并且存储在EPROM中的可能与文件系统相关的程序负责从盘读取引导扇区(到存储器),这被称为初始引导程序。初始引导程序独立于特定的操作系统或文件系统(2020/6/9),引导扇区中的程序负责加载其他扇区。这些扇区的程序和数据共同完成整个引导过程,或者引导扇区读入一个中间实用程序,称为引导加载程序。它负责加载操作系统映像,如Linux引导加载程序LILO,它允许用户有选择地从多个操作系统引导。2020/6/9,主引导记录块MBR,由于硬盘容量的快速增长,硬盘通常被分成几个“分区”,从而将物理硬盘分成几个逻辑磁盘。每个逻辑磁盘的第一个扇区仍然是引导扇区,分别用于相应逻辑磁盘中的操作系统映像。显然,这些引导扇区不是整个硬盘的第一个扇区。整个硬盘的第一个扇区高于所有逻辑磁盘,不属于任何逻辑磁盘。在2020年6月9日,当机器通电时,基本输入输出系统仍将从整个硬盘的第一个扇区引导,因此这个扇区被称为主引导记录块MBR。MBR包含硬盘分区表,小程序MBR中的程序不直接引导操作系统。相反,根据磁盘分区信息从预定的“活动”逻辑盘读取其引导扇区逻辑盘的引导扇区程序负责加载操作系统映像。也可以将LILO或GRUB放在MBR中,使引导过程少转一圈,2020/6/9,系统启动,引导加载程序第一阶段,引导加载程序第二阶段,内核启动,初始化进程运行,用户空间,内核,LILO,GRUB,MBR,基本输入输出系统,在x86PC上的Linux引导过程,加电/复位,2020/6/9,史前时期:基本输入输出系统,当计算机加电时,一个特殊的硬件电路在中央处理器的一个管脚上产生复位逻辑值。产生RESET后,处理器的一些寄存器被设置为固定值,并执行物理地址0xffffff0处的代码。此时,随机存储器芯片包含随机数据,因此地址0xffffff0必须映射到只读、非易失性存储器芯片,也就是说,只读存储器芯片在80 x86系统中,存储在只读存储器中的组件称为基本输入输出系统(BIOS),2020/6/9。基本输入输出系统包含几个中断驱动的低级进程,通过这些进程,所有操作系统必须在启动时将一些操作系统初始化为计算机硬件设备,如操作系统操作系统。大多数系统调用是根据2020/6/9版的基本输入输出系统实现的。请注意,Linux内核不使用基本输入输出系统!使用保护模式(尤其是页面映射)的多进程、现代操作系统,不适合基本输入输出系统的基本输入输出系统驱动程序进程必须在真实模式下运行。在内核进入保护模式后,它不能与它共享Linux的功能。Linux绕过了BIOS,完全实现了自己的设备驱动层,从硬件接口和中断响应两方面向Linux开放。基本输入输出系统仅用于初始启动、开机自检和提供在此过程中收集的信息。2020年6月9日,基本输入输出系统使用真实地址模式,因为只有这些可以在计算机开机和启动时使用。实模式地址由一个seg段和一个off偏移组成,物理地址计算如下:seg*16 off。因此,在实际模式中,中央处理器寻址电路不需要全局描述符表和页表来将逻辑地址转换成物理地址。显然,初始化GDT、LDT和页表的代码必须在真实模式下运行,2020/6/9,基本输入输出系统启动过程。1.在计算机上执行一系列测试,以检测存在哪些设备以及这些设备是否正常工作。这个阶段称为开机自检。2.初始化硬件设备。3.根据基本输入输出系统设置搜索要启动的操作系统。该过程根据用户预先定义的顺序访问系统中的软盘、硬盘和光盘的第一个扇区。4.只要找到一个有效的设备,第一个扇区的内容被复制到内存中物理地址0 x00007c00的起始位置,跳转到该地址,执行刚刚加载的代码,2020/6/9,古时候:引导加载程序,引导加载程序是一个由基本输入输出系统调用的程序,将操作系统的内核映像加载到内存中。它不是基本输入输出系统的一部分,如GRUB和LILOLinux。一个引导加载程序在硬盘的第一个扇区中替换了原来的小程序。MBR包含硬盘分区表和一个小程序。该程序用于加载启动操作系统的分区的第一个扇区。2020/6/9,引导加载程序(总共446字节),硬盘分区表(总共64字节),幻数(2字节),分区1,分区2,分区3,分区4,分区标志,开始字符,分区位,结束字符,开始字符,大小,主引导记录MBR结构图,2020/6/9,从磁盘引导Linux,从磁盘启动Linux需要两步引导加载程序。在80 x86系统中,它通常是LinuxLOader(LILO)和GRUB。LILO比LILO更强大。LILO安装在MBR(而不是加载活动扇区的小程序)或每个磁盘分区的引导扇区上。当引导加载程序被执行时,用户可以选择加载哪个操作系统,2020/6/9,LILO的第一部分。MBR或分区引导扇区包括一个小型引导加载程序。当基本输入输出系统将小程序从地址0 x00007c00开始加载到内存第一部分的小程序中执行后,它将自己携带到地址0 x00096a00建立一个实模式堆栈。然后,LILO的第二部分从地址0 x00096c00开始加载到内存中。第二部分从磁盘读取可用操作系统的映射表,并提示用户选择安装操作系统2020/6/9。用户选择要加载的操作系统后,LILO将相应分区的引导扇区复制到内存中并执行。或者直接将内核映像复制到内存中。LILO引导加载程序加载Linux内核映像依赖于BIOS例程,主要执行以下操作:1 .调用一个基本输入输出系统进程来显示“加载”信息2。调用一个基本输入输出系统进程从磁盘加载内核映像的初始部分,即内核映像的前512个字节从地址0 x00090000存储到内存中。将设置()功能代码从地址0 x00090200、2020/6/9、3存储到内存中。调用一个基本输入输出系统进程从磁盘加载内核映像的剩余部分。makezImage编译的小内核映像从0 x 0001000的低位地址开始存储在内存中。makebzImage编译的大内核映像从0 x00100000的高位地址开始存储在内存中。4.跳转到设置()代码,2020/6/9。中世纪:设置()功能。setup()汇编语言函数的代码由链接程序放置在内核映像文件的偏移量0 x200处。引导加载程序加载内核映像时,会从物理地址0 x00090200开始将其复制到内存中。setup()函数初始化计算机中的硬件设备,并为内核程序的执行建立一个环境。虽然基本输入输出系统已经初始化了大部分硬件设备,但是,Linux并不依赖基本输入输出系统,而是以自己的方式重新初始化硬件设备,以增强可移植性和健壮性。2020/6/9,setup()函数执行的操作:1。在AIPC兼容系统中,它调用一个基本输入输出系统例程在内存2中建立一个系统物理内存布局表。当用户按键超过一定时间时,设置键盘重复延迟和速率。键盘设备反复向中央处理器发送相应的键盘代码。3.初始化显卡。4.重新初始化磁盘控制器并检查硬盘参数。5.检查IBM微通道总线(MCA)6。检查PS/2指针设备(总线鼠标)7。检查高级电源管理(APM)基本输入输出系统(2020/6/9)的支持。8.如果基本输入输出系统支持增强的磁盘驱动器服务,系统可用硬盘表通过调用相应的基本输入输出系统程序在内存中建立。9.如果内核映像加载到内存中较低的位置(0 x00010000),它将被移动到0 x00001000的物理地址。10.设置8042键盘控制器的A20引脚(为兼容起见)。11.建立临时中断描述符表(IDT)和临时全局描述符表(GDT)12。如有必要,重置浮点单元(FPU)13。重写可编程中断控制器(PIC),屏蔽所有中断,但保留IRQ2,IRQ2是两个PIC之间的级联中断,2020/6/9,14。通过在cr0状态寄存器中设置PE位,将CPU从实际地址模式切换到保护模式。cr0状态寄存器中的PG位被清零,因此寻呼机制未启用。跳转到startup_32()汇编语言函数,2020/6/9,renaissance: startup_32()函数,startup_32()函数,在设置基本操作环境(如堆栈)后清除BSS段。调用解压缩_内核()函数来解压缩内核映像不是一个直接可执行的目标代码,但不是所有压缩的子页面或子页面的部分都被压缩,并且压缩的文件头嵌入了用于解压缩自身的代码ss,2020/6/9,setup()/arch/i386/boot/head。s startup _ 32()/arch/i386/boot/compressed/head。SDE compress _ kernel()/arch/i386/boot/compressed/misc . c startup_32()/arch/i386/After kernel/head . sstart _ kernel()/init
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 川省凉山州临床执业医师考试(实践技能)模拟题及答案(2025年)
- 2025年铁道概论考试题库及答案
- 2025年机车基础知识题库及答案
- 2025年铁路安全考试题库及答案
- 广东潮州市2025年职业病诊断医师(其他类)考前冲刺练习题库及答案
- 2025年高二物理上学期折射定律与折射率计算题
- 2025年高二物理上学期物理术语表达规范性测试
- 2025年气候变化对海岸线的影响及对策
- 2025年高二物理上学期单元测试(电磁波)
- 2024年航天器总体电路资金申请报告代可行性研究报告
- 施工吊篮专项施工方案
- 2025年时事政治考试题库及参考答案(100题)
- 护士输液PDA扫码流程课件
- 爱笑的虎鲸课件
- 九章怀沙全文课件
- 损失厌恶效应-洞察及研究
- 2025低空经济发展及关键技术概况报告
- 自闭症中医课件
- 小儿先天性心脏病护理常规
- 2025-2030中国饲用微生态制剂行业发展动态及未来前景展望报告
- 工程围墙销售方案(3篇)
评论
0/150
提交评论