看《现代操作系统》文件系统的一点思考
来源:互联网 发布:cfnet跟踪算法 编辑:程序博客网 时间:2024/06/04 17:56
今天重新看了一下文件系统,看到了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这样的设计那自然是更好不过了。
- 看《现代操作系统》文件系统的一点思考
- 《现代操作系统》精读与思考笔记 第四章 文件系统
- 现代操作系统:文件系统
- 读书笔记-现代操作系统-4文件系统-4.3文件系统的实现
- EXT2文件系统的一点思考和小结
- EXT4文件系统代码阅读的一点思考
- 现代操作系统——文件系统
- 《现代操作系统》读书笔记---文件系统篇
- 【现代操作系统】第6章 文件系统
- [现代操作系统笔记][第四章文件系统]
- 《现代操作系统》第4章 文件系统
- 现代操作系统之文件系统(上)
- 现代操作系统之文件系统(中)
- 现代操作系统之文件系统(下)
- 现代操作系统的调度
- 文件系统 和 操作系统的调度器 --- 一点想法
- 关于微软最近黑屏盗版操作系统的一点思考
- 关于程序员成长的一点思考,程序员必须得看
- 为真彩工具栏添加下拉菜单
- JavaScript Navigtor 获取客户端信息(浏览器 操作系统等)
- repeater初识及实现分页效果11.28
- 研磨设计模式之 命令模式
- 线程同步----synchronized
- 看《现代操作系统》文件系统的一点思考
- C# 解析XML
- 网络协议分析工具Ethereal的使用
- Labels aligning in UITableViewCell
- EMC笔试总结
- android 音乐播放器
- 使用smartupload进行文件上传
- 总结:三种传递动态分配内存的方法
- PHP 验证码图片无法正常显示