冯诺依曼体系结构与操作系统初理解
1 冯诺依曼体系结构
我们的计算机是由硬件构成的,但各种硬件如:显示器、键盘、网卡、磁盘等硬件设备并不是杂乱无章地组合就能成为计算机的,所有的计算机都需要按照一定的组织结构将所有的硬件划分在一起,而当前最常见的计算机组织结构就是冯诺依曼体系结构。
1.1 基本概念理解
对上图各个部分的介绍
输入设备:键盘、鼠标、话筒、摄像头、网卡、磁盘…… 输出设备:显示器、磁盘、网卡、打印机…… CPU(中央处理器):主要由运算器和控制器组成。 运算器主要是用来进行运算的,我们所做的运算主要分为两种:算术运算(加减乘除) 和逻辑运算(真假、位运算) 控制器主要是用来控制 CPU 去取指令、分析指令、执行指令等工作 存储器:现阶段理解存储器就是内存!
其他概念介绍: 外设:输入输出设备我们统称为外设。外设需要做的是:将输入设备的数据读到内存里,将内存中的数据输出到外设中。 磁盘和网卡比较特殊,他们既是输入设备又是输出设备。网卡因为网络我们还没学习,暂时先不做介绍。 IO:之前我们写 C/C++ 程序进行文件读取时,读文件就是将磁盘中的文件读到内存里,写文件就是将内存中的文件写到磁盘中。我们将这种读写的动作称为 input/output,即 IO。 理解 IO 应站在内存的角度,输入设备把数据交给你(内存)就是 input;你(内存)把数据给输出设备就是 output
1.2 CPU 只和内存打交道
我们都知道,我们写的程序要运行,必须先将生成的可执行文件加载到内存中,那么程序运行之前放在哪里? 答案是在磁盘。 程序本质就是一个文件,它就是我们编译好的,在特定路径下的二进制文件。
为什么程序要运行必须先加载到内存中呢? 上面的冯诺依曼体系结构图中,红色箭头表示数据的流动方向。从图中不难看出:CPU 只能从内存中读写数据!在数据层面上,CPU 只认内存,无法直接识别什么输入输出设备。 那我们的软件运行,是谁在运行我们的软件呢?正是 CPU,是 CPU 执行我们的代码,访问我们的数据。 可是 CPU 无法读取外设,所以我们必须把程序加载到内存,如此才能被 CPU 访问到。 这是由冯诺依曼体系结构规定的。
在冯诺依曼体系结构中,数据的流动方向永远是:输入设备 -> 内存 -> CPU -> 内存 -> 输出设备
但'流动'这个词太抽象,我们换句话:数据流动的本质是从一个设备'拷贝'到另一个设备。
所以可以推导出:冯诺依曼体系结构的效率取决于设备的'拷贝'效率决定
小结: CPU 在数据层面,只和内存打交道;外设只和内存打交道。
1.3 为什么冯诺依曼是这种结构
所以冯诺依曼为什么是上图的结构呢?可不可以不要内存,直接:输入设备 -> CPU -> 输出设备 这种结构呢?


