看《现代操作系统》文件系统的一点思考
2011-11-28 20:49
246 查看
今天重新看了一下文件系统,看到了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这样的设计那自然是更好不过了。
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这样的设计那自然是更好不过了。
相关文章推荐
- 《现代操作系统》精读与思考笔记 第四章 文件系统
- 《现代操作系统》精读与思考笔记 第四章 文件系统
- RTEMS 的文件系统初始化等的一点分析笔记
- [转载]关于文件系统和磁盘驱动的一点学习心得
- 关于网站文件自动备份程序的一点思考
- 《现代操作系统》读书笔记---文件系统篇
- 关于船舶建造系统的一点思考
- 对百度文库文件上传防重复的一点思考
- 关于嵌入式系统的一点思考
- 加载文件时的一点思考
- 分布式数据库系统扩容时数据迁移问题的一点思考
- 一天一点学习Linux之文件系统的手动挂载
- 关于系统的一点思考
- 关于stat函数和根据st_mode 的值获取目标文件的文件类型和用户权限,及对相关系统宏的一点想法
- Cortex-M3的PendSV中断以及uCOS系统一点思考
- 关于短信系统和系统管理的一点思考
- 有关系统性能优化的一点思考
- 秒杀系统的一点思考
- 存储阵列 vs. 文件系统的一点感想