
计算机内存的理解
计算机内存的理解是我们理解地址的核心
物理层面
首先我们要知道为什么计算机的内存和物理现实(硬件)有关,
既然说内存存的是一堆数字,那么数字该怎么存在现实里呢?
实际上,计算机里面所有的数据都是比特形式(01二进制)
这种二进制生万物的记录依靠的是电信号,基本电路组件叫做逻辑门(有兴趣可以进一步学习,属于数电内容)
内存条上的电子电路。每一个0和1,本质上是电压的高低状态。
所以不是永久的,只要断电就会丢失。
程序层面
在程序层面,内存、地址和CPU是密切相关的。
我们在程序中声明一个变量就是在内存里面给它分配了一块存储空间,程序写完之后,先编译换成计算机能够理解的机器指令。在运行时,操作系统会将程序加载到内存中,CPU读取指令,并对指令进行解码,依照程序指令操作,到对应地址调用数据,在CPU中计算,再将结果写回内存。
因此,程序的运行本质上就是CPU不断地从内存中取指令和数据、执行运算并更新内存的过程。
内存的作用
内存我们可以借助人脑来辅助理解,我们在高中生物里面学习了记忆分长期记忆和短期记忆(工作记忆)
计算机也是一样,硬盘就像是长期记忆,用来长期存储的。
内存像是工作记忆,用来短期记忆 (断电之后就消失了的)
但是必要性呢?
那么既然是数据存在硬盘里面,直接操作就好,何必多此一举呢?(就像是我们人脑每天要接触巨量的信息,比如快记一串电话号码,但如果每次都要等待转化成长期记忆才用那效率也太低了)
计算机同样需要追求高效,就像是C语言里面数组的初始化不清除内存自动补0一样,计算机进入硬盘处理数据太麻烦,所以借用内存这个工作台来辅助。
硬盘和内存储存数据的底层逻辑不同所以带来数量级的处理速度的差异。内存的存储靠的是电压的改变,结构简单、访问速度极快;而硬盘(不管是机械硬盘还固态硬盘)依靠的都是电子“固定”在存储单元中实现断电保存,这一过程涉及更复杂的控制与操作,因此速度远低于内存。
互联网服务器
从单机扩展到互联网:
公司会部署很多服务器,你的请求会随机发到其中一个服务器那里,服务器访问数据库再调回数据。
这个服务器就相当于内存 作为一个临时工作台 来解决你的请求
类比关系是:服务器(内存)数据库(硬盘)