![碎片整理程序如何工作?](https://linux22.com/image/1242411/%E7%A2%8E%E7%89%87%E6%95%B4%E7%90%86%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
a) 典型的碎片整理程序使用什么算法来消除碎片?
垃圾桶碎片整理程序,我有一个快速碎片整理选项和一个碎片整理选项。假设碎片整理会进行常规碎片整理,那么快速碎片整理会做什么?
答案1
我对碎片整理不是很了解,但我想分享一些有关您问题的信息。对于您问题的第一部分,MSDN 在其博客中提到了碎片整理算法:
在 Windows XP 中,任何被分割成多个部分的文件都被视为碎片。如果碎片足够大,在 Windows Vista 中情况就不同了——碎片整理算法已更改(从 Windows XP 开始),以忽略大于 64MB 的文件碎片。因此,XP 中的碎片整理和 Vista 中的碎片整理将报告卷上的不同碎片量。那么,哪一个是正确的?好吧,在回答这个问题之前,我们必须了解 Vista 中碎片整理为何发生变化。在 Vista 中,我们分析了碎片整理的影响,并确定碎片整理最显著的性能提升是当文件碎片被组合成足够大的块时,磁盘寻道延迟的影响相对于顺序读取文件相关的延迟并不显著。这意味着超过这个临界点,合并碎片文件就没有任何明显的好处了。
您可以从这里阅读全文:工程 Windows 7 - 磁盘碎片整理。
对于你问题的第二部分,梨形文件有答案:
Defraggler 有两种不同的碎片整理模式:常规碎片整理和快速碎片整理。快速碎片整理速度更快,但效果不如常规碎片整理理想。
通过跳过具有某些属性的文件,快速碎片整理可以提高工作速度。这些属性可在“选项”对话框的“快速碎片整理”选项卡中指定。
默认的快速碎片整理规则是跳过碎片大于 50MB 的文件。
为了更好地理解碎片整理,维基百科有一个很好的页。
答案2
需要注意的一件重要事情是:Microsoft 提供了一个 API,程序可以使用该 API 对文件进行安全碎片整理。(请参阅MSDN 上的文件碎片整理)任何碎片整理程序都应该使用这些 API,而且大多数都这样做。
碎片整理的所有“魔力”都在于确定如何排列文件,而这正是各种程序用来区分彼此的方式。如果你认为自己真的很聪明,你可以使用碎片整理编写自己的布局脚本。
答案3
绝对没有唯一的答案。没有“典型”算法。因为每个碎片整理应用程序都使用自己的算法。当然,在一些更知名的算法中可能会出现“趋势”,但一般来说,没有典型或通用的算法。
拿碎片整理,顺便说一下,这是一个很棒的应用程序,在某种程度上,你可以编写自己的碎片整理算法。