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

Мне просто интересно, что происходит с памятью, которую пользовательская программа освобождает через системный вызов brk, а затем возвращается обратно. Ядро очищает его или его содержимое не определено?

Я полагаю, что ядро ​​очищает страницы, когда они вновь выделяются через brk, но я не могу разобраться, если оно обнуляет их все, если эта страница возвращается, а затем запрашивается снова. Я просматриваю lxr.linux.no, чтобы попытаться выяснить это. Я также посмотрю книгу, предложенную в этом посте.

Спасибо за ваши ответы.

Тим

Ответы [ 2 ]

3 голосов
/ 30 августа 2009

Вы получаете новую обнуленную страницу: http://lxr.linux.no/#linux+v2.6.30.5/mm/memory.c#L2580

Содержание новой страницы должно быть очищено. Он может содержать конфиденциальную информацию, подумать о безопасности.

1 голос
/ 25 августа 2009

IIRC понятно по запросу. Таким образом, когда страница удаляется, ядро ​​оставляет ее в покое, однако она будет очищена при выделении новому пользователю / использованию (из которых будет считаться повторно растущий brk). Существуют различные способы, позволяющие отобразить новые анонимные страницы на «нулевую страницу», а затем заменить их на настоящую очищенную страницу при записи.

Нераспределенные страницы не должны вытесняться, если вы беспокоитесь о утечке информации, хотя против них могут работать различные атаки с холодной загрузкой.

См. Недавнюю статью LWN для получения дополнительной информации: http://lwn.net/Articles/340370/

...