## x86系统架构

#### x86内存架构
* 内存架构往往是硬件架构中最复杂的部分
* 地址空间
    1. 物理地址空间
        * 物理地址空间的大小由CPU实现的物理地址位数决定（和CPU的位数没有关系）
    2. 线性地址空间
        * 一个平台只有一个物理地址空间，但每个程序都认为自己独占整个平台的硬件资源
        * 线性地址空间会被映射到物理地址空间的部分或全部
            * 由CPU进行映射

* 地址
    * 由于x86的段机制（无法关闭），存在逻辑地址
    * 分段机制启用，分页未启用时
        * 逻辑地址 -> 线性地址 == 物理地址
    * 分段机制启用，分页启用时
        * 逻辑地址 -> 线性地址 -> 物理地址

* 内存管理机制
    * 分段机制
    * 分页机制
    * TLB

#### x86架构基本运行环境
* 三种基本模式
    1. 实模式
    2. 保护模式
    3. 虚拟8086模式

* 基本寄存器组
    1. 通用寄存器
        * EAX, EBX...
    2. 内存管理寄存器
        * 段寄存器，段描述符寄存器
    3. EFALGS寄存器
        * 标志位：溢出，中断...
    4. EIP寄存器
        * 当前指令地址
    5. 浮点运算寄存器
    6. 控制寄存器
        * CR0 ~ CR4
    7. 其他
    
* 权限控制
    * 段保护
    * 页保护

#### 中断 & 异常
* NULL

#### 进程
* 上下文
    * 上下文就是程序运行时所需的的寄存器的最小集合
        * 这些寄存器后面可能代表一类资源

#### I/O架构
* x86的I/O架构
    * I/O是CPU访问外设的方法，设备通常通过寄存器和设备RAM将自己的功能提供给CPU。
    1. Port I/O
    2. MMIO
* DMA
* PCI
* PCIE

#### 时钟
* PIT
* RTC
* TSC
* LAPIC Timer
* HPET

#### Reference
* <<系统虚拟化——原理与实现>>