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

PCB聯(lián)盟網

搜索
查看: 22|回復: 0
收起左側

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

[復制鏈接]

454

主題

454

帖子

3643

積分

四級會員

Rank: 4

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

掃描上方二維碼自領
回復

使用道具 舉報

發(fā)表回復

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

本版積分規(guī)則


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