思考:究竟什么是计算机?

Posted by attack204 on 2022-07-08

究竟什么是计算机?

显然,计算机肯定要能计算,例如,计算1+1的和

另外,计算机要能够存储数据,1+1的1,到底存到磁盘的哪里,内存的哪里,怎么存?

再者,计算机要能够通信,这里的通信,既包括了两个机器之间的网络通信,机器与外设之间的通信、也包括了进程与进程间的本地通信,还包括进程中线程的互相通信,甚至,函数的调用也可以看作上层函数与下层函数之间的通信,总之,一切能够传递计算数据的过程,都可以看作通信。

还有吗?计算机还需要实现其他功能吗?

no,没有了。

由此看来,所有的计算机的一切软件,操作系统也好,进程也好,线程也好,以及一切硬件,CPU、内存、磁盘,所有的设计与所有的功能,横竖看来都是为了三件事情:存储、计算与通信。

那么我们不妨送这三方面入手,看一看计算机为了实现,到底做了哪些工作

如果按照硬件和软件来分,那么操作系统、SpringBoot、Goroutine可以看作一类,CPU、内存、磁盘、外设可以看作一类。

关于软件的思考,我将其记录在这篇文章

因此这篇文章更多的是基于硬件的思考。

计算

最终所有的计算,都要由CPU来执行。

操作系统将内存中的一段指令送入CPU(TODO:这里的通信方式是什么?)

CPU将所有的操作解析为二进制的加减乘除(即与或非)运算,通过电路门计算出结果后将数据存储为二进制的01格式。

存储

这里的存储,指的是内存、以及磁盘。

内存是易失性存储,速度快但断电后数据容易丢失。

磁盘是非易失性存储,速度慢但断电后数据会被保存下来。

通信

对于计算机内部的通信,使用总线来进行

对于不同计算机之间的通信,使用网卡来进行