与Unix不同,Windows是否仍将每个文件直接复制到磁盘?


1

Unix最初设计用于在内存中执行文件系统操作,并且每隔30秒就更新一次磁盘块 sync。这导致比多年前MSDOS更快的用户体验,它直接访问每个文件系统操作的磁盘块。但是今天使用Windows 7我仍然看到复制大量小文件比复制一个相同大小的大文件要花费更长的时间。

例如:Visual Studio C#Asp Web项目发布目录包含2000个文件,总计150 MB,压缩(7Zip)90 MB。

  • 将整个目录复制到同一磁盘:30秒
  • 邮编:5秒
  • 复制一个压缩文件:2秒
  • 解压缩:65秒。 (在另一台机器上:20秒)

在计算上,解压缩应该比压缩更快。因此解压缩可能由文件系统性能决定。

磁盘碎片可能是一个因素,也是另一台类似计算机在处理许多文件系统操作时可能更快的原因。但是如果磁盘碎片是这里的一个因素,它可能表明用户必须等待每个文件系统操作在下一个文件系统操作开始之前完成,即像旧DOS一样。


Windows如何复制文件没有改变。但我也不相信Windows完全使用磁盘来复制文件。
Ramhound

试图找到信息来回答我自己的问题我发现Windows确实应用了磁盘缓存:[ msdn.microsoft.com/en-us/library/windows/desktop/... 。但是MSDN页面充满了关于如何避免缓存的评论。我们当然不是在谈论256 KB对象。
Roland

Answers:


0

您描述的行为(未缓存的访问)自Windows 3.11以来尚未使用。但是,Windows会比Unix更加积极地刷新缓存。这取决于各自的根源。假设Unix机器使用可靠的硬件和电源构建。 Windows PC是便宜的盒子,它经常崩溃。这不仅仅是一个操作系统问题,UPS在PC上也不常见,廉价的IDE磁盘在功率损耗方面不如昂贵的服务器SCSI磁盘可靠。古代的FAT格式也没有任何帮助 - 没有记录如此大规模的腐败可能性。 NTFS要好得多。你用了什么测试?


我的机器有一个NTFS格式的磁盘。
Roland

我相信原因不仅仅是硬件。 Unix一直是需要大量磁盘操作的多用户多进程系统。 DOS开始几乎没有磁盘。写入只能容纳64个文件名或类似内容的DOS-1软盘没什么意义。所有后续的DOS / Win版本都试图向后兼容,所以今天我们仍然有驱动器号。仍然对今天的缓存感到好奇。
Roland

矛盾自己:DOS代表 DISK 操作系统。
Roland

1
Downvote发布的声明无法通过事实支持“Windows PC是廉价的盒子,它经常崩溃”简直是假的,无法备份。个人计算机近二十年甚至没有使用Windows,一旦微软出现,个人计算机市场的可靠性很低,原因多种多样,没有任何东西可以直接与Windows或微软有关。
Ramhound

@Ramhound:再次阅读答案。我对比Windows和Unix。这就是为什么我可以写“更频繁地崩溃” - 这是一个比较。我没有说Windows PC“经常崩溃”。
MSalters

0

从我发现的信息(见上文)和上面的贡献者,我得出结论,现代 Windows可以执行磁盘缓冲/缓存 ,但这通常是禁用的。原因包括NTFS没有日志记录。 Windows性能可能比利润更重要:质量与上市时间。对于商业性较差的Unix / Linux,质量/性能更为重要。

巧合:一位同事目前正在试图压缩几GB文件以试图更快地复制,并且正在盯着一个Windows档案对话框说“过去半小时内走了10秒”,其中包含一个缓慢增长的zip文件(未冻结) 。但那可能也是一个有问题的磁盘...... :-)


Mac osx除外,它以更高的价格提供性能
STEEL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.