目录
冯诺依曼体系结构硬件
下面是整个冯诺依曼体系结构
冯诺依曼的存储
注意, 是存储, 不是存储器。
存储等级
首先这里要对上面这张图进行解释。 对于计算机整个结构来说, 一共有这么多层存储结构。 第一层是寄存器, 然后是一级存储,二级存储, 三级存储, 内存以及磁盘。 这些存储结构, 从上到下容量越来越大, 速度越来越慢, 价格越来越低。
对于寄存器和内存以及磁盘的存储速度来说: 寄存器的速度可以达到纳秒级别, 然后内存的速度可以达到微妙级别, 外存的速度可以达到毫秒级别。 也就是说, 三个存储结构的相差级次达到了10的三次方。
存储器的作用
那么进入主题, 我们思考一下对于冯诺依曼体系结构来说, 不能将存储器直接去掉。 让输入设备直接通向中央处理器再前往输出设备, 这是为什么?答案是因为输入输出设备的速度和cpu的差距太大了。下面对细节进行解释:
首先木桶原理告诉我们,木桶的存水量由最短的那个短板所决定。 那么对于计算机来说, 寄存器的存储速度最快。而磁盘也就是输入输出设备的存储速度最慢。那么也就是说, 磁盘决定了整个冯诺依曼体系的运行速率。 那么去掉存储器也就是内存后, 整个计算机体系的运行速率仍然由输入和输出设备进行决定。 那么去掉存储器的意义就不会太大。
冯诺依曼的数据流动
程序的运行
那么, 关于为什么不去掉存储器的问题我们想清楚后, 再来思考一个问题:一个程序要运行, 为什么要加载到内存中呢?(这里可能有点友友不知道程序要运行必须加载到内存中, 这里记住就可以)
那么, 我们就要知道, 对于内存来说, 内存是一个断电易丢失数据的存储空间。 那么一个程序我们能够长久地保存在计算机中, 那么它势必是存储在磁盘中。也就是说, 程序是放到输入设备中的, 而cpu只从内存中拿数据。 所以, 一个程序想要被cpu计算, 那么这个程序就要被放到内存中。 所以, 程序在运行之前, 一定要先将程序缓存到内存中, 然后cpu再从内存中拿到数据。 这个过程, 是由冯诺依曼体系决定的。所以, 软件在执行的时候, 必须遵守硬件的规则。 硬件就是底层和下限, 软件就是上层和天花板。
数据的打印
第二个问题:为什么对于打印一行的数据来说, 默认的数据, 是可能被缓存起来的?在哪里缓存呢?
首先, 数据是默认缓存到内存的某个区域, 如果这时缓存区没有满或者没有换行符, 那么这个缓存区就不会刷新, 只有刷新后, 那么才会将缓冲区的数据全都打印出来。 这就是为什么我们经常看到一行一行的打印数据。
网络交互数据的流动
第三个问题, 我们在网络上发送文件, 发送消息聊天的时候。 数据是怎么流动的呢?
现在我们有张三和李四两个人, 两个都登录了qq, 并且两个人还在聊天。
那么假如张三给李四发了一条消息。 首先, 张三从键盘上输入, 然后输入的内容进入到了存储器之中进行缓存, 然后这些内容有传送到了cpu之中进行计算, 然后返回到内存之中, 又从内存之中输送到张三的显卡之中。 李四的电脑上面的网卡接收到张三网卡中传送过来的信息后, 将数据缓存到内存中, 然后放到cpu中进行计算放回内存, 最后从内存取出放到李四的显示屏上。 这就是聊天时的数据流动。
那么发送文件是类似的。 假如张三给李四发了一个文件, 首先, 张三的电脑要从磁盘里拿到这个文件放到存储器中进行缓存, 然后内存中的文件放到cpu中进行解析和计算。 完成之后放回存储区, 然后输送到网卡中, 进而输送到李四的网卡中。 那么李四的网卡接受到文件之后就将文件放到存储区, 然后经过cpu的解析与计算放回存储区, 再从存储区输送到李四电脑的磁盘中。 这就是传送文件时的流动。
综上, 我们其实可以发现, 在冯诺依曼体系中的数据传送, 归根结底就是就是两台冯诺依曼依靠输入输出设备, 网卡等硬件,将数据进行传送的过程。
--------------------------------------------------
以上, 就是本节全部内容, 下面是本节的笔记
发表评论