intel cpu 和 软件栈

intel cpu

intel x86 cpu 兼容性

x86 的cpu 都是向后兼容的.
为 某个 intel cpu 写的 软件和 OS 能跑在之后发布的 intel cpu上
所以你的x86_64 cpu 也能跑 dos 和 windows 1.0

intel cpu 模式及对应cpu

8086802868038680486、Pentium、Core i3、Core i5等。
    
实模式时代典型CPU   : 8086
保护模式时代典型CPU : 80386,又叫i386
长模式时代典型CPU   : 

intel cpu的各个 时代

这些时代及模式都是后来取的,当时并没有这些概念.
长模式也叫AMD64模式,也叫x86_64保护模式
模式种类 实模式 实模式 和 x86保护模式 实模式 和 x86保护模式 和 长模式
架构名称 8086 80386(i386)/i686/x86 x86_64
寻址空间 20根地址线,可扩展到1M 4G 2^64B
安全(访存) 段寄存器+通用寄存器 段描述符索引 和 GDTR 和 段描述符
安全(特权级) 没有此概念 ring0/1/2/3 同保护模式
安全(寄存器) 能访问所有的指令和寄存器 ring0也不能访问所有的指令和寄存器 同保护模式
安全(中断) 没有权限问题,直接发生 由中断描述符表确认权限,确定是否发生
特点 直接操作,没有权限概念 用段描述符增加权限概念 弱化段模式管理,保留权限概念
启动流程 直接上电实模式 上电实模式->保护模式 上电实模式->保护模式->长模式
软件栈 实模式:BIOS+DOS 1.实模式:BIOS+GRUB+Linux 2.保护模式:GRUB+Linux 1.实模式:BIOS+GRUB+Linux 2.保护模式:GRUB+Linux 3.长模式:Linux
BOOT流程1 BIOS,然后加载DOS,DOS运行在实模式 BIOS加载硬盘中的第一个扇区数据,到0x7c00地址开始的内存空间,然后跳转到0x7c00处执行指令,一般是grub 同保护模式时代
BOOT流程2 - GRUB在启动命令行前进入保护模式,但在转交控制权给kernel前会进入实模式 同保护模式时代
BOOT流程3 - linux会完成从实模式到保护模式,用户运行时都是保护模式 linux会完成从实模式到32位保护模式,再到64位保护模式的转换,用户运行时都是64保护模式

x86_64保护模式时代下的软件栈

BIOS

cpu上电从 物理地址0xffff0 启动,0xffff0区域内是BIOS代码
BIOS代码进行硬件的诊断,检测和初始化,建立软件例程(后期供其他软件调用)
BIOS代码从辅助存储设备(仅支持硬盘,光盘,U盘)001扇区读取512字节(一般叫MBR)数据到 物理地址0x7c00,然后跳转到物理地址0x7c00执行

BIOS全程运行在 实模式.如果陷入 BIOS,则也会进入实模式

BIOS的替代品是 UEFI
    
BIOS的 软件例程(TODO)
实模式下1M空间的memory map(TODO)

intel cpu 和 软件栈_第1张图片

grub

这里描述的是grub,不是grub2
grub的第一行代码运行在实模式.在stage2开始的活动中,要设置好C环境,进入x86保护模式,并在该模式下获取命令,执行命令
grub在调用内核时转换为实模式.

GRUB的替代品是 grub2 和 UEFI

linux

linux会完成从实模式到32位保护模式,再到64位保护模式的转换,用户运行时都是64保护模式

你可能感兴趣的:(杂七杂八总览,x86_64)