内存地址 怎么工作
上一课说过,把大量记忆小格集合起来就是内存。可是在那么多小格里,怎样一下子找到你想要的那一格呢?
格子太多就找不到
记忆小格多达几十亿个。
那么在这么多小格里,“刚才存的那个值”在哪一格,怎么再把它找出来呢?
这些小格既没有名字,长得也一模一样。
每一格都长得一样,没办法单独挑出某一格。
想象一个图书馆,几万本书没有编号,乱七八糟地插在书架上。
想找到要的那本书,几乎是不可能的。
内存也有同样的问题,所以需要一个解决办法。
给每一格都编上号
解决办法和游泳馆的储物柜一样。
长得一样的储物柜上都贴着编号:0号、1号、2号……
内存也是这样,给每一格按顺序编号。
上面是格子的编号(地址),下面是格子里存的值。
这个编号叫作地址。
就像每户人家都有地址,信件才能准确送到,每一格都有地址,就能准确找到想要的那一格。
报出地址,就去那一格
有了地址,找东西只要一瞬间。
说一声“把3号格的值拿来”,内存就会直接去3号格,把里面的值取出来。
哪怕有几十亿格,只要知道编号,一步就能到。
在下面输入地址再按“读取”,就会显示那一格的值。
输入地址,就去那一格。
凭一个编号就能直接到达想要的格子,这就是内存快的秘诀。
它不从头一个个数,而是按地址直接指过去。
往想要的格子里存值
不只是能取出来。
说一声“把这个值放进5号格”,值就存进了那一格。
读取就是按地址取出,写入就是按地址放进。
这两件事就是内存所做的全部工作。
选好地址,把值放进去。
按地址读,按地址写,很简单吧。
可这两个简单的动作,正是所有程序的基础。
变量也好,照片也好,不管什么,最后都是这样按地址进进出出。
CPU按地址提出请求
现在来看整体。
负责计算的CPU需要一个值时,就按地址向内存要。
比如:“把3号的值给我,这个结果放进7号。”
CPU和内存就是这样互相传递地址,把工作一步步做下去。
按地址互相传递。
到这里,我们把计算机这副“身体”的基础转了一圈。
从0和1出发,一直走到计算、记忆,再到按地址找到格子。
从下一课开始,我们来看这些零件怎样听从真正的指令。