看《现代操作系统》文件系统的一点思考

今天重新看了一下文件系统,看到了MS-DOS和UNIX的文件实现。前者是用一个FAT(File Alloction Table)实现记录每个文件所对应的磁盘块的;后者是用i-node这种数据结构来实现记录每个文件所对应的磁盘块的。对于FAT和i-node的具体细节就先不说了,只说重点。FAT方式,每次计算机启动,这个表都要被加载到内存中,是整张表;i-node方式,当需要一个文件时,这个文件的i-node才会被加载到内存中。

FAT的最大缺点是,当一个磁盘很大,磁盘中的文件很多时,FAT表会很大,占用大量的内存空间,甚至可以把整个内存占满,所以FAT不适合大容量的磁盘,而i-node是需要时才被加载到内存中的,这种思想很像copy-on-write,所以基本上不存在FAT的问题,磁盘空间可以很大。

前面都是描述,真正的思考现在开始。

从前面的描述可以看出UNIX的设计是很先进的,并且i-node比FAT出现的早,好像早的不止10年吧,灵活性也比FAT好。UNIX的设计从一开始就设计的这么好,以至于到现在基本上所有的UNIX系统用的还是i-node,估计在未来还会使用下去。这说明,一个好的设计是可以经得住时间考验的。而FAT现在基本上被淘汰了。

我在这里并没有带个人主观因素,只是客观的评比。后来我又想,为啥FAT出来的晚而没有借鉴i-node呢?我想这应该从一个系统的用途说起。

大家都知道,UNIX在一开始设计时就是面向大型机的多用户操作系统,并且是由一群计算机的开山鼻祖级的大家来实现的,而MS-DOS是面向个人用户的PC机操作系统,实现的团队没有UNIX壮观。既然是PC机,它的硬盘自然远比大型机的小了,所有FAT是完全可以很好的满足需求的,并且是一种很优秀的设计。当年的UNIX是IT界的热门事物,在伯克利大学也可以获得源码。为什么微软不借鉴i-node的设计呢?首先i-node是先进的,但是不是公司自己的自主发明,这一点可能会影响的公司的商业发展(有可能会被起诉)。其次,自己虽然做不出想i-node那样出色的,但是自己完全有实力可以做一个满足自己需求的,并且是很优秀的。微软并没有因为文件系统不好而发展的不好,相反,微软发展的很好,现在基本上没有人不知道微软。这说明,最好的不一定是自己需要的。

另一个反面例子是MULTICS,这个系统由于设计的太过完美,而很难实现,最终没有发展起来,它的简化版本就是UNIX。

所以,以后不要再说win很垃圾,而UNIX 很先进,作为一个普通用户你需要那么先进吗?

总结一下,设计要跟着需求来,不一定要最好的设计,只要能够很好满足需求的就行,当然要是能有像i-node这样的设计那自然是更好不过了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值