内存地址【memory address】

逻辑地址(logical address)

  包含在机器语言指令中用来指定一个操作数或一条指令的地址。每一个逻辑地址都由一个段(segment)和偏移量(offset或displacement)组成,偏移量指明了从段开始的地方到实际地址之间的距离。

线性地址(linear)(也称虚拟地址virtual address)

  是一个32位无符号的整数,可以用来表示高达4G的地址,也就是,高达4 294 967 296个内存单元。线性地址通常用十六进制数字表示,值得范围从0x0000_0000到0xffff_ffff

物理地址(physical address)

  用于内存芯片级内存单元寻址。它们与从处理器的地址的引脚发送到内存总线上的电信号对应。物理地址由32位或64位无符号整数表示。

内存管理单元MMU

  MMU是中央处理器中用来管理虚拟存储器、物理存储器的控制线路,同时负责虚拟地址映射为物理地址

  MMU本质上是一个表格
    – MMU表格一边是CPU发送指令对应的虚拟地址,一边存储的是物理地址
    – 虚拟地址转化为物理地址,内存通过物理地址去读取实际的数据

/*回溯历史原因*/

在原始的PC上,程序员编程的时候遇到一个问题
  – 程序大于内存
  – 当时的解决办法是程序员将程序“分割”成一段一段的,运行的时候CPU先运行一段,然后关闭前一段,再运行下一段。
  – 虽然运行的时候,CPU可以自动处理,但是“分割”的工作由程序员完成,很痛苦,很枯燥。
/*回溯历史原因*/ 

内存管理单元的基本思路
  – 数据和堆栈的大小总和可以超过物理存储器的大小,操作系统把当前使用的部分留在内存中,其它的保留在硬盘上。

•内存管理单元——地址范围
  – 32位的CPU地址范围是0——2的32次方
  – 64位的CPU地址范围是0——2的64次方

  如果一台32位的机器有1G内存,它最大可运行4G大小的程序。  – 这台机器首先要有4G的存储空间

/*实例分析*/

CPU读取过程

  物理地址------通过分页单元(一种分页单元的硬件电路转换成)------------>线性地址---------->通过分段单元(一种分段单元的硬件电路转换成)--------->逻辑地址

CPU写过程

  逻辑地址------通过分段单元(一种分段单元的硬件电路转换成)------------>线性地址---------->通过分页单元(一种分页单元的硬件电路转换成)--------->物理地址

猜你喜欢

转载自www.cnblogs.com/dl04301201/p/10022445.html