X86架构(CPU、总线、内存)
先了解计算机底层最基本的工作原理,以便于以后能理解Linux系统的运作模式!!总体概要原文中对于x86架构的总结图片,重点牢记这些寄存器的作用,以及段的工作模式计算机的工作模式(了解一下)1、 CPU、总线、内存对于一个计算机来讲,所有功能看似是输入输出设备的功劳,实际干活的还是CPU。同时CPU通过内存不断的保存和取出中间数据,然后基于中间结果进行进一步的计算。总线是CPU和其...
特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料,本文大部分内容和所有图片来源于这个专栏。
00、计算机的工作模式
关键词: CPU、总线、内存、其他设备
理解: 计算机仅通过cpu执行数据运算,中间结果保存到内存,最终运算结果传递给到其他进程处理
CPU
是这台计算机的大脑总线
组成CPU和其他设备的高速通道内存
存储介质,保存CPU计算的中间结果其他设备
,显卡/显示器、磁盘控制器/磁盘、usb控制器/鼠标键盘等
01、CPU和内存
关键词: 运算单元、数据单元、控制单元、代码段、数据段、指令指针寄存器、进程切换、总线
理解: CPU内部有3个单元组成。当程序加载到内存时,cpu通过总线读取进程的数据段(数据)和代码段(指令),将运算后的结果写回数据段。
运算单元
只管算,例如做加法、做位移等等。数据单元
包括 CPU 内部的缓存和寄存器组,空间小速度快,可以暂时存放数据和运算结果。控制单元
是一个统一的指挥中心,它可以获得下一条指令,然后执行这条指令。内存分段
这里简单分为代码段和数据段两块,分别存放指令和数据。指令指针寄存器
是控制单元部分,存放下一条指令在内存中的位置。进程切换
CPU 里有两个寄存器,专门保存当前处理进程的代码段的起始地址,以及数据段的起始地址(A进程切换B进程后,指令指针寄存器也会指向B的代码段)。总线
有地址总线的位数决定寻址范围,数据总线的位数决定一次读取多少数据。
02、x86平台
关键词: 开放、统一、兼容
理解: 约定俗成
03、x86平台处理器(8086处理器和32位处理器)
关键词: CS、DS、SS、20位地址总线、32位地址总线、段描述符、选择子、实模式、保护模式
理解: 实模式是为了16位处理器(20bits总线),但这样对于32位处理器(32bits总线)无法做到兼容, 开机后会从实模式切换到保护模式。
04、总结
对于X86架构在32bits处理器会开启段的工作模式,CPU对内存寻址的过程中,控制单元寄存器中存放的是段选择子, 通过它在内存的表格中找到段描述符,最终拿到段起始地址。下图说明在此模式下cpu各单元和内存的工作模式。
05、练习题
# 了解下汇编指令:
mov, call, jmp, int, ret, add, or, xor, shl, shr, push, pop, inc, dec, sub, cmp
# 答案:
move a b :把b值赋给a,使a=b
call和ret :call调用子程序,子程序以ret结尾
jmp :无条件跳
int :中断指令
add a b : 加法,a=a+b
or :或运算
xor :异或运算
shl :算术左移
ahr :算术右移
push xxx :压xxx入栈
pop xxx: xxx出栈
inc: 加1
dec: 减1
sub a b : a=a-b
cmp: 减法比较,修改标志位
参考资料
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)