Я играю с простым симулятором кэша, который я написал, и хочу знать, можно ли вручную распределить виртуальную страницу через 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) и прочитайте [Advanced Linux Programming] (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) –