- 精华
- 0
- 帖子
- 747
- 威望
- 0 点
- 积分
- 759 点
- 种子
- 0 点
- 注册时间
- 2005-1-9
- 最后登录
- 2018-10-12
|
发表于 2009-6-5 14:29 · 上海
|
显示全部楼层
下面是引用fan123于2009-05-02 18:47发表的:
解释一下碎片的产生
比如依次灌入2G 1G 3G 3个游戏,删除第2个1G的游戏,灌入3G游戏 这个3G游戏就分成1G+2G两段了。周而复始(删了灌,灌了删),就有了大量碎片(无软件可解决,只能格式化重新灌游戏才是彻底解决方法)
楼主的硬盘使用不长,应该只是硬盘质量问题,不要多想(运气不大好)
帮你更正一下,我曾经测试过导入游戏镜像,发现碎片的确有的,不过不是你这样的算法来解释了。尤其是游戏会分成1+2两段了。不信你可以用uLaunchELF的分区信息来查看。
真正的解释是这样的:
我们假设如下顺序灌入了三个游戏,2G,3G,1G。
此时因为硬盘的空间足够,所以都是顺序导入的,没有什么问题。当最后一个游戏灌入完成了,硬盘空间也满了,这个是最理想的情况。此时碎片还没有出来(其实有的,只是HDL没有察觉/或者屏蔽了)。
有天玩得心理不爽,玩GOW的god难度就是过不去,一怒之下就把第二个3G游戏删除了。呵呵,打个比方,这个3G的游戏不是GOW哦,只是被你解气删除了。此时硬盘多了3G的空间出来。
过了几天,你心情特好,买了一个新游戏想尝试一下,大小2G。此时灌入其实是可以灌入的,但是会剩余1G的空间出来。所以此时是2G,2G,[1G],3G,中间的[1G]就是多出来的空间了。
如果没有小于1G的游戏,那么这个空间就是碎片了。
很开心的是,你找到了一个小于1G的游戏,7个奇迹,应该有人玩过,当然是RIP过的啦。灌入之。结果还剩余256M的空间,其实在HDL里面看到的是200M空间。这个时候,碎片真的就出现了。毕竟比256M还小的游戏非常难找了。
如果你反反复复的这么折腾你的硬盘,这样的小空间只要用不上就是碎片了。
但是HDL是不会说把一个空间用1+2的方式进行存储的,1和2之间需要一个链接才能相互找得到对方。这主要是开发者开始就没有考虑到文件链接的方式进行存储。HDL是以128M为最小的存储单位,寻找连续的空间进行存储。所以一个1.5G的游戏,其实用的空间是【1500/128】取大整然后乘以128,即12x128=1.536G,所以1.5G的游戏会使用大于1.5G的空间进行存储。而这12个128M就是连续相邻的,是不可能进行跨游戏镜像跳跃。
题外话,如果想要跳跃的存储,必须使用链表。这样可以把碎片降低到最低而不是消除。所以理论上碎片从来就是有的,只是尺寸大小的问题。
上述的存储算法是非常的stupid。这种做法只有一个好处,HDL好管理,CPU寻找文件的算法会非常的简单。呵呵。
那么最后谈谈可不可以整理。玩一个文字游戏,可以,但是不可取。
还是假设2G,3G,1G。的顺序,此时多加一个小小的条件就是后面还有3G的空间。
废话少说,删除第二个3G的游戏然后灌入2G的游戏,此时2G,2G,[1G],1G,[3G],HDL会显示有4G的空间,这个时候你有个4G的游戏想传是传不进去的。呵呵1+3是不起作用的哦。如果是2G的话呢,那就传到[3G]里面,所以后面还剩1G,HDl看到的是2G,但是一个2G的游戏是传不进去的。同理1+3的说话。
所以,此时你只有将2G,2G,[1G],1G,[3G]中间没有方括号的1G导出,然后将4G的传入,最后传入1G。这样之后,就没有碎片而且是正好全部用上了。
就这么几个游戏,折腾吧。如果是500G的硬盘,还不给折腾死人了啊。
|
|