Как mlock() работает со спящим режимом?

Цитата из Руководства программиста Linux (man 2 mlock):

mlock(), mlock2() и mlockall() блокируют часть или все виртуальное адресное пространство вызывающего процесса в ОЗУ, предотвращая выгрузку этой памяти в область подкачки.

Как это работает в отношении гибернации? Можно ли вообще перевести процесс, использующий mlock(), в спящий режим? Какова семантика после выхода из спящего режима?


person jotik    schedule 20.12.2016    source источник
comment
См. security.stackexchange.com/questions /29019/: По своей природе спящий режим должен записывать на диск всю оперативную память, включая заблокированные страницы,   -  person Barmar    schedule 20.12.2016
comment
@Barmar, ваш комментарий неверен, я объяснил это в ответе ниже. Я думаю, что для большинства систем Linux mlock не позволяет гибернации обменивать заблокированные страницы, но я не могу гарантировать процент.   -  person Yaroslav Nikitenko    schedule 07.01.2017


Ответы (1)


Это зависит от вашей системы. Руководство по Linux для mlock говорит:

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

Некоторые инструменты действительно подвержены влиянию mlock:

1– Я перевожу ноутбук в спящий режим с открытым Armory.
2– Я возвращаюсь из спящего режима.
3– Armory не синхронизируется. (Для повторной синхронизации мне нужно перезапустить Armory).

person Yaroslav Nikitenko    schedule 07.01.2017