微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

/ proc / cpuinfo地址大小信息如何与内存页面大小相关?

cat / proc / cpuinfo标记为-lm给出的cpu

address sizes : 36 bits physical,48 bits virtual

页面大小确定

#include <unistd.h> int getpagesize(void);

给出4096个字节。

使用后面的信息,我会认为系统使用地址的最低有效位12位作为偏移量,剩余的地址通过TLB和页表进行虚拟到物理地址转换。

查看/解决Windows XP内存碎片的工具

在Windows中分配的内存的内容

在多台计算机上共享内存?

为什么我的结构元素带有填充字节?

内存分配失败,即使有足够的内存

cpuinfo的信息如何与页面大小相关?

如何获得指向dynamic库(Linux ELF)的特定部分的指针?

mmap和内存使用情况

理解linux中的缓冲区/caching`free -m`

内存使用率在免费调用时不会减less

ColdFusion可以访问Windows内存值

cpuinfo的信息如何与页面大小相关?

这是无关的。 物理地址大小基本上为您提供了cpu的地址线数量(36)。 虚拟地址的大小给你虚拟地址空间的大小,也就是单个程序可以处理多少内存(这是48位,这意味着它可以处理的物理内存的数量比它多;也可以是例如在虚拟地址空间)。 页面大小为2 ^ 12,这意味着,正如您所指出的,其余的虚拟地址位(36,不是物理地址空间中的36)由TLB和分页机制处理。

cpuinfo的信息如何与页面大小相关?

它不。 无论(物理或虚拟)“地址大小”如何,x86_64上的页面大小可以是4k,2M(甚至1G)。

维基百科x86_64条目有关虚拟地址空间如何工作的一些信息。

映射不是按照您描述的方式完成的,而是使用四级页表。 这篇关于LWN.net的文章: 四级页表有一个关于它如何工作的原因,以及为什么需要它。 (文章更多地讲述了三级地图,但是第四级只是该方案的延伸)。

cpuinfo显示处理器类型和功能。 系统当前使用的系统内存页面大小不显示在那里。

现代cpu支持不同的页面大小,操作系统在启动时设置这些设置。

所以要回答你的问题:cpuinfo中的信息并不直接与当前页面大小相关。 使用处理器类型,您可以知道哪些页面大小受支持。 例如ia32 PAE扩展允许2MB页面(以及4k页面)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐