當(dāng)前位置 主頁(yè) > 技術(shù)大全 >
然而,就像任何一部偉大的作品,Linux的成長(zhǎng)之路并非一帆風(fēng)順,而是充滿了挑戰(zhàn)與爭(zhēng)議
本文將帶您走進(jìn)Linux的黑歷史,揭開那些不為人知的坎坷與挑戰(zhàn)
一、文件系統(tǒng)的爭(zhēng)議與Bug Linux文件系統(tǒng)的歷史是一部充滿Bug修復(fù)與爭(zhēng)議的記錄
ext4,作為L(zhǎng)inux社區(qū)廣泛使用的一種文件系統(tǒng),其穩(wěn)定性和可靠性一直備受關(guān)注
然而,從它誕生之日起,關(guān)于ext4存在可能導(dǎo)致數(shù)據(jù)丟失的Bug報(bào)告就從未間斷
2017年,Linux內(nèi)核的郵件列表中,Linus Torvalds再次對(duì)ext4表達(dá)了不滿
他指出,盡管ext4已經(jīng)發(fā)布了多年,并被廣泛應(yīng)用于桌面及服務(wù)器,但大量的Bug修復(fù)和清理工作仍在持續(xù)進(jìn)行
其中一些修復(fù)看似并非真正的清理或修復(fù),而是新引入的問題
Linus的憤怒并非空穴來風(fēng),ext4的Bug問題確實(shí)一直困擾著Linux社區(qū)
早在2012年,Theodore Tso就曾報(bào)告過一次嚴(yán)重的Bug,該Bug影響了部分Linux穩(wěn)定版本的內(nèi)核
而在2016年,Vegard Nossum和Quentin Casasnovas使用用戶態(tài)的Fuzzing工具AFL對(duì)文件系統(tǒng)進(jìn)行了測(cè)試,結(jié)果更是令人震驚
盡管Btrfs在測(cè)試中堅(jiān)持了5秒鐘就崩潰,但ext4也僅僅堅(jiān)持了2個(gè)小時(shí)
這充分說明了Linux文件系統(tǒng)并沒有我們想象中的那么穩(wěn)定
更為嚴(yán)重的是,這些Bug不僅可能導(dǎo)致系統(tǒng)崩潰,還可能導(dǎo)致數(shù)據(jù)損壞
威斯康辛大學(xué)麥迪遜分校的研究者曾在FAST 13上發(fā)表的一篇論文中,對(duì)Linux社區(qū)與文件系統(tǒng)相關(guān)的Patch進(jìn)行了統(tǒng)計(jì)和分析
結(jié)果顯示,有將近40%的文件系統(tǒng)相關(guān)的Patch屬于Bugfix類型
換句話說,每提交兩個(gè)Patch,就可能有一個(gè)是用于修復(fù)Bug的
而Bug的集中爆發(fā)也往往源于大的功能演進(jìn)
二、POSIX標(biāo)準(zhǔn)的模糊與爭(zhēng)議 在Linux文件系統(tǒng)的發(fā)展歷程中,POSIX標(biāo)準(zhǔn)無疑是一個(gè)重要的影響因素
POSIX(Portable Operating System Interface)是一個(gè)旨在提供跨操作系統(tǒng)兼容性的標(biāo)準(zhǔn)
然而,作為一個(gè)先有實(shí)現(xiàn)、后有標(biāo)準(zhǔn)的規(guī)范,POSIX在文件系統(tǒng)接口上的定義卻相當(dāng)模糊
尤其是在系統(tǒng)崩潰后,文件系統(tǒng)應(yīng)有的行為方面,POSIX標(biāo)準(zhǔn)幾乎是一片空白
這留給了文件系統(tǒng)開發(fā)者足夠大的“想象空間”
因此,如果一個(gè)Linux文件系統(tǒng)在系統(tǒng)崩潰重啟后,整個(gè)文件系統(tǒng)的內(nèi)容都不見了,那么從POSIX標(biāo)準(zhǔn)的角度來看,這也是“符合標(biāo)準(zhǔn)”的
歷史上,不斷有人嘗試給文件系統(tǒng)提供更加嚴(yán)謹(jǐn)?shù)腃onsistency(一致性)定義,尤其是Crash-Consistency(故障后的一致性)
然而,盡管POSIX也經(jīng)歷了幾個(gè)版本,但關(guān)于文件系統(tǒng)接口的定義卻幾乎沒有改變
這種模糊的標(biāo)準(zhǔn)定義無疑給Linux文件系統(tǒng)的開發(fā)帶來了極大的挑戰(zhàn)
三、API設(shè)計(jì)的失敗與修正 除了文件系統(tǒng)的爭(zhēng)議外,Linux API的設(shè)計(jì)也曾經(jīng)走過不少?gòu)澛?p> usleep和nanosleep是兩個(gè)曾經(jīng)被Linux社區(qū)寄予厚望的新API
它們旨在提供高精度的睡眠功能,以便更好地支持多任務(wù)處理和異步操作
然而,令人失望的是,這兩個(gè)API的設(shè)計(jì)從一開始就存在問題
它們本質(zhì)上是稍稍變通一點(diǎn)的spinwait(自旋等待),根本無需正確實(shí)現(xiàn)sleep的典型語(yǔ)義
這導(dǎo)致CPU資源的消耗大大增加,許多Linux服務(wù)器程序開發(fā)者都因此受到了影響
隨著POSIX標(biāo)準(zhǔn)的建立,問題逐漸浮出水面
原先的features被大家愈發(fā)覺得是bugs
最終,Linux(內(nèi)核版本2.5.39)修正了usleep和nanosleep的行為,使其和其他操作系統(tǒng)(例如Windows)一致
然而,這一修正過程持續(xù)了數(shù)年,期間也伴隨著一批程序的改寫,因?yàn)樗鼈円蕾囎孕却奶匦?p> 四、與Unix和SCO的恩怨情仇 Linux的歷史不僅是一部技術(shù)發(fā)展的記錄,更是一部充滿恩怨情仇的傳奇
其中,與Unix和SCO的糾葛尤為引人注目
Unix操作系統(tǒng)由貝爾實(shí)驗(yàn)室的肯·湯普森和丹尼斯·里奇研發(fā),是計(jì)算機(jī)歷史上最偉大的發(fā)明之一
然而,由于早期混亂的授權(quán),Unix的源代碼被廣為擴(kuò)散,形成了多個(gè)不同版本的Unix
這為后來的Linux操作系統(tǒng)提供了豐富的借鑒和靈感
然而,這也為L(zhǎng)inux帶來了麻煩
SCO公司自稱是Unix操作系統(tǒng)的擁有者,并對(duì)IBM提出了10億美元的起訴,稱IBM在開放源代碼的Linux中泄露了商業(yè)秘密
這一事件引發(fā)了Linux社區(qū)與SCO之間的激烈爭(zhēng)議和對(duì)抗
盡管SCO在言語(yǔ)上變得越來越好斗,但微軟卻看到了其中的機(jī)會(huì)
微軟與Unix的關(guān)系源遠(yuǎn)流長(zhǎng),并對(duì)SCO的演變起了重要的催化作用
微軟曾經(jīng)為Intel處理器開發(fā)了一種Unix操作系統(tǒng),命名為Xenix,并以O(shè)EM的形式再授權(quán)給多家公司
然而,隨著Windows NT的研發(fā)和推出,微軟逐漸放棄了Xenix和Unix市場(chǎng)
SCO的崛起和衰落與Unix和Windows的競(jìng)爭(zhēng)息息相關(guān)
SCO曾經(jīng)憑借Xenix操作系統(tǒng)在Intel芯片市場(chǎng)上占據(jù)了一席之地
然而,隨著Windows操作系統(tǒng)的崛起和Unix市場(chǎng)的萎縮,SCO也逐漸陷入了困境
最終,SCO與Linux的爭(zhēng)議也成為了其衰落的一個(gè)縮影
五、結(jié)語(yǔ) Linux操作系統(tǒng)的歷史是一部充滿挑戰(zhàn)與爭(zhēng)議的傳奇
從文件系統(tǒng)的爭(zhēng)議與Bug到POSIX標(biāo)準(zhǔn)的模糊與爭(zhēng)議,再到API設(shè)計(jì)的失敗與修正,以及與Unix和SCO的恩怨情仇,Linux的成長(zhǎng)之路充滿了坎坷與挑戰(zhàn)
然而,正是這些挑戰(zhàn)和爭(zhēng)議推動(dòng)了Linux的不斷進(jìn)步和完善
如今,Linux已經(jīng)成為全球最受歡迎的開源操作系統(tǒng)之一,為無數(shù)開發(fā)者和企業(yè)提供了強(qiáng)大的支持和保障
回顧Linux的黑歷史,我們不禁感慨萬分
然而,正是這些坎坷與挑戰(zhàn)塑造了Linux今天的輝煌成就
我們相信,在未來的日子里,Linux將繼續(xù)保持其開源、靈活和強(qiáng)大的特性,為科技的發(fā)展和進(jìn)步貢獻(xiàn)更多的力量