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向中断提交中断流程:
- IR管脚上有触发电平,若对应中断没有被屏蔽则IRR中对应位被置1
- PIC拉高INT管脚通知CPU中断发生
- CPU通过INTA管脚银达PIC
- PIC收到INTA应答后,将IRR中最高优先级中断位清0,并设置对应的ISR位
- CPU通过INTA管脚第二次发出脉冲,PIC收到后计算最高优先级的中断vector,并提交到数据线上
- PIC等待CPU写EOI,收到EOI后,ISR中优先级最高的位被清0
- 多处理器平台出现后APIC应运而生,其结构如下图(摘自百度百科)
 
概念
- 异常: 异常最大的不同在于它是在程序的执行过程中同步发送的
- 进程: 是一个容器,其中包含了当执行一个程序的特定实例时所用到的各种资源
- 上下文:是程序运行时所需要的寄存器的最小集合 - 上下文切换
 - 用户态切换、内核态的切换
- 进程切换
- 中断上下文切换
 
I/O构架
- Port I/O:通过I/O端口访问设备寄存器,X86有65536个8位的I/O端口(64K)可以使用IN/OUT命令访问端口
- MMIO: Memory Map IO,通过访问内存的方式来访问设备寄存器或设备RAM