1
我正在玩一個我寫的簡單緩存模擬器,我想知道是否可以通過Linux手動分配虛擬頁面,以便測試衝突方式。我知道這是值得懷疑的,甚至可能不是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分配一個虛擬頁面?甚至爲程序的堆設置虛擬地址?
我很抱歉,如果這聽起來很鈍,謝謝!
瞭解[mmap(2)](http://man7.org/linux/man-pages/man2/mmap.2.html)並閱讀[高級Linux編程](http://advancedlinuxprogramming.com/) ) –
@BasileStarynkevitch這對他有什麼幫助?看來他想要避免頁面錯誤,而要做到這一點的方法是觸摸每個頁面,以強制將物理內存分配給虛擬頁面。 –
另請參閱[madvise(2)](http://man7.org/linux/man-pages/man2/madvise.2.html)&[mlock(2)](http://man7.org/linux/ man-pages/man2/mlock.2.html) –