q7操作系统引导过程_第1页
q7操作系统引导过程_第2页
q7操作系统引导过程_第3页
q7操作系统引导过程_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统引导过程操作系统引导过程 2008 08 18 20 49 19 分类 计算机基础 举报 字号 订阅 操作系统引导过程 2008 05 19 13 57 新一篇 顶尖游戏公司程序员笔试第一题 摔 xbox 此文与另一篇 保护模式简述 都是转载于文章 一个简单的32位多任务操作 系统的实现 下面这部分内容是我在读 linux 内核完全注释 的 bootsect s 源代码时所能用到的 它最好的地方在于对启动程序存放于硬盘的加载情况分 析的很详细 而 linux 内核完全注释 只讲解了启动程序位于软盘时的加载情 况 原创 monkeyfu 系统的启动过程 任何一台计算机 在开机后 它要做的第一件事情就是引导 Booting 通过引导 计算机为自身搭建好运行环境 为以后 OS 的启动与运 行做好准备 首先 我们来看看一台计算机是如何引导自身的 在机器加电后 电源供电稳定后 电源会传给8284A 时钟生成器一个 Power Good 低电位 信号 随后8284A 会输出有效的 RESET 信号 使 CPU 复位 这时 CS IP FFFF 0000 CPU 在这里执行一条 jmp far addr 类指令 跳转到实际 BIOS 映 射代码的位置 开始执行 BIOS 代码 上述是机器在加电后的启动过程 大家都知道计算机的启动是分为冷启动与热 启动的 那么对于热启动 其过程又是怎样的呢 其实热启动只不过是将键盘 中断程序置复位标志为1234h 然后再跳转到 BIOS 处执行 其主要是省去了省去了 在自检过程中对存储器的检测 在跳转到 BIOS 后 首先会先关闭中断首先会先关闭中断 然后开始自检然后开始自检 POST 工作工作 这个自检 主要检测计算机最基本设备的运转状态 其主要包括对 CPU 内部寄存器测试 BIOS 芯片字节的检查 8237 DMA 控制器测试 基本32K RAM 检测等最基本 内容 由于被检测设备在系统运行中的重要性 因此在此过程中 BIOS 一旦一旦 检测到任何异常 都将判为致命性错误检测到任何异常 都将判为致命性错误 系统将被停机 通过上面的自检后 BIOS 开始初始化8259可编程中断中断控制器 并设置 BIOS 的8个主要中断向量个主要中断向量 int 10h int 17h 然后初始化并测试 CRT 视频接口以及 显示内存 对于热启动这一步将跳过 在确认正常后 执行其内部的显示卡标 准驱动程序 注意这里的驱动跟安装操作系统下的驱动是不一样的 这段代码会 存放在 C0000h 其主要目的是初始化显示卡 然后 BIOS 会打印显卡信息 接着 BIOS 开始检查其他设备 其包括对8259中断控制器测试 8253定时器测 试 键盘复位和卡键测试 扩展 I O 测试 设置硬件中断向量 扩展 RAM 测试 这里的 RAM 测试会检测除0 32K 以外的整个 RAM 空间 对于热启动同样 也会跳过这一阶段 然后 BIOS 会搜索其他设备的搜索其他设备的 ROM 如果找到 则会执行 它们 接着测试 ROM BASIC 的字节检查 测试磁盘驱动器 如 FDC 等 测试打印机端口和 RS 232 并设置他们的地址 然后打开 NMI 不可屏蔽中断 最后就是调用调用 Int 19h 进行自举 这一阶段这一阶段 的自检如果发生错误的自检如果发生错误 系统会判断其为一般性错误 并显示出相应的提示信息 在 此过程中 BIOS 会将检测收集到的数据保存在内存低1K 2K 的区域 并将将 BIOS 中断向量表 以及中断向量表 以及 BIOS 程序运行所需要的程序运行所需要的 stack 保存在内存低保存在内存低0K 1K 的地方的地方 下面就是系统自举工作了下面就是系统自举工作了 系统调用 int 19h 进行自举 寻找启动设备 如 软 驱 硬盘 光驱等等 找到后系统读取启动设备的0号逻辑扇区 如是软盘就读 取0面0道1扇区的整个内容 并将读取的内容放到内存地址为并将读取的内容放到内存地址为0000 7C00的地的地 方 当然 如果找不到启动设备如果找不到启动设备 BIOS 就会调用 Int 18h 并给出相应的提示信息 然后进入 ROM BASIC 有些机器会在等待一段时间后自动进入 CMOS 如 很久以前海洋的 AMD 386DX 40主板 至此 至此 BIOS 的引导程序结束的引导程序结束 CPU 开始执行开始执行0000 7C00处的代码 这在这之前还有前提处的代码 这在这之前还有前提 在这里需要说明 一下的是 BIOS 的引导程序是与操作系统无关的的引导程序是与操作系统无关的 但随后但随后 CPU 开始执行的代开始执行的代 码就开始与操作系统存在较大的相关性了码就开始与操作系统存在较大的相关性了 因此对于不同的操作系统 下面这 一部分可能会存在着较大的不同 不过 从目的上来讲 它们是相同的 即都 是为将要运行 OS 的内核 的内核 Kernel 作准备 进入这一部分的 前提前提 首要工作就是执行启动设备的引导程序执行启动设备的引导程序 硬盘与软盘 的对于引导程序的存放结构是不同的 硬盘有一个叫做 MBR Master Boot Record 的扇区 系统会首先执行它 以判断那个分区是启动分区 并读入该并读入该 分分 区的第一个扇区 并执行区的第一个扇区 并执行 并且在这个扇区中还存放着硬盘分区表 这个扇区中还存放着硬盘分区表 DPT 这个表的地位相当重要 因为它包含了各个分区的诸如 分区类型 起始位置 结束位置等重要参数 下面我们来详细介绍一下 MBR 的结构 MBR 只在硬盘 软盘没有只在硬盘 软盘没有 的结构分的结构分 为三部分为三部分 首先是可执行代码可执行代码 占446个字节 然后是4个分区表个分区表 每个占16个 字节 共64个字节 最后是签字后是签字 AA55H 下表列出了分区信息的详细内容 然后我们开始介绍 MBR 中的可执行代码部分 首先 程序会检测检测 MBR 的签字是否合法的签字是否合法 即判断其最后字是否为 AA55h 通过后 将自身 代码 移动到内存中的其他地方将自身 代码 移动到内存中的其他地方 以备将来在此装入引导分区的 Boot 扇区 然后 程序检查四个分区的分区状态 找出活动分区找出活动分区 并将该分区的并将该分区的 Boot 扇扇 区读入到区读入到0000 7C00h 处处 并检查其签字是否合法 在通过后 程序跳转到 0000 7C00h 处执行 即将控制权交给活动分区的将控制权交给活动分区的 Boot 程序程序 上面说的是用盘启动上面说的是用盘启动 下面说的是软盘下面说的是软盘 对于软盘则没有那么复杂 软盘的第一个扇区就是它的 Boot 区 系统自举时 将直接将其读入到0000 7C00h 处并执行 从功能上来讲软盘与硬盘的 Boot 区是相同的 其任务都是将区是相同的 其任务都是将 OS 的内核的内核

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论