X86X86X86X86架构内存编址及启动过程
1.1.1.1. 几个名词几个名词几个名词几个名词 X86X86X86X86架构架构架构架构::::
Intel, AMD CPU采用的结构体系.实模式, 16位模式: X86体系 CPU启动是处于此模式. DOS
启动完成也是此模式, 直接使用物理地址保护模式 ,虚模式,32位模式: linux,windows启动后
进入此模式. 使用虚拟地址.
2.2.2.2. 8086CPU8086CPU8086CPU8086CPU的限制的限制的限制的限制....
X86架构是从 8086发展来的, 所以后来的 CPU都保留了 8086的限制. 理解内存编址, 要了
解 8086.8086是 16为 CPU, 地址总线 20位.8086采用分段机制. 寻址方式是段基址+偏移
量.8086中,基本的段寄存器是CS,DS, SS, ES. 都是 16位寄存器.寻址时, 段寄存器地址左移 4
位, 加上偏移量. 就是需要的物理地址.所以 8086最大只能访问 0xfffff以内的空间(1M).
3.3.3.3. 8086808680868086编址编址编址编址
在这种体系结构下, 640K(0xA0000)以下称为基本内存. 这就是系统可用的内存.0xA0000 ~
0xBFFFF 用于显卡缓存. (640K 开始的部分)0xC0000 开始用于 BIOS, 一般显卡 BIOS 从
0xC0000开始.系统 BIOS放到可访问的 1M内存最后. 中间是一些其他设备的 BIOS, 都有各
自的固定起始地址.
4.4.4.4. 8086808680868086启动过程启动过程启动过程启动过程....
系统加电启动的时候, CPU清 0. 然后 CS寄存器设为 0xFFFF, IP寄存器设为 0x0000. 对应的
物理地址就是 0xFFFF0.可见这是在系统 BIOS里面. 一般是一条跳转指令, 跳转到真正的
BIOS处开始执行.BIOS首先自检, 此时如果发现严重错误, 比如没有内存,直接鸣喇叭,(因为
还没用显卡初始化. 如果没有 CPU呢? 没有任何反应).然后执行显卡 BIOS, 显示显卡信息.
显示系统 BIOS 自己的信息.如果是从硬盘启动,读取 MBR 到 0x7C00 处.如果引导程序是
GRUB, MBR里就包括 GRUB的 stage1代码.如果不使用 state1.5, 就通过物理扇区直接寻址
stage2(因为没有文件系统).如果是 linux系统, 就加载 kernel image.如果是用"make zImage"编
译的内核, 就加载到 0x10000处(64K位置).如果是用"make bzImage"编译的内核, 就加载到
0x100000处(1M位置).剩下的就是内核的事情了.
X86架构内存编址及启动过程
1.几个名词X86架构:
2.8086CPU的限制.
3.8086编址
4.8086启动过程.