Unix/Linux编程:Linux简史

  • 术语Linux通常用来指代完整的类Unix操作系统,Linux内核只是其中的一部分
  • 这么定义多少有些措辞不当,因为一般商业Linux发布版中所含的很多关键组件实际上发源于另一项目,早于Linux问世前就已经启动了

GNU项目

  • 为开发出一套完整而又可自由获取,包含内核以及所有相关软件包的类UNIX 系统,Stallman 发起了 GNU 项目(“GNU’s not UNIX”的递归缩写形式),并积极邀请有志之士加盟。1985 年,Stallman 创立了非盈利机构—自由软件基金会(FSF),以支持 GNU项目和广义意义上的自由软件开发
  • GNU 项目的重要成果之一是制定了 GNU GPL(通用公共许可协议): GPL 许可协议发布的软件不但必须开放源码,而
    且应能在 GPL 条款的约束下自由对其进行重新发布。可以不受限制的修改以 GPL 许可协议发布的软件,但任何经修改后发布的软件仍需遵守 GPL 条款。若经过修改的软件以二进制(可执行)形式发布,那么软件的修改者必需满足软件使用者的以下要求:以不高于发行成本的价格,获得修改后的软件源码。
  • GPL 的第一版发布于 1989 年,第二版本发布于1991年(Linux 内核就是以该版许可协议发布的),第三版发布于2007年
  • Linux 发布版中的大多数软件,包括 Linux 内核,都是以 GPL 或与之类似的许可协议发布的。

最初,GNU 项目未能开发出能够有效运作的 UNIX 内核,但却开发了大量其他程序:

  • 由于这些程序全都针对类 UNIX 系统而设计,因此(理论上)均有可能在现有的 UNIX 实现上运行(实际情况也的确如此),更有甚者,有时还被移植到了其他操作系统上。
  • Emacs 文本编辑器、GCC(原名为 GNU C 编译器,现更名为 GNU 编译器集合,集 C、C++,以及其他编程
    语言的编译器于一身)、bash shell 以及 glibc(GNU C 语言库)便是 GNU 项目结出的硕果

到了 20 世纪 90 年代早期,GNU 项目已经开发出了一套几乎完整的操作系统,除了还缺少其中最重要的一环:能够有效运转的 UNIX 内核。于是,GNU 项目以 Mach 微内核为基础,发起了一项雄心勃勃的内核设计计划,史称 GNU/HURD 计划。然而,时至今日,HURD 的发布还遥遥无期。

万事具备,独缺内核。只要再拥有一个能够有效运作的内核,就能使 GNU 项目开发出的UNIX 系统“功德圆满”

在构成通常所说的“Linux 系统”的程序代码中,由于有相当一部分都源自 GNU 项目,因此 Stallman 更愿意用“GNU/Linux”一词来称呼整个系统。这一称谓问题(Linux Vs. GNU/Linux))也在自由软件社区中引发了一些口舌之争。

Linux内核

  • 1991 年,Linus Torvalds,一位芬兰赫尔辛基大学的学生,在一门学习课程中,Torvalds 开始接触 Minix—由荷兰大学教授 Andrew Tanenbaum 于 20 世纪 80 年代中期开发的一款小型、类 UNIX 的操作系统内核
  • Tanenbaum 将 Minix 连同源码完全开放,作为大学操作系统设计课程的教学工具。人们可以在386 系统上构建并运行 Minix 内核。当然,正因为其主要用于教学,Minix 在设计上几乎独立于硬件架构,故而也未对 386 处理器的能力充分加以利用。
  • 因此,为了开发出一个高效而又功能齐备的 UNIX 内核,Torvalds 开始“自力更生”。数月之后,Torvalds 开发出一个内核“雏形”,可以编译并运行各种 GNU 程序。随之,于 1991年 10 月 5 日,为求得其他程序员的帮助,Torvalds 在 Usenet 新闻组 comp.os.minix 上就其内核 0.02 版发表了如下申明,如今已被广为引用

还在念叨 minix1.1 的好日子—人人都能给自个儿写设备驱动,不用看别人的脸色?手头没有称心的项目?是不是特想有一个操作系统,能依着自个的想法来回折腾,还能长见识?瞧瞧 minix 上面跑的那些玩意吧,是不是挺没劲?不想再为调个酷毙了的程序,一宿一宿熬个没完?真这样,那我可找对人了。一个月前在帖子里就提过,我正在写一个操作系统,在 AT-386 上面跑,免费的,挺像 minix。现在总算到了这份上,凑合能用(当然,这得看您想干吗)。现在,我愿意公布系统的源码,请大家多瞅瞅,多用用。系统版本只是0.02,不过 bash、gcc、gnu-make、gnu-sed 还有 compress 等等倒是都跑通了。

  • 为了传承 UNIX 历史悠久的光荣传统,在为 UNIX 系统克隆命名时,总以字母“X”结尾,故而,人们最终将这一内核命名为 Linux。最初,Linux 的使用许可协议要严格得多,但 Torvalds很快就将其归于 GNU GPL 阵营
  • 于是,其他程序员与 Torvalds 一起加入到 Linux 的开发行列,添加了很多新特性,诸如:改进型的文件系统、对网络的支持、设备驱动程序以及对多处理器的支持等。
  • 1994 年 3 月,开发者们发布了 Linux 1.0 版本。随之,Linux 1.2 发布于 1995 年 3月,Linux 2.0 发布于 1996 年 6 月,Linux 2.2 发布于 1999 年 1 月,Linux 2.4 发布于 2001 年 1月。对内核 2.5 版本的开发始于 2001 年 11 月,并最终于 2003 年 12 月发布了 Linux 内核 2.6

Linux 内核版本

在 Linux1.0 版本之后,内核开发者针对每次发布所采用的内核版本编号方案为 x.y.z。x 表示主版本号,y 为附属于主版本号的次版本号,z 是从属于次版本号的修订版本号(细微的改进和 BUG 修复)

采用这一发布模式,内核的两个版本会一直处于开发之中。

  • 一个是用于生产系统的稳定(stable)分支,其次版本号为偶数;
  • 另一个是经常变动的开发(development)分支,其次版本号为奇数(当前稳定版次版本号+1)

指导思想是(在实践中并未严格执行)应将所有新特性添加到内核当前的开发分支系列中,而对内核稳定分支系列的修订应严格限定为细微的改进及 bug修复。当开发者认为当前的开发分支已宜于发布时,会将该开发分支转换成新的稳定分支,并为其分配一个偶数的次版本号。例如,内核开发分支 2.3.z 会“进化”为内核稳定分支 2.4。

随着 2.6 内核的发布,内核开发模式再次发生改变。稳定内核版本之间发布间隔过长,因而导致诸多问题和不便,这是内核开发模型改变的主要原因(从 Linux 2.4.0 到 2.6.0 的发布历时近 3 年)。虽然还会就该模型的微调定期开展讨论,但基本细节已经确定如下

  • 不再有稳定内核和开发内核的概念。每个新的 2.6.z 发布版都可以包含新特性,其生命周期始于对新特性的追加,然后历经一系列候选发布版本让新特性稳定下来。当开发者认为某个候选版本足够稳定时,便可将其作为内核 2.6.z 发布。一般情况下,发布周期约为 3 个月
  • 有时,也可能需要为某个稳定的 2.6.z 发布版打上些小补丁程序,以修复 bug 或安全问题。如果这样的修复工作具有足够高的优先级,并且补丁程序的正确性也“毋庸置疑”,那么无需等待下一个 2.6.z 发布版,可以直接应用补丁创建一个版本号形如 2.6.z.r 的发布版本,其中,r 作为该 2.6.z 内核版本的次修订版序号
  • 额外责任将转嫁给Linux 发行厂商,由他们来确保随Linux 发行版一同发行内核的稳定性

Linux 发行版

准确说来,术语 Linux 只是指由 Linus Torvalds 和其他人所开发出的内核。可是,也常使用该术语来指代内核外加一大堆其他软件(工具和库)所构成的完整操作系统。Linux 草创之际,需要用户自行组装上述所有软件,创建文件系统,在文件系统上正确地安置并配置所有软件。用户不但要具备专业知识,还需为此耗费大量时间。如此一来,这便为 Linux 发行商们开启了市场,他们创建软件包(发行版),来自动完成大部分安装过程,其中包括了建立文件系统以及安装内核和其他所需软件等。

  • Linux 的发行版最早出现于 1992 年,包括 MCC Interim Linux(英国,曼彻斯特计算机中心)、TAMU(德克萨斯 A&M 大学)以及 SLS(SoftLanding Linux System)。
  • 至今健在的商业发行版 Slackware 诞生于 1993 年。
  • 几乎与此同时,也诞生了非商业的 Debian 发行版,SUSE和 Red Hat 紧随其后。
  • 时下最流行的 Ubuntu 发行版问世于 2004 年。

如今,对于那些在自由软件项目中表现活跃的程序员,许多 Linux 发行公司也会加以雇佣

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值