我在玩我写的一个简单的缓存模拟器,我想知道是否可以通过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分配虚拟页?甚至为程序堆设置虚拟地址?
我很抱歉,如果这听起来迟钝,谢谢!
最佳答案
如果您想让它分配物理页面,那么只需通过写入一个值来浏览和触摸每个页面。假设您需要预先分配10244k页,然后调用malloc,然后以4k步骤遍历地址,并在每个地址上写入一个值。
关于c - 您可以在Linux中手动分配虚拟页面吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21439792/