Linux内核已有25年的历史了。如果我不得不提出自1991年(成立之日)以来Linux内核的发展历史的简短版本,而直到1994年直到现在,尤其是1994年以来(1.0.0)的简短版本,我都做不到。在阅读每个内核发行说明之前,我所能做的最好的就是提供以下内容,这些内容是在3.11版之前添加到内核的常规发行功能(省略说明和链接):
- Linux内核的1.0版于1994年3月14日发布。此Linux内核发行版仅支持基于单处理器,基于i386的计算机系统。可移植性成为一个问题,因此 1.2版(1995年3月7日发布)获得了对使用基于Alpha,SPARC和MIPS架构的处理器的计算机系统的支持。
- 2.0版于1996年6月9日发布。该系列共有41个版本。2.0的主要功能是SMP支持(即在单个系统中支持多个处理器)以及对更多类型的处理器的支持。
- 2.2版(1999年1月26日发布)删除了全局自旋锁,并提供了改进的SMP支持,并增加了对m68k和PowerPC架构以及新文件系统的支持(包括对Microsoft NTFS的只读支持)。
- 2001年1月4日发布的2.4.0版包含对ISA即插即用,USB和PC卡的支持。它还包括对惠普公司PA-RISC处理器的支持。2.4.x的开发发生了一些变化,在整个系列的整个过程中提供了更多功能,包括:支持蓝牙,逻辑卷管理器(LVM)版本1,RAID支持,InterMezzo和ext3文件系统。
- 版本2.6.0于2003年12月18日发布。针对2.6.x的开发进一步朝着在整个系列中包含新功能的方向发展。在2.6系列中所做的更改包括:将µClinux集成到主线内核源中,PAE支持,对几行新CPU的支持,将ALSA集成到主线内核源中,最多支持2 32个用户( (从2 16开始),最多支持2 29个进程ID(仅64位,32位Arch仍限制为2 15)),大大增加了设备类型的数量和每种类型的设备的数量,改进了64位支持,支持文件系统,支持文件大小最大为16 TB,内核抢占,支持本机POSIX线程库(NPTL),将用户模式Linux集成到主线内核源中,将SELinux集成到主线内核源中,InfiniBand支持等等。同样值得注意的是,在整个2.6.x版本中增加了几个文件系统:FUSE,JFS,XFS,ext4等。有关2.6内核系列历史记录的详细信息,可以在kernel.org 2.6内核系列源代码发布区域的ChangeLog文件中找到。
- 3.0版于2011年7月22日发布。Torvalds宣布最大的变化是“什么都没有,绝对没有。” 2011年5月30日,Torvalds宣布:“ ...确保我们真正发布下一个发行版,不仅是一个全新的闪亮数字,而且是一个好的内核。” 经过预期的6-7周的开发过程后,它将在Linux 20周年纪念日附近发布。
- 在2012年12月,Torvalds决定通过取消对i386处理器的支持来降低内核的复杂性,从而使3.7内核系列 成为仍支持原始处理器的最后一个。同一系列统一支持ARM处理器。
- 2013年9月2日发布的3.11版增加了许多新功能,例如用于open(2)的新O_TMPFILE标志,以减少临时文件漏洞,实验性AMD Radeon动态电源管理,低延迟网络轮询和zswap(压缩交换缓存)。
我还可以补充一点,Linux基金会多年来一直在报告内核开发。以下是2012-2013年内核开发亮点:
- 来自3,738个代表536家公司(我们知道)的个人开发人员已合并了将近92,000个变更集。
- 大量重要的新功能已合并到主线中。其中包括完整的无滴答操作,用户命名空间,用于ARM的KVM和Xen虚拟化,调度程序中的每个实体负载跟踪,用户空间检查点/重新启动,64位ARM体系结构支持,面向F2FS闪存的文件系统,旨在改善许多联网性能的网络在延迟和缓冲区膨胀问题上,两个独立的子系统为块存储设备提供了快速缓存,等等。
- 关于Android特定内核功能的长期争论已完全消失在后台。备受关注的“唤醒锁”功能已被最新的Android设备中使用的另一种主线解决方案悄然取代。
- 在此期间,使用自动化工具查找开发内核中的错误的使用显着增加。诸如“三位一体”模糊测试仪和零日构建和启动系统之类的工具正在预发行内核中发现大量错误,从而缩短了开发周期并使社区能够提供更高质量的发行版。
- 来自移动和嵌入式行业的贡献继续增加。例如,Linaro,Samsung和TI共同贡献了本白皮书先前版本的4.4%的更改;在截至3.10的时期内,他们贡献了几乎所有变化的11%。
- 核心项目首次参加了“妇女外联方案”,为41个职位申请了7个职位。在应用过程中,向内核提交了374个补丁,而3.10内核发行版中接受了超过1/3的补丁。实习过程现在正在进行中,但是直到将来的内核发行时,结果才开始显示。
此外,量化内核所发生的事情并不难,因为我们拥有超越单个提交的指标。例如,我们知道1994年的1.0.0内核有176250行代码;我们知道像3.10这样的现代内核具有15803499行代码。数量更多。内核发布频率增加了(3.10为63天),更改率也有所提高(每小时9次提交或更多)。引用Linux Foundation:
在过去的任何公共软件项目中,保持这种变化速度多年的能力都是前所未有的。
但是所有这些在我看来并没有什么洞察力。因此,我会问:
- 除了线性构成组成该内核的所有列出功能的线性加法之外,这个四分之一世纪的演变是否可以被概括地视为合格?
- 这是否带来了有关Linux内核的含义或发展方向的任何见解?经过25年的发展,可以肯定地得出一些结论吗?
寻找一个通俗易懂的抽象答案,说明一切,而不必诉诸一切。