溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

為什么使用Rust編寫系統(tǒng)代碼

發(fā)布時(shí)間:2021-10-14 16:03:54 來源:億速云 閱讀:164 作者:iii 欄目:移動(dòng)開發(fā)

本篇內(nèi)容介紹了“為什么使用Rust編寫系統(tǒng)代碼”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

作為一個(gè)相當(dāng)完善的移動(dòng)操作系統(tǒng),Android  系統(tǒng)涉及到很多組件。如果寬泛的來講可以分成兩大部分,應(yīng)用生態(tài)和操作系統(tǒng)本身。而對(duì)于開發(fā)者來說,所選擇的編程語言會(huì)根據(jù)正在開發(fā)的 Android  部分有所不同。

為什么使用Rust編寫系統(tǒng)代碼

對(duì)于應(yīng)用開發(fā)者來說,Java 和 Kotlin 是比較流行的選擇;而對(duì)于從事操作系統(tǒng)以及內(nèi)部底層的開發(fā)者來說,C 和 C++  是比較熱門的選擇。而今天谷歌為操作系統(tǒng)開發(fā)者增加了第 3 個(gè)選擇-- Rust,因?yàn)?Android Open Source Project 現(xiàn)在支持 Rust  編程語言來開發(fā)操作系統(tǒng)了。

C 和 C++ 的限制

Android 系統(tǒng)的底層需要 C 和 C++ 等系統(tǒng)編程語言。這些語言為開發(fā)者提供了控制和可預(yù)測(cè)性,這在訪問低級(jí)系統(tǒng)資源和硬件時(shí)非常重要。不幸的是,C  和 C++  并不能提供內(nèi)存安全保證,使得它們?nèi)菀壮霈F(xiàn)錯(cuò)誤和安全漏洞。開發(fā)者有責(zé)任在這些語言上管理內(nèi)存壽命,但在復(fù)雜和多線程的代碼庫中,這說起來容易做起來難。

為什么使用Rust編寫系統(tǒng)代碼

C 和 C++ 共同構(gòu)成了 Android 平臺(tái)上數(shù)以千萬計(jì)的代碼行。這些內(nèi)存安全漏洞成為最難解決的代碼錯(cuò)誤來源,占 Android 高嚴(yán)重度安全漏洞的  70% 左右。單純的修復(fù)這些 bug 變得不足以處理問題,更好的方法是在一開始就預(yù)防這些 bug。

由于缺乏內(nèi)存安全保障,迫使開發(fā)者在嚴(yán)格約束的無權(quán)限沙盒內(nèi)運(yùn)行Android進(jìn)程。但沙盒在資源上的成本很高,會(huì)消耗額外的開銷,并引入延遲。沙盒也不能完全消除代碼的漏洞,而且由于  bug 密度高,沙盒的功效會(huì)降低,進(jìn)一步讓攻擊者連鎖多個(gè)漏洞。

為什么使用Rust編寫系統(tǒng)代碼

另一個(gè)限制,雖然不是 C 和 C++  獨(dú)有的,但適用于所有的內(nèi)存安全問題,那就是錯(cuò)誤狀態(tài)必須在工具化的代碼中實(shí)際觸發(fā),才能被檢測(cè)到。所以即使你的代碼有很好的測(cè)試,實(shí)際的 bug  也可能一直沒有被發(fā)現(xiàn)。而當(dāng)發(fā)現(xiàn)bug時(shí),讓它們得到修復(fù)又是另一項(xiàng)任務(wù),涉及到一個(gè)漫長(zhǎng)而昂貴的過程,不一定能得到正確的修復(fù)。因此,bug  檢測(cè)變得不可靠,鑒于這些局限性,bug 預(yù)防是更好的方法。

為什么使用Rust編寫系統(tǒng)代碼

Rust 及其優(yōu)勢(shì)

Rust  通過使用編譯時(shí)檢查和運(yùn)行時(shí)檢查相結(jié)合的方式提供內(nèi)存安全保證,以強(qiáng)制執(zhí)行對(duì)象的壽命/所有權(quán),并確保內(nèi)存訪問是有效的。在實(shí)現(xiàn)這種安全性的同時(shí),還能提供與C和C++相當(dāng)?shù)男阅?。Rust  還減少了對(duì)沙盒的需求,讓開發(fā)人員有更多的開銷空間來引入更安全、更輕量的新功能。

為什么使用Rust編寫系統(tǒng)代碼

雖然 Rust 確實(shí)有它的好處,但一夜之間將整個(gè)Android操作系統(tǒng)換成Rust是不可行的。而且可能根本不需要這樣做,因?yàn)榇蠖鄶?shù) Android  的內(nèi)存錯(cuò)誤都發(fā)生在新的或最近修改的代碼中,大約有50%的代碼是不到一年的。谷歌認(rèn)為,其內(nèi)存安全語言的工作最好集中在新的開發(fā)上,而不是重寫成熟的C和C++代碼。

切換到 Rust 對(duì)于Android 意味著什么

Rust還專注于防止bug,而不是嚴(yán)重依賴檢測(cè)bug,從而提高代碼的正確性。它有幾個(gè)關(guān)鍵特性,比如內(nèi)存安全、數(shù)據(jù)并發(fā)、更有表現(xiàn)力的類型系統(tǒng)、默認(rèn)的不可變引用和變量、更安全的整數(shù)處理、標(biāo)準(zhǔn)庫中更好的錯(cuò)誤處理等等。

Google表示,在過去的18個(gè)月里,它一直在為Android開源項(xiàng)目添加Rust支持。但在Android平臺(tái)上添加一門新語言是一項(xiàng)巨大的工程。一些工具鏈和依賴關(guān)系需要維護(hù),測(cè)試基礎(chǔ)設(shè)施和工具必須更新,開發(fā)人員需要接受培訓(xùn)。

“為什么使用Rust編寫系統(tǒng)代碼”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI