内核的主要版本发展历史
Linux操作系统从诞生到1.0版的正式出现,实际上,Linux系统并没有0.00这个版本,但是自从Linus在自己的80386兼容机上实验成功在时钟中断控制下两个任务相互切换运行时,在某种程度上更增强了他开发自己操作系统的想法。因此我们也将其列为一个版本。共发布了如表1-1中所示的一些主要版本。
表1-1
版本号 | 发布/编制日期 | 说明 |
0.00 | 1991.2-4 | 两个进程,分别在屏幕上显示AAA… BBB… |
0.01 | 1991.9.7 | 第一个正式向外公布的Linux 内核版本。多线程文件系统、分段和分页内存管理。这时还不包含软盘驱动程序。 |
0.02 | 1991.10.5 | 该版本以及0.03 版是内部版本,目前已经无法找到 |
0.10 | 1991.10 | 由Ted Ts’o发布的Linux内核版本。增加了内存分配库函数。 ①、在boot目录中含有一个把as86汇编语法转换成gas汇编语法的脚本程序。 ②、能够使用GCC编译内核; ③、支持加载/卸载(mount/umount)文件系统的操作; ④、把原来的引导程序boot/boot.s分割成boot/bootsect.s和boot/setup.s两个程序; ⑤、支持16MB物理内存;为驱动程序和内存管理程序分别建立了自己的子目录; ⑥、增加了软盘驱动程序; ⑦、支持文件预读操作; ⑧、支持dev/port和dev/null设备; ⑨、重写了kernel/signal.c代码; ⑩、添加了对sigaction()的支持; |
0.11 | 1991.12.8 | 基本可以正常运行的内核版本。支持硬盘和软驱设备以及串行通信。 ①执行程序的需求加载; ②启动时可执行/etc/rc初始文件; ③建立起数学协处理器仿真程序框架程序结构; ④Ted Ts'o增加了对脚本程序的处理代码; ⑤Galen Hunt添加了对多种显示卡的支持; ⑥John T. Kohl修改了kernel/console.c程序,使控制台支持鸣叫功能和KILL字符; ⑦提供了对多种语言键盘的支持。 |
0.12 | 1992.1.15 | 主要增加了数学协处理器的软件模拟程序。增加了作业控制、虚拟控制台、文件符号链接和虚拟内存对换(swapping)功能。 ①Ted Ts'o添加了终端信号处理支持; ②启动时可以改变使用的屏幕行列值; ③改正了一个文件IO引起的竞争条件; ④增加了对共享库的支持,节省了内存使用量; ⑤符号链接处理;⑥删除目录系统调用; ⑦Peter MacDonald实现了虚拟终端支持,使得Linux比当时的某些商业版UNIX还要更胜一筹; ⑧实现对select()函数的支持,这是Peter MacDonald根据一些人为MINIX提供的补丁程序修改而成的,但是MINIX却没有采纳这些补丁程序; ⑨可重新执行的系统调用; ⑩Linus编制完成数学协处理器仿真代码; |
0.95.x(即0.13) | 1992.3.8 | 加入虚拟文件系统支持,但还是只包含一个MINIX文件系统。 ①增加了登录界面; ②Ross Biro添加了调试代码(ptrace); ③软盘驱动器磁道缓冲,改善了软盘驱动程序和文件系统的性能。; ④非阻塞管道文件操作; ⑤系统重启(Ctrl-Alt-Del); ⑥swapon()系统调用,从而可以实时选择交换设备; ⑦支持递归符号链接; ⑧支持4个串行端口; ⑨支持硬盘分区,改变了硬盘命名和编号方式; ⑩支持更多种类键盘; James Wiegand编制了最初的并行口驱动程序等,支持CDROM。 |
0.96.x | 1992.5.12 | ①开始加入UNIX Socket支持。 ②增加了ext文件系统alpha测试程序。 ③SCSI驱动程序被正式加入内核。软盘类型自动识别。 ④改善了串行驱动、高速缓冲、内存管理的性能,支持动态链接库,并开始能运行X-Windows程序。 ⑤原汇编语言编制的键盘驱动程序已用C重写。与0.95内核代码比较有很大的修改。 |
0.97.x | 1992.8.1 | 加了对新的SCSI驱动程序的支持;动态高速缓冲功能;msdos和ext文件系统支持;总线鼠标驱动程序。内核被映射到线性地址3GB开始处。 |
0.98.x | 1992.9.28 | ①、改善对TCP/IP(0.8.1)网络的支持,纠正了extfs的错误。 ②、重写了内存管理部分(mm),每个进程有4GB逻辑地址空间(内核占用1GB)。 ③、从0.98.4开始每个进程可同时打开256个文件(原来是32个),并且进程的内核堆栈独立使用一个内存页面。 |
0.99.x | 1992.12.13 | 重新设计进程对内存的使用分配,每个进程有4GB线性空间。不断地在改进网络代码。NFS支持。 |
1.0 | 1994.3.14 | 第一个正式版 |
1.2 | 1995.3.7 |
|
2.0.40 | 2004.2.8 | 源代码大小7.2MB(经gzip压缩后) |
2.2.26 | 2004.2.25 | 源代码大小19MB(经gzip压缩后) |
2.4.31 | 2005.6.1 | 源代码大小37MB(经gzip压缩后) ①、提供了大量的处理器芯片的支持,增加了对IA 64、S/390、SuperH这3种体系结构的处理器的支持。 ②、对ISA 即插即用设备的支持,比如可以从一个即插即用的IDE控制器上启动系统。 ③、增加对更多的文件系统支持,如新增加对Windows NT的NTFS,网络文件系统的NFS支持。 ④、对USB总线的支持,如键盘、鼠标、音箱、Modem等等USB接口设备。 ⑤、在内核级提供内建Java解释器的支持。 ⑥、支持在SMP(对称多处理器系统)下的多个IO-APIC(输入输出的高级可编程中断控制器),提高了对高端服务器的支持效率。 ⑦、支持多达10个IDE控制器。 ⑧、支持到多达4GB的内存,16块以太网卡,同时支持最大容量为2GB的文件。 ⑨新增支持ATM网络适配器等高速网络设。 |
2.6.14 | 2005.11.9 | 源代码大小47MB(经gzip压缩后) ①、支持多处理器配置和64位计算。 ②、支持实现高效率线程处理的本机POSIX线程库(NPTL)。 |
2.6.25 | 2008.4.17 | 源代码大小58MB(经gzip压缩后) |
备注:。
Linus自己的内核已经丢失,现存的0.10版内核代码是TedTs'o当时保存下来的版本。另外,从0.95版开始,对内核的许多改进工作(提供补丁程序)均以其他人为主了,而Linus的主要任务是对内核的维护和决定是否采用某个补丁程序。
到现在为止,最新的内核版本是2008年4月4日公布的2.6.25版。其中包括大约16000个文件,使用gzip压缩后源代码软件包也有58MB左右!
版本术语
Alpha版本是内部测试版,是比Beta版还早的测试版,一般不向外部发布,会有很多Bug,除非你也是测试人员,否则不建议使用。
Beta版本是测试版,这个阶段的版本会一直加入新的功能。
RC版本(Release Candidate) 是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错。
RTM版本(Releaseto Manufacture)是给工厂大量压片的版本,内容跟正式版是一样的。
OEM版本是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。如果买笔记型计算机或品牌计算机就会有随机版软件。包装不像零售版精美,通常只有一面CD和说明书(授权书)。
RTL版本(Retail)是真正的正式版,正式上架零售版。
参考文献:《Linux内核完全剖析》