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

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

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

等了 20 年,實時 Linux 進主線了

[復制鏈接]

454

主題

454

帖子

3643

積分

四級會員

Rank: 4

積分
3643
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 3 天前 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
↓推薦關注↓
本文源:
https://www.zdnet.com/article/20-years-later-real-time-linux-makes-it-to-the-kernel-really/

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

原來他使用的是早期的實時補丁,因為他使用的是JACK,一種用于低延遲音頻連接的聲音服務器。他使用它是因為,像大多數(shù)音樂家一樣,他太窮了,買不起高端設備,所以,Rostedt繼續(xù)說,“他買了一臺便宜的筆記本電腦,裝了Linux和JACK,因為有了實時補丁,它就能很好地錄音,而不是在寫入硬盤時跳過!  

事實證明,許多音樂家都是早期的實時Linux用戶,因為它可以讓他們以低廉的價格制作高質(zhì)量的錄音。誰知道呢?這些年來進入主流內(nèi)核的其他實時Linux特性包括:

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


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

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

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

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

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

掃描上方二維碼自領
回復

使用道具 舉報

發(fā)表回復

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

本版積分規(guī)則


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