相关疑难解决方法(0)

Linux,会在首次读取或首次写入时将页面页面故障归零吗?

我的问题是Linux特定的,需要了解内核,虚拟内存,mmap,pagefaults.我有大型静态数组的C程序,它将进入bss部分(内存,初始化为零).程序启动时,此内存不是物理分配的,只有虚拟内存,虚拟内存的每一页都映射到特殊的零页面(全零的页面).当应用程序访问此页面时,将生成页面故障并分配物理页面.

问题是:是否会在第一次读取访问时或从bss部分对页面进行第一次写访问时生成此类页面错误?

linux virtual-memory linux-kernel page-fault

9
推荐指数
1
解决办法
1305
查看次数

有没有办法刷新与程序相关的整个CPU缓存?

x86-64平台上,CLFLUSH汇编指令允许刷新对应于给定地址的缓存行.相反,冲洗与特定地址的缓存,会有一种通过使其充满了虚拟的内容,以刷新整个高速缓存(或者相关程序的缓存中执行,或整个高速缓存),例如(或任何我不会意识到的其他方法):

  • 仅使用标准C++ 17?
  • 如有必要,使用标准C++ 17和编译器内在函数?

以下函数的内容是什么:(无论编译器优化如何,该函数都应该工作)?

void flush_cache() 
{
    // Contents
}
Run Code Online (Sandbox Code Playgroud)

c++ memory optimization assembly cpu-cache

3
推荐指数
1
解决办法
4042
查看次数