《Linux设备驱动开发详解 A》一一3.1 Linux内核的发展与演变

简介:

本节书摘来华章计算机出版社《Linux设备驱动开发详解 A》一书中的第3章,第3.1节,作者:宋宝华 更多章节内容可以访问云栖社区“华章计算机”公众号查看。1

3.1 Linux内核的发展与演变

Linux操作系统是UNIX操作系统的一种克隆系统,是一种类UNIX操作系统,诞生于1991年10月5日(第一次正式向外公布的时间),起初的作者是Linus Torvalds。Linux操作系统的诞生、发展和成长过程依赖着5个重要支柱:UNIX操作系统、Minix操作系统、GNU计划、POSIX标准和Internet。
1.?UNIX操作系统
UNIX 操作系统是美国贝尔实验室的Ken. Thompson和Dennis Ritchie于1969年夏在DEC PDP-7小型计算机上开发的一个分时操作系统。Linux操作系统可看作UNIX操作系统的一个克隆版本。
2.?Minix操作系统
Minix操作系统也是UNIX的一种克隆系统,它于1987年由著名计算机教授Andrew S. Tanenbaum开发完成。有开放源代码的Minix系统的出现在全世界的大学中刮起了学习UNIX系统的旋风。Linux刚开始就是参照Minix系统于1991年开发的。
3.?GNU计划
GNU计划和自由软件基金会(FSF)是由Richard M. Stallman于1984年创办的,GNU是“GNU's Not UNIX”的缩写。到20世纪90年代初,GNU项目已经开发出许多高质量的免费软件,其中包括emacs编辑系统、bash shell程序、gcc系列编译程序、GDB调试程序等。这些软件为Linux操作系统的开发创造了一个合适的环境,是Linux诞生的基础之一。没有GNU软件环境,Linux将寸步难行。因此,严格来说,“Linux”应该称为“GNU/Linux”系统。
下面从左到右依次为前文所提到的5位大师Linus Torvalds、Dennis Ritchie、Ken. Thompson、Andrew S. Tanenbaum、Richard M. Stallman。但愿我们能够追随大师的足迹,让自己不断地成长与进步。Linus Torvalds的一番话甚为有道理:“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.”技术成长的源动力应该是兴趣而非其他,只有兴趣才可以支撑一个人持续不断地十年如一日地努力与学习。Linus Torvalds本人,虽然已经是一代大师,仍然在不断地管理和合并Linux内核的代码。这点,在国内浮躁的学术氛围之下,几乎是不可思议的。我想,中国梦至少包含每个码农都可以因为技术成长而得到人生出彩的机会。
image

4.?POSIX标准
POSIX(Portable Operating System Interface,可移植的操作系统接口)是由IEEE和ISO/IEC开发的一组标准。该标准基于现有的UNIX实践和经验完成,描述了操作系统的调用服务接口,用于保证编写的应用程序可以在源代码级上在多种操作系统中移植。该标准在推动Linux操作系统朝着正规化发展,是Linux前进的灯塔。
5.?互联网
如果没有互联网,没有遍布全世界的无数计算机骇客的无私奉献,那么Linux最多只能发展到Linux 0.13(0.95)版本的水平。从Linux 0.95版开始,对内核的许多改进和扩充均以其他人为主了,而Linus以及其他维护者的主要任务开始变成对内核的维护和决定是否采用某个补丁程序。
表3.1描述了Linux操作系统重要版本的变迁历史及各版本的主要特点。
image

Linux内核通常以2~3个月为周期更新一次大的版本号,如Linux 2.6.34是在2010年5月发布的,Linux 2.6.35的发布时间则为2010年8月。Linux 2.6的最后一个版本是Linux 2.6.39,之后Linux内核过渡到Linux 3.0版本,同样以2~3个月为周期更新小数点后第一位。因此,内核Linux 3.x时代,Linux 3和Linux 2.6的地位对等,因此,Linux 2.6时代的版本变更是Linux 2.6.N~2.6.N+1以2~3个月为周期递进,而Linux 3.x时代后,则是Linux 3.N~3.N+1以2~3个月为周期递进。Linux 3.x的最后一个版本是Linux 3.19。
在Linux内核版本发布后,还可以进行一个修复bug或者少量特性的反向移植(Backport,即把新版本中才有的补丁移植到已经发布的老版本中)的工作,这样的版本以小数点后最后一位的形式发布,如Linux 2.6.35.1、Linux 2.6.35.2、Linux 3.10.1和Linux 3.10.2等。此类已经发布的版本的维护版本通常是由Greg Kroah-Hartman等人进行管理的。Greg Kroah-Hartman是名著LDD3(《Linux设备驱动(第3版)》的作者之一。
关于Linux内核从Linux 2.6.39变更为Linux 3.0的变化,按照Linus Torvalds的解释,并没有什么大的改变:“NOTHING. Absolutely nothing. Sure, we have the usual two thirds driver changes, and a lot of random fixes, but the point is that 3.0 is just about renumbering, we are very much not doing a KDE-4 or a Gnome-3 here. No breakage, no special scary new features, nothing at all like that.”因此,简单来说,版本号变更为“3.x”的原因就是“我喜欢”。
关于Linux内核每一个版本具体的变更,可以参考网页http://kernelnewbies.org/LinuxVersions,比如Linux 3.15针对Linux 3.14的变更归纳在:http://kernelnewbies.org/Linux_3.15
就在本书写作的过程中,2015年2月23日,也迎来了Linux 4.0-rc1的诞生,而理由仍然是那么“无厘头”:

.. after extensive statistical analysis of my G+ polling, I've come to
   the inescapable conclusion that internet polls are bad.
   
   Big surprise.
   
   But "Hurr durr I'ma sheep" trounced "I like online polls" by a 62-to-38%
   margin, in a poll that people weren't even supposed to participate in.
   Who can argue with solid numbers like that? 5,796 votes from people who
   can't even follow the most basic directions?
   
   In contrast, "v4.0" beat out "v3.20" by a slimmer margin of 56-to-44%,
   but with a total of 29,110 votes right now.
   
   Now, arguably, that vote spread is only about 3,200 votes, which is less
   than the almost six thousand votes that the "please ignore" poll got, so
   it could be considered noise.
   
   But hey, I asked, so I'll honor the votes.

从表3.1可以看出,Linux的开发一直朝着支持更多的CPU、硬件体系结构和外部设备,支持更广泛领域的应用,提供更好的性能这3个方向发展。按照现在的状况,Linux内核本身基本没有大的路线图,完全是根据使用Linux内核的企业和个人的需求,被相应的企业和个人开发出来并贡献给Linux产品线的。简单地说,Linux内核是一个演变而不是一个设计。关于Linux的近期热点和走向,可以参考位于http://www.linuxfoundation.org/news-media/lwf 的《Linux Weather Forecast》。
除了Linux内核本身可提供免费下载以外,一些厂商封装了Linux内核和大量有用的软件包、中间件、桌面环境和应用程序,制定了针对桌面PC和服务器的Linux发行版(Distro),如Ubuntu、Red Hat、Fedora、Debian、SuSe、Gentoo等,国内的红旗Linux开发商中科红旗则已经宣布倒闭。
再者,针对嵌入式系统的应用,一些集成和优化内核、开发工具、中间件和UI框架的嵌入式Linux被开发出来了,例如MontaVista Linux、Mentor Embedded Linux、MeeGo、Tizen、Firefox OS等。
Android采用Linux内核,但是在内核里加入了一系列补丁,如Binder、ashmem、wakelock、low memory killer、RAM_CONSOLE等,目前,这些补丁中的绝大多数已经进入Linux的产品线。
图3.1显示了Linux 2.6.13以来每个内核版本参与的人、组织的情况以及每次版本演进的时候被改变的代码行数和补丁的数量。目前每次版本升级,都有分布于200多个组织超过1000人提交代码,被改变的代码行数超过100万行,补丁数量达1万个。

image

相关文章
|
7月前
|
安全 网络协议 Linux
深入理解Linux内核模块:加载机制、参数传递与实战开发
本文深入解析了Linux内核模块的加载机制、参数传递方式及实战开发技巧。内容涵盖模块基础概念、加载与卸载流程、生命周期管理、参数配置方法,并通过“Hello World”模块和字符设备驱动实例,带领读者逐步掌握模块开发技能。同时,介绍了调试手段、常见问题排查、开发规范及高级特性,如内核线程、模块间通信与性能优化策略。适合希望深入理解Linux内核机制、提升系统编程能力的技术人员阅读与实践。
698 1
|
7月前
|
Ubuntu Linux
Ubuntu 23.04 用上 Linux 6.2 内核,预计下放到 22.04 LTS 版本
Linux 6.2 带来了多项内容更新,修复了 AMD 锐龙处理器设备在启用 fTPM 后的运行卡顿问题,还增强了文件系统。
|
7月前
|
Ubuntu Linux
Ubuntu 23.10 现在由Linux内核6.3提供支持
如果你想在你的个人电脑上测试一下Ubuntu 23.10的最新开发快照,你可以从官方下载服务器下载最新的每日构建ISO。然而,请记住,这是一个预发布版本,所以不要在生产机器上使用或安装它。
|
7月前
|
监控 Ubuntu Linux
什么Linux,Linux内核及Linux操作系统
上面只是简单的介绍了一下Linux操作系统的几个核心组件,其实Linux的整体架构要复杂的多。单纯从Linux内核的角度,它要管理CPU、内存、网卡、硬盘和输入输出等设备,因此内核本身分为进程调度,内存管理,虚拟文件系统,网络接口等4个核心子系统。
497 0
|
7月前
|
Web App开发 缓存 Rust
|
7月前
|
Ubuntu 安全 Linux
Ubuntu 发行版更新 Linux 内核,修复 17 个安全漏洞
本地攻击者可以利用上述漏洞,攻击 Ubuntu 22.10、Ubuntu 22.04、Ubuntu 20.04 LTS 发行版,导致拒绝服务(系统崩溃)或执行任意代码。
|
6月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
757 1
二、Linux文本处理与文件操作核心命令
|
6月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
446 137