引导代码

本文详细分析了Linux0.11版本的引导流程,从BIOS加载中断向量表开始,逐步讲解引导程序bootsect如何加载操作系统内核,包括内存规划、中断服务程序的使用,以及setup程序如何建立新的中断机制和全局描述符表。最后,介绍了内核加载到内存的步骤和原因。
摘要由CSDN通过智能技术生成

分析linux0.11版本的引导程序


BIOS程序从0XFFFF0处开始执行,BIOS程序的入口地址就在0XFFFF0,第一条指令就放在这个位置;

CS(code segment register)代码段寄存器,存在于CPU中,指向CPU当前执行代码在内存中所在的区域;

IP/EIP(Instruction Pointer)指令指针寄存器,存在于CPU中,记录将要执行的指令在代码段内的偏移地址,


1,BIOS在内存中加载中断向量表和中断服务程序;

BIOS程序固化在计算机主板上一块很小的ROM芯片里面,通常不同的主板所用的BIOS也有所不同,就启动部分而言,各种类型的BIOS原理大致相似,

该例程所示的BIOS只有8K,所占用地址段为0XFE000~0XFFFFF,


BIOS程序在内存的最开始位置(即0X00000)用1kb的内存空间(0x00000 ~ 0x003ff)构建中断向量表,并在紧挨着的位置用256字节的内存空间构建BIOS数据区(0x00400~0x004ff),在大约56KB以后的位置(0X0E05B)加载了8KB左右的中断向量表相应的若干中断服务程序,

中断向量表中有256个中断向量,每个中断向量占4个字节,其中2个字节是CS的值,两个字节是IP的值,每个中断向量都指向一个具体的中断服务程序;


2,加载操作系统内核程序并为保护模式做准备;

从现在开始要执行真正的boot操作了,即把软盘中的操作系统程序加载至内存,对于0.11版本而言,计算机将分3批次逐次加载操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值