電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 25|回復(fù): 0
收起左側(cè)

等了 20 年,實(shí)時(shí) Linux 進(jìn)主線了

[復(fù)制鏈接]

454

主題

454

帖子

3643

積分

四級(jí)會(huì)員

Rank: 4

積分
3643
跳轉(zhuǎn)到指定樓層
樓主
↓推薦關(guān)注↓
本文源:
https://www.zdnet.com/article/20-years-later-real-time-linux-makes-it-to-the-kernel-really/

多年來,在實(shí)時(shí)Linux上所做的工作使開源操作系統(tǒng)受益匪淺,但直到本周,Linus Torvalds才將其最后一部分納入主流內(nèi)核。到底是什么花了這么長時(shí)間?


高級(jí)實(shí)時(shí)Linux開發(fā)人員Steven Rosedt和Steven Vaughan Nichols在維也納舉行的Linux歐洲峰會(huì)上合影---sjvn/ZDNET

維也納——20年后,實(shí)時(shí)Linux(PREEMPT_RT)終于——終于——進(jìn)入了主流內(nèi)核。Linus Torvalds在歐洲開源峰會(huì)上為代碼祈福。為什么這是一件大事?讓我們從解釋實(shí)時(shí)操作系統(tǒng)(RTOS)是什么以及它有什么好處開始。

1. 什么是RTOS?
RTOS是一種專門的操作系統(tǒng),旨在精確可靠地處理時(shí)間關(guān)鍵任務(wù)。與Windows或macOS等通用操作系統(tǒng)不同,RTOS的構(gòu)建是為了在嚴(yán)格的時(shí)間限制內(nèi)響應(yīng)事件和處理數(shù)據(jù),通常以毫秒或微秒為單位。正如著名的實(shí)時(shí)Linux開發(fā)人員和谷歌工程師Steven Rosedt所說,“實(shí)時(shí)是最快的最壞情況(Real-time is the fastest worst-case scenario.)。”

他的意思是RTOS的本質(zhì)特征是它的確定性行為。RTOS保證關(guān)鍵任務(wù)將在指定的截止日期內(nèi)完成。許多人認(rèn)為RTOS是用于快速流程的。他們不是。速度不是RTOS的重點(diǎn),可靠性才是。這種可預(yù)測性在計(jì)時(shí)至關(guān)重要的應(yīng)用中至關(guān)重要,如工業(yè)控制系統(tǒng)、醫(yī)療設(shè)備和航空航天設(shè)備。

目前使用的實(shí)時(shí)操作系統(tǒng)的一個(gè)例子是VxWorks,它被用于美國國家航空航天局的火星探測車,以引導(dǎo)它們,并被用于波音787夢想飛機(jī),以控制航空電子系統(tǒng),確保飛行控制的實(shí)時(shí)響應(yīng)性。另一個(gè)例子是QNX Neutrino,它廣泛應(yīng)用于汽車的信息娛樂和高級(jí)駕駛員輔助系統(tǒng),如防抱死制動(dòng)器。


▎2. 實(shí)時(shí)Linux的歷史
從即將推出的 Linux 6.12 內(nèi)核開始,所有發(fā)行版都將包含實(shí)時(shí) Linux 代碼。這意味著 Linux 將很快開始運(yùn)行在更多的任務(wù)關(guān)鍵設(shè)備和工業(yè)硬件上。這標(biāo)志著它經(jīng)歷了很長時(shí)間的發(fā)展才走到今天這一步。

實(shí)時(shí)Linux的故事始于20世紀(jì)90年代末,當(dāng)時(shí)對Linux支持實(shí)時(shí)應(yīng)用程序的需求日益增長。最初的工作重點(diǎn)是創(chuàng)建與Linux內(nèi)核一起運(yùn)行的獨(dú)立實(shí)時(shí)內(nèi)核。這包括堪薩斯大學(xué)的KURT等學(xué)術(shù)項(xiàng)目;來自米蘭大學(xué)RTAI;以及新墨西哥礦業(yè)與技術(shù)學(xué)院的RTLinux。

Linux內(nèi)核高級(jí)開發(fā)人員Ingo Molnar于2004年開始收集和重塑這些技術(shù),為實(shí)時(shí)搶占補(bǔ)丁集PREEMPT_RT奠定基礎(chǔ)。

這種方法與早期的實(shí)時(shí)Linux解決方案不同,因?yàn)樗薷牧爽F(xiàn)有的Linux內(nèi)核,而不是創(chuàng)建一個(gè)單獨(dú)的實(shí)時(shí)內(nèi)核。到2006年,它已經(jīng)獲得了足夠的吸引力,Linus Torvalds觀察到,“用Linux控制激光器是瘋狂的,但這個(gè)房間里的每個(gè)人都以自己的方式瘋狂。所以如果你想用Linux來控制工業(yè)焊接激光器,我不反對你使用PREEMPT_RT。”

到2009年,包括Thomas Gleixner、Peter Ziljstra和Rosedt在內(nèi)的一個(gè)內(nèi)核開發(fā)小組已經(jīng)完成了將之前的原型開發(fā)整合到一個(gè)單獨(dú)的樹外補(bǔ)丁集中的工作。就在那時(shí),許多公司開始使用這個(gè)補(bǔ)丁集來構(gòu)建需要毫秒精度的硬實(shí)時(shí)特性的工業(yè)系統(tǒng)。

隨著項(xiàng)目的推進(jìn),它的許多元素都轉(zhuǎn)移到了內(nèi)核中。Rosedt告訴我,在某種程度上,說實(shí)時(shí)性現(xiàn)在才出現(xiàn)在Linux中是錯(cuò)誤的。多年來,它的許多功能已被引入主流Linux。事實(shí)上,其中一些對于你每天使用的Linux來說是必不可少的。

例如,您可能從未聽說過“NO_HZ”,它可以降低空閑系統(tǒng)的功耗。NO_HZ使Linux能夠在具有數(shù)千個(gè)CPU的機(jī)器上高效運(yùn)行。Rostedt強(qiáng)調(diào):“你沒有意識(shí)到Linux因?yàn)閷?shí)時(shí)補(bǔ)丁而得到了多大的改進(jìn)!薄!癓inux今天在數(shù)據(jù)中心運(yùn)行的唯一原因是我們所做的工作。”

因此,如果沒有NO_HZ,Linux就不會(huì)在所有的數(shù)據(jù)中心中運(yùn)行。這反過來解釋了為什么Linux運(yùn)行云端。我不知道如果沒有這種實(shí)時(shí)貢獻(xiàn),世界會(huì)是什么樣子,但它肯定不會(huì)像今天這樣。

實(shí)時(shí)Linux也以一開始無人想到的方式被證明是有用的。Rostedt回憶道:“早在2005年,我收到了一個(gè)實(shí)時(shí)bug報(bào)告,我發(fā)送了一個(gè)補(bǔ)丁并說,‘嘿,這是修復(fù)程序。你能應(yīng)用它嗎?” 那家伙說,‘我不知道我在做什么!一卮鹫f,‘等等,你不是內(nèi)核開發(fā)者嗎?’他回答說:‘我是個(gè)吉他手。’“

原來他使用的是早期的實(shí)時(shí)補(bǔ)丁,因?yàn)樗褂玫氖荍ACK,一種用于低延遲音頻連接的聲音服務(wù)器。他使用它是因?yàn)椋翊蠖鄶?shù)音樂家一樣,他太窮了,買不起高端設(shè)備,所以,Rostedt繼續(xù)說,“他買了一臺(tái)便宜的筆記本電腦,裝了Linux和JACK,因?yàn)橛辛藢?shí)時(shí)補(bǔ)丁,它就能很好地錄音,而不是在寫入硬盤時(shí)跳過!  

事實(shí)證明,許多音樂家都是早期的實(shí)時(shí)Linux用戶,因?yàn)樗梢宰屗麄円缘土膬r(jià)格制作高質(zhì)量的錄音。誰知道呢?這些年來進(jìn)入主流內(nèi)核的其他實(shí)時(shí)Linux特性包括:

1. 互斥鎖的引入
2. Ftrace,可以說是最重要的Linux調(diào)試工具
3. 用戶空間應(yīng)用程序的優(yōu)先級(jí)繼承


▎3. 為什么實(shí)時(shí)Linux花了這么長時(shí)間?
那么,為什么實(shí)時(shí)Linux現(xiàn)在只在內(nèi)核中得到完全的支持呢?Rostedt解釋說:”事實(shí)上,除非我們認(rèn)為它已經(jīng)準(zhǔn)備好了,否則我們不會(huì)把它推上去。“”幾乎所有內(nèi)容在進(jìn)入主流之前都要重寫至少三次,因?yàn)槲覀儗?nèi)容的要求太高了!
此外,通往主線的道路不僅僅是技術(shù)挑戰(zhàn)。政治和認(rèn)知也發(fā)揮了作用。Rostedt回憶道:“一開始,我們甚至不能提到實(shí)時(shí)!薄!懊總(gè)人都說,‘哦,我們不在乎實(shí)時(shí)性!

另一個(gè)問題是錢。多年來,實(shí)時(shí)Linux的資金一直不穩(wěn)定。2015年,Linux基金會(huì)建立了實(shí)時(shí)Linux (RTL)協(xié)作項(xiàng)目,以協(xié)調(diào)圍繞PREEMPT_RT主線的工作。
完全集成的最后一個(gè)障礙是重新編寫內(nèi)核的print_k函數(shù),這是一個(gè)可以追溯到1991年的關(guān)鍵調(diào)試工具。Torvalds 特別保護(hù) printk ——他編寫了原始代碼,并仍將其用于調(diào)試。然而,每當(dāng)調(diào)用 printk時(shí),它也會(huì)在 Linux 程序中產(chǎn)生硬延遲。這種減速在實(shí)時(shí)系統(tǒng)中是不可接受的。

Rosedt 解釋說:“printk 有一千種技巧來處理一千種不同的情況。每當(dāng)我們修改 printk 時(shí),它都會(huì)破壞其中一種情況。printk 調(diào)試的好處在于,你可以精確地知道進(jìn)程崩潰時(shí)的位置。當(dāng)我非常努力地測試系統(tǒng)時(shí),延遲通常在 30 微秒左右,然后突然增加到 5 毫秒。”這種延遲正是 printk 消息造成的。
經(jīng)過大量的工作、多次激烈的討論和幾項(xiàng)被拒絕的提案,今年早些時(shí)候終于達(dá)成了妥協(xié)。Torvalds 很高興,實(shí)時(shí) Linux 開發(fā)人員也很高興,printk 用戶同樣感到滿意。最終,實(shí)時(shí) Linux 成為了現(xiàn)實(shí)。

經(jīng)過二十年的發(fā)展,Linux 實(shí)時(shí)補(bǔ)丁終于被合并到主流內(nèi)核中。這一里程碑標(biāo)志著內(nèi)核開發(fā)人員多年來為 Linux 帶來確定性、低延遲性能的工作達(dá)到了頂峰。
有了這一補(bǔ)丁,Linux 內(nèi)核實(shí)現(xiàn)了完全可搶占,這使它能夠在微秒內(nèi)對事件做出響應(yīng)。這種能力對于需要精確計(jì)時(shí)的應(yīng)用至關(guān)重要,例如工業(yè)控制系統(tǒng)、機(jī)器人和音頻制作。

隨著實(shí)時(shí)補(bǔ)丁的合并,Linux 現(xiàn)在有望成為實(shí)時(shí)操作系統(tǒng)(RTOS)領(lǐng)域的重要參與者。這不僅是實(shí)時(shí)制造商的勝利,也是所有 Linux 用戶的勝利。
- EOF -
分享一個(gè)福利最近極客時(shí)間出了一個(gè)《MySQL底層原理精講》的專欄,目前還在內(nèi)測階段,主要是看市場反饋來定價(jià),所以現(xiàn)在還是免費(fèi)階段,等上線了估計(jì)就可能收費(fèi)了
一次吃透 MySQL 底層原理?? 架構(gòu)篇、事務(wù)篇、索引與鎖篇全覆蓋
這里分享一下極客時(shí)間的這份內(nèi)測專欄,只申請到30個(gè)內(nèi)測名額,掃描下方二維碼自取。。。

掃描上方二維碼自領(lǐng)

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表