然而,就像任何一部伟大的作品,Linux的成长之路并非一帆风顺,而是充满了挑战与争议
本文将带您走进Linux的黑历史,揭开那些不为人知的坎坷与挑战
一、文件系统的争议与Bug Linux文件系统的历史是一部充满Bug修复与争议的记录
ext4,作为Linux社区广泛使用的一种文件系统,其稳定性和可靠性一直备受关注
然而,从它诞生之日起,关于ext4存在可能导致数据丢失的Bug报告就从未间断
2017年,Linux内核的邮件列表中,Linus Torvalds再次对ext4表达了不满
他指出,尽管ext4已经发布了多年,并被广泛应用于桌面及服务器,但大量的Bug修复和清理工作仍在持续进行
其中一些修复看似并非真正的清理或修复,而是新引入的问题
Linus的愤怒并非空穴来风,ext4的Bug问题确实一直困扰着Linux社区
早在2012年,Theodore Tso就曾报告过一次严重的Bug,该Bug影响了部分Linux稳定版本的内核
而在2016年,Vegard Nossum和Quentin Casasnovas使用用户态的Fuzzing工具AFL对文件系统进行了测试,结果更是令人震惊
尽管Btrfs在测试中坚持了5秒钟就崩溃,但ext4也仅仅坚持了2个小时
这充分说明了Linux文件系统并没有我们想象中的那么稳定
更为严重的是,这些Bug不仅可能导致系统崩溃,还可能导致数据损坏
威斯康辛大学麦迪逊分校的研究者曾在FAST 13上发表的一篇论文中,对Linux社区与文件系统相关的Patch进行了统计和分析
结果显示,有将近40%的文件系统相关的Patch属于Bugfix类型
换句话说,每提交两个Patch,就可能有一个是用于修复Bug的
而Bug的集中爆发也往往源于大的功能演进
二、POSIX标准的模糊与争议 在Linux文件系统的发展历程中,POSIX标准无疑是一个重要的影响因素
POSIX(Portable Operating System Interface)是一个旨在提供跨操作系统兼容性的标准
然而,作为一个先有实现、后有标准的规范,POSIX在文件系统接口上的定义却相当模糊
尤其是在系统崩溃后,文件系统应有的行为方面,POSIX标准几乎是一片空白
这留给了文件系统开发者足够大的“想象空间”
因此,如果一个Linux文件系统在系统崩溃重启后,整个文件系统的内容都不见了,那么从POSIX标准的角度来看,这也是“符合标准”的
历史上,不断有人尝试给文件系统提供更加严谨的Consistency(一致性)定义,尤其是Crash-Consistency(故障后的一致性)
然而,尽管POSIX也经历了几个版本,但关于文件系统接口的定义却几乎没有改变
这种模糊的标准定义无疑给Linux文件系统的开发带来了极大的挑战
三、API设计的失败与修正 除了文件系统的争议外,Linux API的设计也曾经走过不少弯路
usleep和nanosleep是两个曾经被Linux社区寄予厚望的新API
它们旨在提供高精度的睡眠功能,以便更好地支持多任务处理和异步操作
然而,令人失望的是,这两个API的设计从一开始就存在问题
它们本质上是稍稍变通一点的spinwait(自旋等待),根本无需正确实现sleep的典型语义
这导致CPU资源的消耗大大增加,许多Linux服务器程序开发者都因此受到了影响
随着POSIX标准的建立,问题逐渐浮出水面
原先的features被大家愈发觉得是bugs
最终,Linux(内核版本2.5.39)修正了usleep和nanosleep的行为,使其和其他操作系统(例如Windows)一致
然而,这一修正过程持续了数年,期间也伴随着一批程序的改写,因为它们依赖自旋等待的特性
四、与Unix和SCO的恩怨情仇 Linux的历史不仅是一部技术发展的记录,更是一部充满恩怨情仇的传奇
其中,与Unix和SCO的纠葛尤为引人注目
Unix操作系统由贝尔实验室的肯·汤普森和丹尼斯·里奇研发,是计算机历史上最伟大的发明之一
然而,由于早期混乱的授权,Unix的源代码被广为扩散,形成了多个不同版本的Unix
这为后来的Linux操作系统提供了丰富的借鉴和灵感
然而,这也为Linux带来了麻烦
SCO公司自称是Unix操作系统的拥有者,并对IBM提出了10亿美元的起诉,称IBM在开放源代码的Linux中泄露了商业秘密
这一事件引发了Linux社区与SCO之间的激烈争议和对抗
尽管SCO在言语上变得越来越好斗,但微软却看到了其中的机会
微软与Unix的关系源远流长,并对SCO的演变起了重要的催化作用
微软曾经为Intel处理器开发了一种Unix操作系统,命名为Xenix,并以OEM的形式再授权给多家公司
然而,随着Windows NT的研发和推出,微软逐渐放弃了Xenix和Unix市场
SCO的崛起和衰落与Unix和Windows的竞争息息相关
SCO曾经凭借Xenix操作系统在Intel芯片市场上占据了一席之地
然而,随着Windows操作系统的崛起和Unix市场的萎缩,SCO也逐渐陷入了困境
最终,SCO与Linux的争议也成为了其衰落的一个缩影
五、结语 Linux操作系统的历史是一部充满挑战与争议的传奇
从文件系统的争议与Bug到POSIX标准的模糊与争议,再到API设计的失败与修正,以及与Unix和SCO的恩怨情仇,Linux的成长之路充满了坎坷与挑战
然而,正是这些挑战和争议推动了Linux的不断进步和完善
如今,Linux已经成为全球最受欢迎的开源操作系统之一,为无数开发者和企业提供了强大的支持和保障
回顾Linux的黑历史,我们不禁感慨万分
然而,正是这些坎坷与挑战塑造了Linux今天的辉煌成就
我们相信,在未来的日子里,Linux将继续保持其开源、灵活和强大的特性,为科技的发展和进步贡献更多的力量