我想從一個用戶空間進程中將一系列內存設置爲不可緩存(Linux,x86-86)。 This question接近,但只提到MTRR寄存器與物理內存一起工作。我想用PAT表來做這件事,因爲它們提供了更細緻的控制,它們允許虛擬內存在逐頁的基礎上被設置爲不可緩存的。將內存設置爲通過x86 PAT不可緩存表格
Linux文檔Documentation/x86/pat.txt建議應該有mmap
和SYNC
標誌,但我找不到在實踐中如何做到這一點。理想情況下,我想使用諸如mprotect(address, range, O_UNCACHABLE)
之類的電話。
'madvise' /'mlock'是否足夠? – 2012-09-23 05:37:20
不,它看起來像隻影響虛擬映射(不管頁面是在RAM還是在磁盤上),但它們似乎不會影響緩存... – Wim 2012-09-25 13:17:46
是的,我誤解了。 :( – 2012-09-26 03:25:25