我正在考虑将IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
和IMAGE_FILE_NET_RUN_FROM_SWAP
PE标志包含在我的可执行文件中。
这样做的目的是防止从网络运行可执行文件的客户端看到偶然的异常,例如网络卷在睡眠后无法重新连接。到目前为止,我们始终建议客户从本地连接的卷中运行可执行文件。
但是,我对虚拟内存,加载程序等知之甚少,不知道使用这些PE标志会带来什么风险(如果有的话)。
例如,如果我这样做,我的可执行文件将消耗更多的物理内存,特别是如果同时运行多个可执行文件实例?
对不起,我不能提供更多潜在风险的例子,但这就是我的问题的本质。我有一种感觉,这样做可能会有缺点,但根本不知道这些缺点是什么。
答案 0 :(得分:14)
PE加载程序与虚拟内存管理器协同工作。简而言之,您的可执行文件并不像需求页面那样加载。当然,还需要分页。由于可执行文件已被锁定且不会更改,因此可以正常工作。不需要交换; RAM只包含MRU部件。
PE标志改变了这一点。如果条件满足,则可执行文件未锁定,可能会更改/消失。这意味着即使在启动时,VMM也必须将其所有页面保留在RAM或交换中。这是很多复制和RAM使用,但结果是网络丢失不再导致页面内置错误。当RAM很低时,页面不能被丢弃,但必须保存为交换。
特别是,当且仅当条件满足时,这些标志才起作用。 IMAGE_FILE_NET_RUN_FROM_SWAP
不会影响本地运行的应用。因此,唯一支付RAM / swap价格的客户就是那些选择的客户。