究竟什么是计算机?
显然,计算机肯定要能计算,例如,计算1+1的和
另外,计算机要能够存储数据,1+1的1,到底存到磁盘的哪里,内存的哪里,怎么存?
再者,计算机要能够通信,这里的通信,既包括了两个机器之间的网络通信,机器与外设之间的通信、也包括了进程与进程间的本地通信,还包括进程中线程的互相通信,甚至,函数的调用也可以看作上层函数与下层函数之间的通信,总之,一切能够传递计算数据的过程,都可以看作通信。
还有吗?计算机还需要实现其他功能吗?
no,没有了。
由此看来,所有的计算机的一切软件,操作系统也好,进程也好,线程也好,以及一切硬件,CPU、内存、磁盘,所有的设计与所有的功能,横竖看来都是为了三件事情:存储、计算与通信。
那么我们不妨送这三方面入手,看一看计算机为了实现,到底做了哪些工作
如果按照硬件和软件来分,那么操作系统、SpringBoot、Goroutine可以看作一类,CPU、内存、磁盘、外设可以看作一类。
关于软件的思考,我将其记录在这篇文章中
因此这篇文章更多的是基于硬件的思考。
计算
最终所有的计算,都要由CPU来执行。
操作系统将内存中的一段指令送入CPU(TODO:这里的通信方式是什么?)
CPU将所有的操作解析为二进制的加减乘除(即与或非)运算,通过电路门计算出结果后将数据存储为二进制的01格式。
存储
这里的存储,指的是内存、以及磁盘。
内存是易失性存储,速度快但断电后数据容易丢失。
磁盘是非易失性存储,速度慢但断电后数据会被保存下来。
通信
对于计算机内部的通信,使用总线来进行
对于不同计算机之间的通信,使用网卡来进行