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

本文详细介绍了x86体系结构下操作系统启动的全过程,从BIOS的初始化,到实模式与保护模式的切换,再到分段机制的建立和加载操作系统。重点讲解了BIOS如何加载主引导扇区,实模式到保护模式的转换,以及保护模式下的段描述符和地址转换机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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例行程序起始点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值