Ваш вопрос (как указано) не имеет смысла.
Предположим, у вас был способ заставить ядро делать то, что вы хотите.
Давайте далее предположим, что потребовалось дополнительное ОЗУ, поэтому оно забрало вашу страницу и не поменяло ее.
Теперь ваша программа пытается прочитать эту страницу (поскольку вы не хотите munmap
данные, возможно, вы могли бы попытаться получить к ней доступ). Что делать с ядром? Выбор, который я вижу:
- может дать вам новую страницу, заполненную нулями.
- это может дать вам
SIGSEGV
Если вам нужен вариант 2, вы можете достичь того же результата с munmap
.
Если вам нужен вариант 1, вы можете mremap
поверх существующего сопоставления с помощью MAP_ANON
(или munmap
, за которым следует новый mmap
).
В любом случае вы не можете зависеть от старых данных, когда они вам нужны.
Единственный способ, которым ваш вопрос будет иметь смысл, - это если какой-то дополнительный механизм для ядра, сообщающий вам, что означает удаление вашей страницы (например, отправку вам специального сигнала). Но описанная вами ситуация, вероятно, достаточно редка, чтобы оправдать дополнительную сложность.
EDIT:
Возможно, вы ищете madvise(..., MADV_DONTNEED)