gpt4 book ai didi

你能在 Linux 中手动分配虚拟页面吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:34:42 26 4
gpt4 key购买 nike

我正在玩我写的一个简单的缓存模拟器,我想知道是否可以通过 Linux 手动分配虚拟页面,以便我可以测试方式冲突。

我知道这是值得怀疑的,甚至可能在 Linux 的设计中都没有考虑过,而且以不同的方式测试它显然更容易(只是为地址传递一个值),但我只是想我会抛出这个问题出于我自己的好奇心。

我想要这样的东西:

char *p1 = (char *)SomeLiteral;
*p1 = value1;
dcache.writeback(p1);

char *p2 = (char *)ADifferentLiteral;
*p2 = value2;
//may map to same set index and be brought to second way
dcache.writeback(p2);

这可能适用于某些嵌入式系统,但在 Linux 下显然会出现页面错误。那么,有没有办法给p1和p2分配一个虚拟页呢?或者甚至为程序的堆设置虚拟地址?

如果这听起来很迟钝,我深表歉意,谢谢!

最佳答案

如果您的系统支持它,您可以分配单个 1GB 大页面然后 mlock() 它,这样它就不会被换出。

此页面应该足够大,以便您的所有实验都能轻松放入其中,但您需要了解缓存哈希/放置算法才能确定。

此外,您不会知道页面物理地址的最高有效位,这让我想到了另一点 - 您可能需要考虑缓存放置算法对您的系统进行哪些输入 - 索引和标记可以每个都是通过物理或虚拟地址完成的,您应该检查您的系统架构以了解这如何或是否影响您的研究。

关于你能在 Linux 中手动分配虚拟页面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com