要想谈进程,我们就不能只谈进程,我们如果想搞清楚什么是进程,就要从操作系统讲起。我们现在的不管是Linux或是Windows或是安卓等操作系统,它们都有一个相同点,那就是遵循冯·诺依曼体系结构,我们看一下冯·诺依曼体系结构
输入设备有:键盘、鼠标、磁盘、网卡等
输出设备有:声卡、网卡、显示器、打印机、磁盘等
这里的存储器就是内存,运算器和控制器共同组成了CPU
你可能会认为,不就是个这个结构吗?这有什么值得学的呢?
这个体系的关键之处就是为什么要有内存这个东西?难道输入设备直接给CPU不好吗?CPU直接给输出设备不好吗?
我们可以看到各个设备之间是独立的,是通过主板(主板里面有总线)连接起来的,连接不是目的,是手段,目的是实现设备之间的数据流动,数据如何流动呢?就是靠拷贝,所以说:如果没有内存,那么计算机的速度几乎就由拷贝的整体速度决定了,因为我们的CPU可以做的非常快,而数据之间的拷贝是远不如CPU的处理速度快的。
所以我们引入内存,就将这里的效率问题转化为了软件问题,因为我们的操作系统就是一个软件,它可以用来管理内存,操作系统写的好不好,就决定了计算机的效率高不高。我们可以预先把输入加载到内存中,等着CPU去执行,这样CPU就不会太空闲,效率就高了上来;CPU直接把输出给内存,让内存再去做其他的事情。
我们还知道一个叫存储器金字塔的东西,像这样:
从上到下依次是寄存器,一二三级缓存,内存,本地硬盘和云存储,越靠上,离CPU越近,就是直接和CPU交换数据,效率越高,但是造价越高,容量越小。
所以,也就是内存的存在,首先让我们的效率变的更高,让我们的计算机的价格可以被普通人接受,让我们更多人使用,这也是内存的意义。
可以看到:冯·诺依曼体系并不像我们想象的那么简单,它背后有着深刻的意义。所以它对于后来的计算机的发展的意义重大,造成了如今我们几乎所有的计算机都遵循冯·诺依曼体系。
于是,我们就可以解决一些问题,比如,为什么程序在运行的时候要先加载到内存中?因为冯·诺依曼体系是这么规定的。为什么要有冯·诺依曼体系,前面已经说了它的意义
比如你发送一条信息(我们可以认为是字符串)给你的朋友,请说明数据的信息流动过程:
从你的键盘到内存再到CPU,CPU中要对信息进行一些处理,最简单的要加上发送的时间,人物等,然后在经过内存到网卡,通过网络到你朋友的网卡,再到内存到CPU,要对收到的信息进行分析,再到内存再到显示器上。
总之,上面的例子就是为了能够更好的理解内存的位置和意义,外设和内存打交道,内存和CPU打交道。