Очищается ли память ядром Linux, когда brk уменьшается, а затем снова увеличивается?
-
19-09-2019 - |
Вопрос
Мне просто интересно, что происходит с памятью, которую пользовательская программа освобождает с помощью системного вызова brk, а затем снова возвращает.Очищает ли ядро это или содержимое остается неопределенным?
Я полагаю, что ядро очищает страницы, когда они вновь выделяются через brk, но я не могу понять, обнуляет ли оно их все, если эта страница возвращается, а затем запрашивается снова.Я просматриваю lxr.linux.no, чтобы попытаться выяснить.Я также ознакомлюсь с книгой, предложенной в это Публикация.
Спасибо за ваши ответы.
Тим
Решение
Вы получаете свежую страницу с обнулением: http://lxr.linux.no/#linux+v2.6.30.5/mm/memory.c#L2580
Содержимое новой страницы должно быть очищено.Он может содержать конфиденциальную информацию, подумайте о безопасности.
Другие советы
IIRC - это понятно по запросу.Таким образом, когда страница удалена, ядро оставляет ее в покое, однако она будет очищена при выделении новому пользователю / использованию (для которого будет учитываться повторно растущий brk).Существуют различные способы сопоставления свежих анонимных страниц с "нулевой страницей", а затем замены ее на настоящую очищенную страницу при записи.
Нераспределенные страницы не должны подвергаться принудительному обмену, если вы беспокоитесь об утечке информации, хотя различные атаки с холодной загрузкой могут сработать против них.
Смотрите недавнюю статью LWN для получения дополнительной информации: http://lwn.net/Articles/340370/