OS-x86-32之80836机器硬件介绍

文章详细介绍了x86-32架构中的8086处理器在实模式和保护模式下的内存寻址,包括段寄存器、通用寄存器的作用,以及内存分页机制。同时阐述了CPU从实模式通过BIOS进入保护模式,最终启动操作系统的流程。
摘要由CSDN通过智能技术生成

x86-32之80836机器硬件介绍

内存架构

80386有四种运行模式:实模式、保护模式、SMM模式、虚拟8086模式

  • 实模式(Real Mode)

为了兼容8086的CPU操作模式,CPU加电后处于实模式运行状态,寻址方式为16位段寄存器和16位偏移寄存器组合寻址,能访问物理内存空间不超过1MB(0xFFFFF),不支持段页机制

8086:16位数据总线和20位地址总线决定段的最大长度不超过64KB,最大寻址空间为1MB

  • 保护模式

支持内存分页机制,还提供了虚拟内存的支持

逻辑地址:即逻辑上的地址,实模式下由“段基地址+段内偏移”组成;保护模式下由“段选择符+段内偏移”组成。

线性地址:逻辑地址经分段机制后就成线性地址,它是平坦的;如果不启用分页,那么此线性地址即物理地址。

物理地址:线性地址经分页转换后就成了物理地址。

段机制启动,页机制未启动:逻辑地址->段机制处理->线性地址=物理地址

段机制和页机制都启动:逻辑地址->段机制处理->线性地址->页机制处理->物理地址

寄存器

通用寄存器

  • DEAX: 累加器

  • EBX: 基址寄存器

  • DECX: 计数器

  • EDX: 数据寄存器

  • ESI: 源地址指针寄存器

  • EDI: 目的地址指针寄存器

  • EBP: 基址指针寄存器

  • ESP: 堆栈指针寄存器

段寄存器(用于寻址)

  • CS: 代码段(Code Segment) 在实模式和保护模式含义不同

  • DS: 数据段(Data Segment)

  • ES: 附加数据段(Extra Segment)

  • SS: 堆栈段(Stack Segment)

  • FS: 附加段

  • GS: 附加段

指令指针寄存器EIP

EIP的低16位就是8086的IP,它存储的是下一条要执行指令
的内存地址

实模式下,CS和EIP共同完成对16位地址空间寻址

保护模式下,CS和EIP共同完成对32位地址空间寻址,EIP表示指令的段内偏移地址

标志寄存器EFlags

IF(Interrupt Flag) :中断允许标志位,由CLI,STI两条指令
来控制;设置IF使CPU可识别外部(可屏蔽)中断请求。复位
IF则禁止中断。IF 对不可屏蔽外部中断和故障中断的识别没
有任何作用。
CF,PF, ZF,…

操作系统启动流程

CPU加电后进入实模式,初始化寄存器(CS=0xF000 IP=0xFFF0 PC=CS*16+IP=0xFFFF0,0xFFFF0是BIOS的入口地址,该指令一般是跳转指令)BIOS开始执行:

在内存中建立中断向量表、BIOS数据区和中断服务程序(BIOS即基本I/O系统)
硬件自检,包括检测含操作系统的硬盘,

“INT 19”中断服务程序加载主引导扇区MBR(512字节)到内存的0x7C00,主引导扇区中的bootloader使能保护模式,开始支持段机制,从硬盘中读取kernel,然后跳转到OS的第一条指令,OS启动完成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值