Очищается ли память ядром Linux, когда brk уменьшается, а затем снова увеличивается?

StackOverflow https://stackoverflow.com/questions/1327261

Вопрос

Мне просто интересно, что происходит с памятью, которую пользовательская программа освобождает с помощью системного вызова 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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top