内存地址的实质是什么?

来源:百度知道 编辑:UC知道 时间:2024/06/07 02:19:54
变量内存地址并不是实实在在的内存单元的特殊地址吧?它其实是一种引起物理机器读内存信息的一种指令吗?

内存地址
系统 ram 中的特定位置,通常以十六进制的数字表示。
在8086的实模式下,把某一段寄存器左移4位,然后与地址ADDR相加后被直接送到内存总线上,这个相加后的地址就是内存单元的物理地址,而程序中的这个地址就叫逻辑地址(或叫虚地址)。在80386的保护模式下,这个逻辑地址不是被直接送到内存总线,而是被送到内存管理单元(MMU)。MMU由一个或一组芯片组成,其功能是把逻辑地址映射为物理地址,即进行地址转换。
当使用80386时,我们必须区分以下三种不同的地址:
逻辑地址:
机器语言指令仍用这种地址指定一个操作数的地址或一条指令的地址。这种寻址方式在Intel的分段结构中表现得尤为具体,它使得MS-DOS或Windows程序员把程序分为若干段。每个逻辑地址都由一个段和偏移量组成。
线性地址:
线性地址是一个32位的无符号整数,可以表达高达232(4GB)的地址。通常用16进制表示线性地址,其取值范围为0x00000000~0xffffffff。
物理地址:
也就是内存单元的实际地址,用于芯片级内存单元寻址。物理地址也由32位无符号整数表示。
MMU是一种硬件电路,它包含两个部件,一个是分段部件,一个是分页部件,在本书中,我们把它们分别叫做分段机制和分页机制,以利于从逻辑的角度来理解硬件的实现机制。分段机制把一个逻辑地址转换为线性地址;接着,分页机制把一个线性地址转换为物理地址。

是这样,内存地址是由段地址和偏移地址组成的。Cpu管理内存是分段管理的,偏移地址就是距段首址的位移量,段地址存在cpu的段寄存器中,而偏移地址放在Cpu里的其它寄存器中。当Cpu调用内存某个数据时就会从内部寄存里寻找该内存内容的段地址和偏移地址,也就是它的物理地址,这个过程就是寻址。