内存和地址
举个例子 为了在宿舍能快速找到一个同学,就得先知道他住在哪栋哪一间 所以宿舍每一间都有自己的编号 当然计算机也不例外
CPU要进行数据处理就得先在内存中读取数据,处理后的数据
也会返回到内存中去 内存空间是如何进行高效管理的呢?请往下看
其实内存也像 宿舍一样 被划分为一个个内存单元 每个内存单元能存下一个字节 8个比特位
最小的内存单位是bit-比特位 1个bit可以存储2进制位的0或1;
1byte = 8bit
1kb = 1024 kb
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024 GB
.........
内存单元也有自己的编号 所以CPY可以快速地找到一个内存空间 生活中我们门牌号叫做地址,内存中内存单元也叫做地址,在C语言中给地址起了新的名字叫做指针。
所以内存单元编号=地址=指针
内存编号是以16进制进行编号的
CPU访问内存中的某个字节空间的时候 必须知道字节空间在内存的什么位置,所以给内存进行了编止
计算机中的编止并不是把每个字节的地址记录下来,而是通过硬件设施完成的
就如同吉他和钢琴的琴声是制造者已经设计好的
计算机内有很多的硬件单元 硬件单元之间需要协同工作 也就是需要进行数据的传输 那怎样用进行数据传输的呢? 当然是用线连接起来 CPU和内存之间进行数据之间传输的线有地址总线 数据总线 控制总线 首先通过数据总线 决定CPU是读取数据还是存入数据 然后在通过地址总线找到相应的数据 最后通过数据总线对数据的读取或存入
我们主要关注地址总线 举个例子
32位机器就有32根地址总线 每根只有两种状态 0和1(有无电脉冲),所以1根线就有两种含义
2根就有4种 32根就有2^32种 每一种都代表的一个地址
地址信息下达给内存 在内存上,就可以找到改地址的对应数据,将数据通过数据总线传入CPU寄存器中去