赞
踩
前言: 本篇内容是为了让友友们较好地理解进程的概念, 而在真正了解进行概念之前, 要先了解一下冯诺依曼体系结构。 所以博主会先对冯诺伊曼体系结构进行解释, 然后再讲解进程的概念。
ps: 本篇内容适合了解一些linux指令地友友们进行观看
目录
下面是整个冯诺依曼体系结构
储存器: 友友们第一眼看到储存器, 可能认为储存器就是我们电脑上面的内存、磁盘、u盘这种存储设备, 但是其实存储器其实只是电脑上面的内存。 而磁盘, u盘这种其实是输入输出设备。
输入输出设备:计算机是为了帮助人们进行计算的, 而我们要进行某个数据地计算, 就要能够将这个数据写入计算机的内存中, 然后计算机还能将结果反馈给我们。但是我们的计算机只能够认识0101这种二进制文字, 而我们人是不能够识别这些文字的。 所以我们就很难直接访问内存, 必须要借助一些输入输出设备。 通过这些设备将我们人的文字转化为二进制文字输入给计算机,然后通过输出设备将这些二进制文字转化为人的文字反馈给我们。
常见的输入设备有:键盘、鼠标、磁盘、u盘、网卡、摄像头、话筒等等
常见的输出设备有: 显示器、播放器硬件、磁盘、网卡等等
通过上面的输入输出设备我们可以发现, 有的硬件是纯的输入设备, 有的硬件是纯的输出设备。有的硬件既是输入设备, 又是输出设备。
比如说网卡和磁盘, 我们有时候需要从磁盘中读取数据进行计算, 那么它就是输入设备。 当我们需要从磁盘中输出数据进行计算, 那么他就是输出设备;又比如网卡, 我们需要从网络中获取资源时, 那么网卡就是输入设备。 我们需要在网络中发送资源时,那么网卡就是输出设备。
运算器:运算器是计算机中对数据进行计算的, 计算分为两种——算术运算和逻辑运算。
控制器:对于计算机来说, 什么时候将输入设备的数据放入到存储器。 什么时候将存储器的数据放到运算器。 什么时候将运算器的数据取出再放回到存储器中, 是由控制器控制的。
注: 上面的输入输出设备被称为外设。 上面的运算器和控制器也就是中央处理器被称为cpu。
我们也要知道, 计算机的本质就是一堆硬件的集合, 并且这些硬件之间有协同的能力。
硬件也就是组件, 组件和组件之间需要使用某种方式传递信号, 当代计算机的组成, 都是由冯诺依曼体系结构构成的。
上面那些硬件——存储器、输入输出设备、运算器、控制器等都是独立的个体, 但是各个硬件单元必须要用“线”连接起来, 这些线叫做总线。 总线分为两类——IO总线、系统总线。
其中cpu和存储器, 也就是和内存中进行交互的叫做系统总线。 外设和存储器交互的叫做IO总线。
注意, 是存储, 不是存储器。
首先这里要对上面这张图进行解释。 对于计算机整个结构来说, 一共有这么多层存储结构。 第一层是寄存器, 然后是一级存储,二级存储, 三级存储, 内存以及磁盘。 这些存储结构, 从上到下容量越来越大, 速度越来越慢, 价格越来越低。
对于寄存器和内存以及磁盘的存储速度来说: 寄存器的速度可以达到纳秒级别, 然后内存的速度可以达到微妙级别, 外存的速度可以达到毫秒级别。 也就是说, 三个存储结构的相差级次达到了10的三次方。
那么进入主题, 我们思考一下对于冯诺依曼体系结构来说, 不能将存储器直接去掉。 让输入设备直接通向中央处理器再前往输出设备, 这是为什么?答案是因为输入输出设备的速度和cpu的差距太大了。下面对细节进行解释:
首先木桶原理告诉我们,木桶的存水量由最短的那个短板所决定。 那么对于计算机来说, 寄存器的存储速度最快。而磁盘也就是输入输出设备的存储速度最慢。那么也就是说, 磁盘决定了整个冯诺依曼体系的运行速率。 那么去掉存储器也就是内存后, 整个计算机体系的运行速率仍然由输入和输出设备进行决定。 那么去掉存储器的意义就不会太大。
那么友友们就会疑惑了, 那么既然去掉存储器和不去掉存储器。 根据木桶效应计算机体系的效率都是由输入输出设备进行决定, 那么为什么还要加存储器增加计算机的成本呢?
这个问题很重要很重要, 为什么? 原因就是“缓存原理”——这个词不是官方, 这个词是博主为了好理解, 自己说的。 佬们笑一笑就好。
首先我们要知道, 内存的存储空间一般都在1g到32g(目前一般的电脑都在16g, 有可能有的电脑更多, 而且也很少有1, 2g的电脑了)。 那么我们的内存就可以在cpu没有工作的时候, 先将输入输出设备的数据预缓存到自己里面。等到cpu开始工作的时候, 就将这些预先缓存好的数据再放到cpu中解析与处理。 这个时候内存还能基于预缓存输入输出设备输送过来的其他数据。 这就是IO, 系统两条总线并行。 可以大大加快整个系统的工作效率。
那么, 有的友友可能又会问。 博主, 那既然cpu里面的存储那么快, 为什么不将计算机的内存, 磁盘, 这些存储设备都换成cpu这样的呢?
对于这个问题, 首先我们要重新知道, cpu的存储空间, 其实就是寄存器。 那么我们知道, 寄存器的造价非常昂贵, 可使用的内存非常小。 要想造出一台几百个g寄存器的计算机, 成本非常高。 一般群众用不起——要知道, 计算机造出来, 就是要给群众使用的, 计算机之所以能发展的这么好, 就是因为它还算便宜。 如果一台计算机几十几百万, 那么没有多少人会用。 当然有人会用, 但是还是在少数。 所以, 现在有一套成本低, 效率不错的计算机体系结构——冯诺依曼, 为什么不用。 所以, 冯诺依曼, 我们的现在的计算机还在使用它。
那么, 关于为什么不去掉存储器的问题我们想清楚后, 再来思考一个问题:一个程序要运行, 为什么要加载到内存中呢?(这里可能有点友友不知道程序要运行必须加载到内存中, 这里记住就可以)
那么, 我们就要知道, 对于内存来说, 内存是一个断电易丢失数据的存储空间。 那么一个程序我们能够长久地保存在计算机中, 那么它势必是存储在磁盘中。也就是说, 程序是放到输入设备中的, 而cpu只从内存中拿数据。 所以, 一个程序想要被cpu计算, 那么这个程序就要被放到内存中。 所以, 程序在运行之前, 一定要先将程序缓存到内存中, 然后cpu再从内存中拿到数据。 这个过程, 是由冯诺依曼体系决定的。所以, 软件在执行的时候, 必须遵守硬件的规则。 硬件就是底层和下限, 软件就是上层和天花板。
第二个问题:为什么对于打印一行的数据来说, 默认的数据, 是可能被缓存起来的?在哪里缓存呢?
首先, 数据是默认缓存到内存的某个区域, 如果这时缓存区没有满或者没有换行符, 那么这个缓存区就不会刷新, 只有刷新后, 那么才会将缓冲区的数据全都打印出来。 这就是为什么我们经常看到一行一行的打印数据。
第三个问题, 我们在网络上发送文件, 发送消息聊天的时候。 数据是怎么流动的呢?
现在我们有张三和李四两个人, 两个都登录了qq, 并且两个人还在聊天。
那么假如张三给李四发了一条消息。 首先, 张三从键盘上输入, 然后输入的内容进入到了存储器之中进行缓存, 然后这些内容有传送到了cpu之中进行计算, 然后返回到内存之中, 又从内存之中输送到张三的显卡之中。 李四的电脑上面的网卡接收到张三网卡中传送过来的信息后, 将数据缓存到内存中, 然后放到cpu中进行计算放回内存, 最后从内存取出放到李四的显示屏上。 这就是聊天时的数据流动。
那么发送文件是类似的。 假如张三给李四发了一个文件, 首先, 张三的电脑要从磁盘里拿到这个文件放到存储器中进行缓存, 然后内存中的文件放到cpu中进行解析和计算。 完成之后放回存储区, 然后输送到网卡中, 进而输送到李四的网卡中。 那么李四的网卡接受到文件之后就将文件放到存储区, 然后经过cpu的解析与计算放回存储区, 再从存储区输送到李四电脑的磁盘中。 这就是传送文件时的流动。
综上, 我们其实可以发现, 在冯诺依曼体系中的数据传送, 归根结底就是就是两台冯诺依曼依靠输入输出设备, 网卡等硬件,将数据进行传送的过程。
--------------------------------------------------
以上, 就是本节全部内容, 下面是本节的笔记
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。