Linux的启动过程分析

Linux的启动过程分析

ID:44416571

大小:145.59 KB

页数:18页

时间:2019-10-21

Linux的启动过程分析_第1页
Linux的启动过程分析_第2页
Linux的启动过程分析_第3页
Linux的启动过程分析_第4页
Linux的启动过程分析_第5页
资源描述:

《Linux的启动过程分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、嵌入式系统期中大作业题目:Linux的启动过程分析学院:信息工程专业:网络工程姓名:梁法成学号:2013240701282016.4.15目录1.从开机加电到执行main函数之前的过程21.1启动BIOS,准备实模式下的中断向量表和中断服务程序21.1.1BIOS的启动原理21.1.2BIOS在内存中加载中断向量表和中断服务程序21.2加载操作系统内核程序并为保护模式做准备31.2.1加载第一部分内核代码——引导程序(bootsect)31.2.2加载第二部分内核代码——setup31.2.3.加载第三部分内核代码——system模块51.3开始向3

2、2位模式转变,为main函数的调用做准备51.3.1关中断并将system移动到内存地址起始位置0x0000061.3.2设置中断描述符表和全局描述符表61.3.3打开A20,实现32位寻址71.3.4为保护模式下执行head,s做准备71.3、5head,s开女台执行72.从main至lj怠速92.1设备环境初始化及激活进程0102.1.1与建立人机交互界面相关的外设的中断服务程序挂接102.1.2初始化进程0102.1.3初始化硬盘112.1.4开启中断112.2进程1的创建及执行122.2.1进程0创建进程1122.2.2内核第一次做进程调度1

3、22.2.3轮转到进程1执行132.3进程2的创建及执行132.3.1、打开终端设备文件及复制文件句柄132.3.2、进程1创建进程2并切换到进程2132.3.3、加载shell程序132.3.4、实现系统怠速141.从开机加电到执行main函数之前的过程从开机到main函数的执行分三步完成,目的是实现从启动盘加载操作系统程序,完成执行main函数所需要的准备工作。第一步z启动BIOS,准备实模式下的中断向量表和中断服务程序;第二步,从启动盘加载操作系统程序到内存,加载操作系统程序的工作就是利用第一步中准备的中断服务程序实现的;第三步,为执行32位的

4、main函数做过渡工作。本章将详细分析这三步在计算机中是如何完成的,以及每一步在内存中都做了些什么。1.1启动BIOS,准备实模式下的中断向量表和中断服务程序问题:在RAM中什么程序也没有的时候,谁来完成加载软盘中操作系统的任务呢?答案是:BIOSe1.1.1BIOS的启动原理从硬件角度看.Intel80x86系列的CPU可以分别在16位实模式和32位保护模式下运行。为了兼容,也为了解决最开始的启动问题,Intel将所有80x86系列的CPU,包括最新型号的CPU的硬件都设计为加电即进入16位实模式状态运行。同时,还有一点非常关键的是,将CPU硬件逻

5、辑设计为加电瞬间强行将CS的值置为OxFOOO、IP的值置为OxFFFO,这样CS:IP就指向OxFFFFO这个地址位置。1.1.2BIOS在内存中加载中断向量表和中断服务程序BIOS程序在内存最开始的位置(0x00000)用1KB的内存空间(0x00000~0X003FF)构建中断向量表,在紧挨着它的位置用256字节的内存空间构建BIOS数据区(0x00400~OxOO4FF),并在大约57KB以后的位置(OxOEO5B)加载了8KB左右的与中断向量表相应的若干中断服务程序。中断向量表中有256个中断向量,每个中断向量占4字节,其中两个字节是CS的

6、值,两个字节是IP的值。每个中断向量都指向一个具体的中断服务程序。1.2加载操作系统内核程序并为保护模式做准备从现在开始,就要执行真正的boot操作了,即把软盘中的操作系统程序加载至内存。对于Linux0.11操作系统而言,计算机将分三批逐次加载操作系统的内核代码。第一批由BIOS中断int0xl9把第一扇区bootsect的内容加载到内存;第二批、第三批在bootsect的指挥下,分别把其后的4个扇区和随后的240个扇区的内容加载至内存。1.2.1加载第一部分内核代码引导程序(bootsect)经过执行一系列BIOS代码之后;计算机完成了自检等操作

7、(这些和我们讲的启动操作系统没有直接的关系,读者不必关心)。由于我们把软盘设置为启动设备”计算机硬件体系结构的设计与BIOS联手操作,会让CPU接收到一个int0x19中断。CPU接收到这个中断后,会立即在中断向量表中找到int0x19中断向量。接下来,中断向量把CPU指向0X0E6F2,这个位置就是int0xl9相对应的中断服务程序的入口地址。这个中断服务程序的作用就是把软盘第一扇区中的程序(512B)加载到内存中的指定位置。这个中断服务程序的功能是BIOS事先设计好的,代码是固定的,与Linux操作系统无关。无论Linux0.11的内核是如何设计

8、的,这段BIOS程序所要做的就是〃找到软盘"并〃加载第一扇区",其余的它什么都不知道,也不必知道。按照这个简

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。