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