可执行文件按照什么顺序从网络共享传输和执行?

可执行文件按照什么顺序从网络共享传输和执行?

将可执行文件传输到本地计算机然后再运行与直接从 SMB 共享运行有什么区别。从共享运行是将整个文件传输到临时位置然后执行,还是从共享“流式传输”可执行文件,从而导致对带宽的影响持续更长时间?

答案1

从共享运行可执行文件就像在本地磁盘上一样。系统会将可执行文件加载到内存中并运行它。无论可执行文件是否是远程的,这都不会改变。

Windows 有一个基于内存的文件缓存。它将可执行文件连同运行时所需的其他组件(即库 (DLL)、数据文件等)一起拉入该缓存。当需要这些额外的组件时,它们将被读入...本地或远程...并在缓存中存储一​​段时间。

它不会将文件“复制”到本地磁盘位置然后执行它。它会将其读入内存并立即执行。

至于随时间推移的带宽使用情况,这可能与您想象的并不完全一样......

假设可执行文件是一个小型的单文件可执行文件,这意味着它没有任何所需的配置文件或自定义库。在这种情况下,无论您是将文件复制到本地还是从共享中运行,传输的数据大致相同。

但是,假设它是一个复杂的软件应用程序,如 Office、Photoshop 等,其中有许多需要的较小数据文件和库。当程序执行时,它会在需要时读取所需的特定数据项。因此,随着时间的推移,基于共享的应用程序将继续通过网络读取数据,但每次读取通常都非常小。

当我们谈论持续的磁盘读取(本地或远程)时,我之前提到的文件缓存就会发挥作用。缓存有助于减少重复磁盘读取的次数。对于具有大量库和配置文件(这些库和配置文件会从内存中推送和提取)的基于共享的应用程序,缓存可以减少网络流量,因为它会暂时保留数据以备再次需要。

这与复制文件然后在本地运行相比。如果它是一个大型应用程序,那么这没什么意义,因为每次需要使用它时,您都会进行非常大的文件传输(和安装)。对于您经常使用的应用程序,这不是一个有趣的体验。

一般来说,网络带宽问题并不在于安装在共享上的应用程序,而在于应用程序使用的数据。以 Photoshop 为例。从共享运行 Photoshop 毫不费力。从共享加载 500MB 图像文件以在 Photoshop 中处理则是另一回事。

这是对事物运作方式的简单看法,旨在尝试回答您的问题。希望对您有所帮助。

相关内容