Существуют ли риски, связанные с IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP или IMAGE_FILE_NET_RUN_FROM_SWAP? - PullRequest
19 голосов
/ 05 августа 2011

Я думаю о включении флагов IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP и IMAGE_FILE_NET_RUN_FROM_SWAP PE в мой исполняемый файл.

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

Однако я недостаточно знаю о виртуальной памяти, загрузчике и т. Д., Чтобы знать, какие риски, если таковые имеются, связаны с использованием этих флагов PE.

Например, если я это сделаю, мой исполняемый файл будет использовать больше физической памяти, особенно если одновременно запущено несколько экземпляров исполняемого файла?

Извините, что я не могу привести больше примеров потенциальных рисков, но такова природа моего вопроса. У меня есть ощущение, что в этом могут быть недостатки, но я просто не знаю, какими могут быть эти недостатки.

1 Ответ

14 голосов
/ 05 августа 2011

Загрузчик PE работает вместе с менеджером виртуальной памяти. Проще говоря, ваш исполняемый файл загружен не столько по запросу, сколько по запросу. И, конечно, по запросу. Поскольку исполняемые файлы заблокированы и не изменяются, это работает довольно хорошо. Обмен не требуется; RAM только содержит части MRU.

Флаги PE меняют это. Если условия выполнены, исполняемый файл не заблокирован и может измениться / исчезнуть. Это означает, что VMM должен хранить все свои страницы в оперативной памяти или подкачке, даже при запуске. Это много копирует и использует ОЗУ, но в результате потеря сети больше не вызывает сбои при загрузке страницы. А при нехватке ОЗУ страницы не могут быть отброшены, но должны быть сохранены для замены.

В частности, эти флаги работают тогда и только тогда, когда условия выполнены. IMAGE_FILE_NET_RUN_FROM_SWAP не влияет на приложения, которые запускаются локально. Таким образом, единственными покупателями, которые платят цену в оперативной памяти / подкачке, являются те, которые выбирают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...