Я отобразил файл в память, используя mmap
. Теперь я хотел бы убедиться, что при доступе к этой памяти не будет ошибок страниц, то есть я хочу заставить систему фактически прочитать данные из жесткого диска и сохранить их в ОЗУ. Я считаю, , что, как только данные есть, я могу предотвратить обмен с mlockall
. Но что такое способ получить систему для загрузки данных?Принудительная загрузка mmap-страниц
Я мог бы, очевидно, просто делать фиктивные чтения всех страниц, но это кажется уродливым взломом. Кроме того, я не хочу беспокоиться о том, что компилятор слишком умен и оптимизирует прочтение манекенов.
Любые предложения?
Зачем вы хотите это сделать? Если вы хотите делать фиктивные чтения, просто выполняйте их с помощью указателя 'volatile', который не позволит компилятору их оптимизировать. –
@AdamRosenfield Мне нужна производительность в реальном времени. волатильность, вероятно, будет работать, но суть моего вопроса в том, как * избегать * фиктивных чтений. – Nikratio
Почему вы думаете, что 'mlock()'/'mlockall()' не будет работать? Гарантировать, что затронутые страницы в оперативной памяти - это именно то, для чего это необходимо. – Celada