Memory 内存布局的解释

Memory 内存布局的解释,memory,heap-memory,memory-layout,Memory,Heap Memory,Memory Layout,在此,有一个程序内存布局部分的示例图像: 这样的图像中的每一行代表什么?每一行是否代表一行物理内存?通常物理内存的每一行都是32位或64位的,所以在这种情况下,映像中的每一行是否都包含了几行物理内存 谢谢。每个两位数组代表一个八位字节(字节)。它们通常以16个八位组的形式排列,因为它非常适合打印页面或终端屏幕。最左侧八位字节的地址位于左列(例如00430020) 这种表示法被用作排版惯例,不一定与内存的物理结构有任何关系。人们希望它是显而易见的,但是 上图中的每一行表示16个字节(假设地址每行

在此,有一个程序内存布局部分的示例图像:

这样的图像中的每一行代表什么?每一行是否代表一行物理内存?通常物理内存的每一行都是32位或64位的,所以在这种情况下,映像中的每一行是否都包含了几行物理内存


谢谢。

每个两位数组代表一个八位字节(字节)。它们通常以16个八位组的形式排列,因为它非常适合打印页面或终端屏幕。最左侧八位字节的地址位于左列(例如
00430020


这种表示法被用作排版惯例,不一定与内存的物理结构有任何关系。

人们希望它是显而易见的,但是

上图中的每一行表示16个字节(假设地址每行前进十六进制0x10,并且假设每行上有16个字节)

“通常物理内存每行有32位或64位”--当然,不是。物理内存主要分为8位字节。计算机从内存到CPU可能有一条32或64位宽的传输路径,但该路径的宽度与理解上述图表无关。(计算机内部的“线”一词基本上只适用于“缓存线”,缓存线是一组字节,长度从16字节到256字节(取决于设计),这些字节集中在一个“缓存”中,即内存部分的高速“快照”。但这种缓存是“透明”运行的因此,在大多数情况下,您可以忽略它的存在。)

在上图中,您将看到32位地址中的数据是“little endian”——第一个“next”字段是
30 00 43 00
,而它指向的位置是
00430030
。内存中的字节与您或我“自然”读取它们的方式相反


所以这张图只是展示了内存中的一些简单结构以及它们如何相互寻址。

结合我的两个答案,这是否意味着如果物理内存中的每个条目都有8位,那么每个八位字节都可以放入每个条目中,从图中我们可以观察到每个第16个八位字节的虚拟地址,当CPU需要32位/64位数据时,它将从内存中提取多个八位字节?谢谢。这对内存的物理结构和CPU指令的持久性做了太多的假设。通过快速浏览源页面,他们展示了一个使用抽象而非真实机器的概念。给定的真实机器可能会这样做,但它可能不会。