- 防病毒:Microsoft Security Essentials
- 操作系统:Windows 7 x64
这可能是一个愚蠢的问题,但不知何故,我的印象是多核意味着防病毒扫描程序能够通过将多个文件分配给不同的核心来同时处理它们。
事实证明我错了。尝试同时扫描两个不同的文件夹会显示一条消息,提示扫描仪已被占用。所以我很好奇(+:
在真正的双处理器主板上,我的病毒扫描程序是否能够同时扫描多个文件,或者这只是扫描程序的设计缺陷?
答案1
简短的回答是:扫描仪的设计怪癖。
同时扫描多个文件的能力更多地与病毒扫描程序的编程方式有关。要执行您想要的操作,必须使软件能够运行并行读取。我不知道有哪个病毒扫描程序可以做到这一点。
答案2
从软件方面来看,在 99% 的情况下,多核处理器与多处理器系统没有什么区别。
在某些情况下,多核阵营可能具有优势,因为核心之间的通信比多处理器系统更快。
另一方面,在需要大量 RAM 的计算机中,多处理器系统可能更好,因为您可以将 RAM 分配给每个处理器来控制其自己的任务,从而增加可用 RAM 的数量。
再次,当今个人计算机所使用的多核处理器完全能够同时运行多个任务,并且多处理器系统几乎没有任何优势。
还请注意,负载由操作系统内核控制。它可能决定在多核或多处理器系统中(从操作系统和应用程序的角度来看是相同的),将其余核心专用于病毒扫描以外的其他任务对整个系统来说会更好。
另一个观点是硬盘。它无法同时物理读取两个文件,因此这将是一个主要的限制因素。一些 AV 软件可能会先将文件复制到 RAM,然后尝试并行扫描它们,但这不会提高性能,因为通常限制因素是硬盘速度,因此无需占用 RAM。
您始终可以并行扫描不同硬盘上的文件,并以此提高性能。我使用 Avast 6 并行扫描两个不同硬盘上的两个目录时没有遇到任何问题。
答案3
“您知道为什么 AV 不运行并行进程吗?这只是一个遗留问题,还是存在一些设计限制?”
编写多线程代码比编写单线程代码要困难得多,因此我们倾向于避免使用它,除非它能带来很大的好处。
在这种情况下,防病毒扫描的速度瓶颈在于硬盘/内存读取的速度,而不是 CPU 的速度,因此多线程带来的好处很小。
答案4
AV 扫描程序还往往被设计为与其他程序一起工作,对除扫描病毒之外您尝试对系统执行的操作的干扰最小(尽管 McAfee 似乎从未收到这份备忘录)。出于这个原因,它们可能被设计为不同时使用多个核心,以便让其他核心可供您使用。
对于 AV 程序员来说,为专用扫描提供“全力以赴”选项可能是一个好主意,这种扫描采用缓存和所有处理器核心对可能被感染的系统进行超彻底、超速度的扫描。
考虑到这一点,我真的很喜欢这个想法。当然,扫描仪的速度可能比硬盘驱动器快得多,但在按需扫描情况下使用大量内存和多个线程可以在相对较短的时间内对系统进行令人难以置信的密集扫描。