操作系统启动流程(以清华大学实验为例)

BIOS启动过程

(一)x86体系下计算机在加电之后,计算机处于实模式下,此时CS:IP=0xf000:fff0,然后会在该地址处执行一条长跳转指令,跳转到BIOS所在固件物理地址处执行BIOS程序,进行硬件检查并且加载硬盘第一块扇区(主引导扇区)的操作系统引导程序(bootloader)到CS:IP=0xf000:0x7c00处

(二)跳转到0x7c00处并执行操作系统引导程序 使能A20,建立全局描述符表GDT(简称段表),设置CR0 PE位为1,进入保护模式(32位地址,最大寻址4G字节),从硬盘第二个扇区开始加载操作系统到内存里。

(三)跳转到操作系统的起始地址执行操作系统程序。

BIOS

计算机启动后,CPU一开始会到一个特定的地址开始执行指令,这个特定的地址存放了系统初始化软件,负责完成计算机基本的IO初始化,这是系统加电后运行的第一段软件代码。对于Intel80386的体系结构而言,PC机中的系统初始化软件由BIOS (Basic Input OutputSystem,即基本输入/输出系统,其本质是一个固化在主板Flash/CMOS上的软件)和位于软盘/硬盘引导扇区中的OS BootLoader(在ucore中的bootasm.S和bootmain.c)一起组成。BIOS实际上是被固化在计算机ROM(只读存储器)芯片上的一个特殊的软件,为上层软件提供最底层的、最直接的硬件控制与支持。

以Intel 80386为例,计算机加电后,CPU从物理地址0xFFFFFFF0(由初始化的CS:EIP确定,此时CS和IP的值分别是0xF000和0xFFF0))开始执行。在0xFFFFFFF0这里只是存放了一条跳转指令通过跳转指令跳到BIOS例行程序起始点BIOS做完计算机硬件自检初始化后,会选择一个启动设备(例如软盘、硬盘、光盘等),并且读取该设备的第一扇区(即主引导扇区或启动扇区)到内存一个特定的地址0x7c00处,然后CPU控制权会转移到那个地址继续执行。至此BIOS的初始化工作做完了,进一步的工作交给了uco

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值