读刘超趣谈 Linux 操作系统
1. cpu
- 运算单元
负责计算,但不知道运算哪些数据,运算完不知道该存放再何处
- 数据单元
包括 cpu 内部缓存,寄存器组,空间小,速度快
- 控制单元
获取指令,根据指令控制计算单元取出数据单元中的数据并计算
2. 8086的原理
- 数据单元
一共8个16位通用寄存器,分别是 AX BX CX DX SP BP SI DI
AX BX CX DX 可以分成两个8位寄存器,分别是 AL AH BL BH CL CH DL DH
- 控制单元
IP 指令指针寄存器,指向代码段中下一条指令的位置(即相对于 CS 的偏移量)
CS 代码段寄存器,指向代码在内存中的起始位置
DS 数据段寄存器,指向数据在内存中的起始位置(数据段的偏移量一般放在通用寄存器里)
SS 栈寄存器,指向栈在内存中的位置
- 地址总线20位
CS,DS 地址左移4位,再加上16位的偏移量,凑成20位地址,总共 1M 的地址空间
每个段的偏移量是16位,总共 64k 的地址空间,表示一个进程只有 64k 的地址空间
3. 32位处理器原理
- 32根地址总线,总共 4G 地址空间
- 8个32位通用寄存器 EAX EBX ECX EDX ESP EBP ESI EDI,可分为高16位和低16位使用
- EIP 32位,指令指针寄存器,作用不变
- 段的起始地址存放在内存中,CS SS DS ES 指向内存中的这块地方
这里段寄存器的使用方式与 8086 是不兼容的,于是便有了实模式和保护模式
之前的模式是实模式,后来的是保护模式
系统刚启动的时候运行在实模式下,之后再切换到保护模式