0%

《趣谈linux操作系统》小结(四)-工作模式

计算机的工作模式

计算机由CPU、内存、硬盘以及其它各种硬件组成。CPU与内存、硬盘等设备通过总线来交互。

图片替换文本

CPU包含运算单元、数据单元和控制单元。运算单元用于计算、数据单元保存数据, 控制单元存放指令地址。

图片替换文本

同样的,总线上主要有两类数据,一个是地址数据,也就是我想拿内存中哪个位置的数据,这类总线叫地址总线(Address Bus);另一类是真正的数据,这类总线叫数据总线(Data Bus)。

X86历史

最早地址总线设计成20位, 可以访问的地址大小为 起始地址<<4+偏移

图片替换文本

数据单元,CPU内部包含了8个通用寄存器,用于保存数据。这些寄存器比较灵活,其中 AX、BX、CX、DX 可以分成两个 8 位的寄存器来使用,分别是 AH、AL、BH、BL、CH、CL、DH、DL,其中 H 就是 High(高位),L 就是 Low(低位)的意思。

控制单元,IP地址指令寄存器。有四个 16 位的段寄存器,分别是 CS、DS、SS、ES。

16位的处理器大概就是这样子的。

32位处理器

大部分寄存器扩展为32位,栈寄存器保存为段选择子,用于选择段起始地址。

图片替换文本

到了 32 位的系统架构下,我们将前一种模式称为实模式(Real Pattern),后一种模式称为保护模式(Protected Pattern)。

直接操作寄存器可以通过汇编指令,大学时用汇编代码编写过跑马灯小程序,感觉还是挺cool的。操作系统或者许多嵌入式的系统使用了许多汇编代码直接操作寄存器,可以显著的提高程序执行的效率,只是不大可读。需要辅助注释。

行动,才不会被动!

欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。