我正在考虑将
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
和
IMAGE_FILE_NET_RUN_FROM_SWAP
PE标志包含在我的可执行文件中.
这个想法是防止从网络运行可执行文件的客户端看到的偶然异常,例如网络卷在睡眠后无法重新连接.到目前为止,我们一直建议客户从本地连接的卷中运行可执行文件.
但是,我不清楚虚拟内存,装载器等,以了解与使用这些PE标志相关联的风险(如果有的话).
例如,如果我这样做会更多的物理内存被我的可执行文件使用,特别是如果有多个可执行文件的实例同时运行?
对不起,我不能给出更多的潜在风险的例子,但这是我问题的性质.我有一种感觉,这样做可能会有缺点,但根本不知道这些缺点可能是什么.
PE加载器与虚拟内存管理器一起工作.简单地说,您的可执行文件不像需求一样加载.当然,需求调出.由于可执行文件被锁定并且不改变,这样做效果非常好.不需要互换; RAM只包含MRU部件.
PE标志改变了这一点.如果满足条件,则可执行文件不会被锁定,并且可能会更改/消失.这意味着即使在启动时,VMM也必须将所有页面保持在RAM或交换中.这是大量的复制和RAM使用,但是由于网络的丢失不再导致页面存在的故障.当RAM为低电平时,页面不能被丢弃,但必须保存才能交换.
特别地,当且仅当满足条件时,这些标志才起作用. IMAGE_FILE_NET_RUN_FROM_SWAP不会影响本地运行的应用程序.所以在RAM /互换中支付价格的唯一客户是那些选择的.