Board logo

标题: smartdrv为什么会加快删除文件的速度? [打印本页]

作者: Michael     时间: 2005-11-5 20:07    标题: smartdrv为什么会加快删除文件的速度?

del大文件或者deltree大量文件时效果非常明显.一直没想过这是什么原因.
作者: Michael     时间: 2005-11-5 20:27
删除文件也需要预读大量数据吧.
作者: zybird     时间: 2005-11-5 23:39
不需要!!

它的工作量可能比修改文件名还小
作者: Michael     时间: 2005-11-6 02:25
在不加载smartdrv的情况下,删除大文件或一次性删除大量文件时的硬盘灯长亮不熄又如何解释呢.大文件的fat链表清空也得费点事儿吧.
反正加载了udma或者smartdrv后的删除文件操作瞬间就可完成.
作者: 不得不爱     时间: 2005-11-6 10:03
它的工作量可能比修改文件名大!文件越大删除文件使用的时间越多!
作者: JonePeng     时间: 2005-11-7 13:14
可能是因为SmartDrv预读取硬盘的FAT表,存储在内存中,删除文件时从内存中的FAT表读取文件的实际分配地址,然后再回到硬盘上的FAT表,把要删除的文件名的首字符改写。由于从内存中读取数据比直接在硬盘上读取快得多,所以速度很快。在不装载SmartDrv情况下,每次删除一个文件时硬盘都要寻找FAT表,所以速度慢。
作者: willsort     时间: 2005-11-7 16:58
Re JonePeng:

      确实是一篇有深度的讨论性主题,建议移动至“解答室”。

      删除文件的工作量,可能会因为使用工具的不同而有所不同;在的我印象中,某些软件是只改名而不清FAT表的,大部分工具还会清文件的入口簇号,文件日期、时间、属性等也有软件会清除,也不排除有些软件会只清FAT1而不理会FAT2。就MSDOS自己提供的命令而言,del 和 deltree 的工作效率也可能会因为自身版本和所处环境的不同而出现较大差异。

      至于 SmartDrv 的工作原理,我猜测可能所有硬盘读写都通过它来缓冲,所以清FAT和改名的首字符及其他操作可能都首先操作于内存中。另外,文件名并不在FAT表中,而在FDT(文件目录表,根目录文件名所在地)或者目录入口簇链表所指向的数据区(子目录文件名所在地),也因此删除大量目录比较深的文件比删除同样数量和大小的根目录文件可能会慢一些。

      最后,请注意,以上言论仅止于猜测和推论,并无实据!

[ Last edited by willsort on 2005-11-7 at 18:19 ]
作者: 不得不爱     时间: 2005-11-7 18:29
那好吧,我来移动一下!