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中分配的内存的内容
在多台计算机上共享内存?
为什么我的结构元素带有填充字节?
内存分配失败,即使有足够的内存
如何获得指向dynamic库(Linux ELF)的特定部分的指针?
mmap和内存使用情况
理解linux中的缓冲区/caching`free -m`
内存使用率在免费调用时不会减less
ColdFusion可以访问Windows内存值
这是无关的。 物理地址大小基本上为您提供了cpu的地址线数量(36)。 虚拟地址的大小给你虚拟地址空间的大小,也就是单个程序可以处理多少内存(这是48位,这意味着它可以处理的物理内存的数量比它多;也可以是例如在虚拟地址空间)。 页面大小为2 ^ 12,这意味着,正如您所指出的,其余的虚拟地址位(36,不是物理地址空间中的36)由TLB和分页机制处理。
它不。 无论(物理或虚拟)“地址大小”如何,x86_64上的页面大小可以是4k,2M(甚至1G)。
维基百科x86_64条目有关虚拟地址空间如何工作的一些信息。
映射不是按照您描述的方式完成的,而是使用四级页表。 这篇关于LWN.net的文章: 四级页表有一个关于它如何工作的原因,以及为什么需要它。 (文章更多地讲述了三级地图,但是第四级只是该方案的延伸)。
cpuinfo显示处理器类型和功能。 系统当前使用的系统内存页面大小不显示在那里。
现代cpu支持不同的页面大小,操作系统在启动时设置这些设置。
所以要回答你的问题:cpuinfo中的信息并不直接与当前页面大小相关。 使用处理器类型,您可以知道哪些页面大小受支持。 例如ia32 PAE扩展允许2MB页面(以及4k页面)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。