Linux基础1

本文详细介绍了计算机从加电启动到执行main函数前的过程,包括实模式下的BIOS启动原理、中断向量表构建以及操作系统内核加载等内容。

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

第一章:从开机加电到执行main函数之前的过程:
实模式(Real Mode):是Inter80286和之后的80x86兼容CPU的操作模式。特性:是一个20位的存储器地址空间(1MB的存储器可被寻址),直接软件访问BIOS及周边硬件,没有硬件支持的分页机制和实时多任务概念。实模式寻址空间0x00000—0xFFFFF

1.1启动BIOS,准备实模式下的中断向量表和中断服务程序
1.1.1BIOS的启动原理
Inter将所有80x86系列的CPU的硬件都设计为加电即进入实模式状态运行,将CPU硬件逻辑设计为加电瞬间强行将CS的值置为0xF000,IP的值置为0xFFF0,这样CS:IP就指向0xFFFF0这个地址位置
IP/EIP(Instruction Pointer):指令指针寄存器,存在于CPU中,记录将要执行的指令在代码段内的偏移位置,和CS组合即为将要执行的指令的内存地址。实模式为绝对地址,指令指针为16位,即IP;保护模式下为线性地址,指令指针为32位,即EIP
CS(Code Segment Register):代码段寄存器,存在CPU中,指向CPU当前执行代码在内存中的区域(定义了存放代码的存储器的起始地址)
这是一个纯硬件完成的动作;BIOS程序的入口地址就是0xFFFFF0

1.1.2BIOS在内存中加载中断向量表和中断服务程序
BIOS程序在内存最开始的位置(0x00000)用1KB的内存空间(0x00000~0x003FF)构建中断向量表,在紧挨着它的位置用256字节的内存空间构建BIOS数据区(0x00400~0x004FF),并在大约57KB以后的位置(0x0E05B)加载了8KB左右的与中断向量表相应的若干中断服务程序(0x00100是256字节,0x00400是1KB)

1.2加载操作系统内核程序并未保护模式做准备
1.2.1加载第一部分内核代码——引导程序(bootsect)
中断向量表(InTerrupt Vector Table):实模式中断机制的重要组成部分,记录所有中断号对应的中断服务程序的内存地址
中断服务(Interrupt Service)程序:通过中断向量表的索引对中断进行响应服务,是一些具有特定功能的程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值