我们(程序员)天天都在用计算器编写代码,但你了解计算机的整体架构和各个组件是如何相互配合来完成数据的录入,数据的流转,指令的执行,结果的输出吗?
我在学校期间和实习阶段对这些问题都有过系统的学习,但那时的关注点是,只知道有什么.工作后,在日常的工作中对这些计算机组件有了更深入的认识.
因此,现在抽时间把以前的知识点梳理下,并把自己的一些理解写下来.供自己备忘和有兴趣的同学一起探讨.
一 计算机系统的总体架构
我们从一张图开始吧,如下:
<图1>
上图中有几个重要的概念.
1.1 总线
什么是总线?
总线是贯穿整个系统的电子管道
总线的传输单元是什么,大小是多大?
总线一般传送定长的字节块,也就是字(word). 字长大多数系统是4个字节(32位),有的是8个字节(64)位
总线在这计算机系统的重要性不言而喻, CPU在计算的过程中随时随地都在通过总线传递数据到其它部件.
1.2 IO设备
每个IO设备通过一个控制器或适配器与IO总线连接,接入整个计算机系统.
可以把I/O设备(磁盘,键盘,显示器,网络)都可以视为文件.
1.3 主存
通常说的内存. 程序运行过程中绝大多数的数据都存放在主存中,当计算需要用到某一部分数据时,通过总线把这部分数据从主存加载到寄存器,通过CPU运算得到结果后,再存储到主存.
<