读《系统虚拟化-原理与实现》-第二章

x86构架及操作系统概述

x86内存构架

  • 地址空间和地址

    • 物理地址空间:内存和其他硬件资源组合到一起,分布在CPU的物理地址空间内,CPU使用物理地址索引这些资源
    • 线性地址空间:一个平台只有一个物理地址空间,但每个程序都认为自己独享整个平台的硬件资源,每个进程都有自己的私有线性地址空间
    • 逻辑地址:
    • 物理地址:是CPU提交导总线用于访问平台内存或硬件设备的最终地址
    • 线性地址: 又叫虚拟地址,当分页机制开启时,线性地址必须转换为物理地址才能访问平台内存或硬件设备
  • 分页机制

    • 分页机制是更加粒度化的内存管理机制,典型页大小是4KB页。其核心思想是通过页表将线性地址转换为物理地址。
    • 相关的寄存器:CR0的PG置1开启分页机制、CR3存储页表基地址
  • 页表

    • 页目录项: 包含页表的物理地址。CPU使用线性地址的22~31为索引页目录。每个页目录大小为4B
    • 页表项: 包含该线性地址对应的PFN(physical frame number)CPU使用线性地址的12~ 22位索引,每项大小为4B,PFN+线性地址0~11位得到物理地址。

X86构建的基本运行环境

  • 三种基本模式

    • 实模式:CPU上电首先进入的就是此模式,无权限分级。
    • 保护模式: 操作系统运行时常用的模式,有特权分级。
    • 虚拟8086模式
  • 基本寄存器

    • 通用寄存器:有8个32位通用寄存器
    • 内存管理寄存器: 包括端寄存器和描述符表寄存器
    • EFLAGS寄存器:32位的用来保存程序运行中的一些标志信息(如异常、开启终端与否)
    • EIP寄存器: 32位的,用来保存想当前指令的地址,也叫PC指针
    • 浮点运算寄存器
    • 控制寄存器: CR0~CR4,决定了CPU运行的模式和特征
  • 中断与异常

PIC:programmable interrupt controller 可编程中断控制器
IRR: interrupt request register 中断请求寄存器
ISR:in service register 服务中寄存器
IMR:interrupt mask register 中断屏蔽寄存器

  • PIC向中断提交中断流程:
  1. IR管脚上有触发电平,若对应中断没有被屏蔽则IRR中对应位被置1
  2. PIC拉高INT管脚通知CPU中断发生
  3. CPU通过INTA管脚银达PIC
  4. PIC收到INTA应答后,将IRR中最高优先级中断位清0,并设置对应的ISR位
  5. CPU通过INTA管脚第二次发出脉冲,PIC收到后计算最高优先级的中断vector,并提交到数据线上
  6. PIC等待CPU写EOI,收到EOI后,ISR中优先级最高的位被清0
  • 多处理器平台出现后APIC应运而生,其结构如下图(摘自百度百科)
  • APIC结构

概念

  • 异常: 异常最大的不同在于它是在程序的执行过程中同步发送的
  • 进程: 是一个容器,其中包含了当执行一个程序的特定实例时所用到的各种资源
  • 上下文:是程序运行时所需要的寄存器的最小集合
    • 上下文切换
    1. 用户态切换、内核态的切换
    2. 进程切换
    3. 中断上下文切换

I/O构架

  • Port I/O:通过I/O端口访问设备寄存器,X86有65536个8位的I/O端口(64K)可以使用IN/OUT命令访问端口
  • MMIO: Memory Map IO,通过访问内存的方式来访问设备寄存器或设备RAM
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章