美文网首页
CPU中逻辑地址、线性地址与物理地址

CPU中逻辑地址、线性地址与物理地址

作者: JamFF | 来源:发表于2021-03-09 09:24 被阅读0次

    在学习Linux内存管理过程中,会遇到逻辑地址、线性地址和物理地址三个概念。

    下面的示例代码分别是在i686和x86_64系统上运行的。那么打印出的变量tmp地址和指针p指向的内存块地址分别是什么地址?物理地址?线性地址?逻辑地址?

    • 逻辑地址(Logical address)
      在机器语言指令中,来说明操作数或指令的地址。在x86架构中,每个逻辑地址包括两部分:段(Segment)和偏移量(Offset)。

    • 线性地址(Linear address)
      也称为虚拟地址。在32位CPU中,它是32位的无符号整型,最大可以达到4G。在x86_64 CPU中目前最大可使用40位地址线,即最大可寻址1TB。

    • 物理地址(Physical address)
      物理内存的实际地址,由BIOS统一编址。

    这三种地址关系为,逻辑地址经过段式映射(Segmentation Translation)到线性地址线性地址经过页面映射(Page Translation)后,得到物理地址

    x86 CPU中段机制(Segmentation)可以将程序的代码(Code)、数据(Data)、栈(Stack)分开,这样多个程序(或进程)就可以在同一个CPU上运行,而相互不会干扰。

    页机制(Paging)用来实现传统的以页面为需求的虚拟内存系统,只有程序需要时,才真正给进程分配物理内存。页机制也可以用来隔离多个任务。


    原文地址:x86/x86_64 CPU中逻辑地址、线性地址与物理地址

    相关文章

      网友评论

          本文标题:CPU中逻辑地址、线性地址与物理地址

          本文链接:https://www.haomeiwen.com/subject/gtyvqltx.html