第三章:计算机CPU、内存、硬盘三者的关系

更新于:2017-01-01 20:44:39

我们都知道一台计算机有硬盘、CPU、内存,硬盘就是存文件数据的地方,就像我们电脑的C盘、D盘,计算机断电也不会丢失数据。


CPU即中央处理器,它是负责计算的。我们都知道所有的数据在电脑里都是一串二进制数字,我们能正常打开文件、播放电影音乐,都是CPU在计算处理二进制数据,做加法运算。CPU很笨,它只会做加法运算,不会减法、乘法、除法,比如计算234*768,它就是靠连续相加768个234得出的结果。由于计算机计算的速度(做加法)超级快,所以很快就得出了结果。那它怎么做减法运算呢?等到后面学习位运算,了解什么是原码,反码,补码,就知道原来减法也是靠相加得到的。


内存,我从程序运行的角度来说,就是存放临时数据的地方。运行一个程序,比如运行PHP,一整套流程下来,会做大量数据计算,暂时用不着的数据得有个地方放,那就是内存。


CPU并不能直接调用存储在硬盘上的系统、程序和数据,必须首先将硬盘的有关内容存储在内存中,这样才能被CPU读取运行。因而,内存(即物理内存,是相对于硬盘这个“外存”而言)作为硬盘和CPU的“中转站”,对电脑运行速度有较大影响。


程序从内存读取数据比从硬盘要快,但内存断电后数据就会消失,内存不宜做长久储存地,可以放些临时数据。


一个形象的比喻:“CPU是工厂,硬盘是大仓库,内存是正规中转中心,虚拟内存是临时中转中心”,大致接近实际,但不完全准确。


当运行数据超出物理内存容纳限度的时候,部分数据就会自行“溢出”,这时系统就会将硬盘上的部分空间模拟成内存——虚拟内存,并将暂时不运行的程序或不使用的数据存放到这部分空间之中,等待需要的时候方便及时调用。


扩充知识:


所有的编程语言都有变量,变量可以是一个字符串、一个数字或者其他的数据类型,这个变量的数据在程序运行时是存在内存里的。内存就像人一样有名字,说是名字,其实是一个编号,是一个地址符号。每一块内存(一个字节大小)都有一个地址名称,32位操作系统,每一块内存地址编号是一个32位二进制数字(是以十六进制格式表示)。对于32位的地址空间,大小为2的32次方,也就是从Ox00000000~OxFFFFFFFF 共计 4294967296 字节,即4GB。如果你的计算机操作系统是32位地址,那么可到达的物理空间只有4GB,这也就是为什么32位操作系统最高可支持内存只有4GB了。64位操作系统可支持的内存就很大了。


我们学习PHP不关注内存的,也不直接操作内存,但对内存多一些了解对程序的认识是有帮助的。