- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- 宋寶華
- 2140字
- 2018-12-31 20:25:26
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內核的代碼。這點,在國內浮躁的學術氛圍之下,幾乎是不可思議的。我想,中國夢至少包含每個碼農都可以因為技術成長而得到人生出彩的機會。

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操作系統重要版本的變遷歷史及各版本的主要特點。
表3.1 Linux操作系統版本的歷史及特點

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.0is*just*about renumbering,we are very much*not*doing a KDE-4or a Gnome-3here.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 5796 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 29110 votes right now.
Now,arguably,that vote spread is only about 3200 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萬個。

圖3.1 Linux內核開發人員和補丁情況
- Linux設備驅動開發詳解(第2版)
- Cybersecurity:Attack and Defense Strategies
- UNIX操作系統設計
- 阿里云數字新基建系列:云原生操作系統Kubernetes
- 新手易學:系統安裝與重裝
- Extending Bootstrap
- Microsoft Operations Management Suite Cookbook
- 完美應用RHEL 8
- OpenStack系統架構設計實戰
- Linux操作系統案例教程(第2版)
- Getting Started with UDK
- BuddyPress Theme Development
- 程序員必讀經典(算法基礎+計算機系統)
- Mastering Eclipse Plug-in Development
- Administering ArcGIS for Server