Надеемся, что титул ясно. У меня есть кусок памяти, полученный через mmap(). Через некоторое время я пришел к выводу, что мне больше не нужны данные в этом диапазоне. Однако я все же хочу сохранить этот диапазон. То есть, я не хочу вызывать mummap(). Я стараюсь быть хорошим гражданином и не заставлять систему менять больше, чем нужно.Как сообщить Linux, что страницу mmap() 'd не нужно записывать для замены, если необходима физическая страница резервной копии?
Есть ли способ, чтобы сообщить ядру Linux, что если данная страница подкреплено физической страницы и если ядро решает это необходимо, что физическая страница, не мешай писать эту страницу, чтобы поменять местами?
Я предполагаю, что под капотом этот магический вызов функции уничтожит любое сопоставление между данной виртуальной страницей и физической страницей, если присутствует, без записи для свопинга в первую очередь.
Что случилось с munmap? Он делает именно то, что вы говорите, чего хотите. Если вы хотите, чтобы более поздний mmap не использовал один и тот же виртуальный адрес, вы могли бы mmap с MAP_FIXED + PROT_NONE после munmap, чтобы зарезервировать адреса ... –
Откуда вы знаете, что это делает (записывает резервную физическую страницу для обмена)? –
@ChrisDodd Я мог использовать munmap() только в том случае, если бы я мог гарантировать, что последующий вызов mmap(), сделанный с соответствующими параметрами, будет повторять одну и ту же страницу. Именно этот недостаток гарантии заключается в том, что второй mmap() преуспеет, что мешает мне использовать munmap(). Важно, чтобы начало и конец моего куска памяти не менялись, даже если я знаю, что в разные моменты больше страниц не содержат полезных данных. – tgoodhart