自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為何WebAssembly將顛覆操作系統(tǒng)?

譯文
系統(tǒng)
Wasm為軟件開發(fā)人員提供了一個難得的機會來重新思考操作系統(tǒng)的整體運作方式。

譯者 | 布加迪

審校 | 重樓

公平地說,自世紀70年代以來,我們的系統(tǒng)運行所依賴的操作系統(tǒng)的核心范式沒有真正改變,盡管在此期間我們學到了很多知識。

我們看到了創(chuàng)新,尤其是在用戶體驗和并發(fā)性方面。不過據(jù)F5(隸屬NGNIX的高級產品管理總監(jiān)Liam Crilly聲稱,感覺我們仍然只是在針對局部最大值進行優(yōu)化。

他表示:“我們有線程,也有進程,但它們都植根于同一抽象。

Crilly認為WebAssemblyWasm為軟件開發(fā)人員提供了一個難得的機會來重新思考操作系統(tǒng)的整體運作方式,我們利用這個機會才是明智之舉。

他說:“有了WebAssembly,我們又重新開始了。

Wasm和創(chuàng)新的擴散

我們之前詳細介紹WebAssembly,但如果您不熟悉它,多介紹一點背景知識可能會對您有所幫助。WebAssembly是一二進制指令格式,面向非常小的、基于堆棧的虛擬機實際上是一個非常簡陋的計算機

由于Wasm基于堆棧,所以運行在上面的代碼很簡單,可以高度優(yōu)化,因而使它速度極快。針對它的字節(jié)碼可移植,Wasm二進制文件小。它們也安全,除非主機運行時環(huán)境允許,否則無法執(zhí)行任何操作。可以使用各種高級語言包括C/ C++、C#、Dart、Go、Kotlin、Rust和Swift編寫注定在Wasm中運行的代碼。

Wasm標準最初源自Mozilla,由字節(jié)碼聯(lián)盟監(jiān)管,該聯(lián)盟是一個類似Eclipse或云原生計算基金會(CNCF的基金會。Wasm由W3C實現(xiàn)標準化,因此是繼HTML、CSS和JavaScript之后的第四大互聯(lián)網語言。因此,看到所有主流瀏覽器都支持該技術也就不足為奇了。

此外,Wasm這種瀏覽器技術擁有頗具吸引力的優(yōu)點:高效、快速和安全,因而已經在各種其他環(huán)境中得到了應用,這包括Cloudflare Workers、Envoy擴展Fastly的Compute@Edge以及最近的NGINX Unit。作家、技術專家Wasm愛好者Kevin Hoffman甚至認為,云才是Wasm真正大放異彩環(huán)境。

然而不可避免的是,隨著這項技術得到進一步的采用,應該將Wasm虛擬機的功能擴展到什么程度上是個未知數(shù)。在社區(qū)內,一場正在進行的討論探討了這項技術的未來應該是什么樣子,以及它應該在多大程度上類似計算機系統(tǒng)的作方式。

背后總是有一系列的權衡和取舍需要考慮。當思考創(chuàng)新在科技行業(yè)的擴散時,看起來熟悉的東西通常會被更快地得到采用。

如果您看一下Java,它迅速發(fā)展起來的原因之一是它看起來很像C++,習慣于C語言家族的人可以很快上手。正如首席設計師James Gosling所說,Java是“沒有槍、刀或棍棒的C++。

這是為之;Gosling在去年的reClojure主題演講中說:“我希望C程序員看到Java程序后能夠理解其中的原理,大多數(shù)情況下他們確實理解

另一方面,如果一項技術很快被廣泛采用,完善起來就會困難得多,正如Gosling承認的那樣:“成功變成了一個問題,因為現(xiàn)在外面有數(shù)十億行Java代碼。在Java發(fā)布后的幾年里,很明顯我們無法改變會破壞任何人代碼的任何承載體。因此,這確實限制了完善方面可以做得多瘋狂。

運行時環(huán)境就是操作系統(tǒng)

不過眼下,盡管Wasm勢頭漸猛,但它并沒有這些問題。

Crilly談到F5時說:“當我們考慮將Wasm用于通用計算時,無論是在瀏覽器中還是在服務器中,它都沒有種種累贅和負擔。舉例說,并不自帶POSIX,而且并不默認知道關于文件的任何信息。

“這實際上是一種非常令人擔憂的抽象,但您越想它,就越意識到這就是在上世紀70年代的辦公空間很有用的一種抽象,當時Unix和POSIX在變得成熟??偟膩碚f,我們在存儲和抽象方面比以前要復雜得多,所以默認使用文件作為存儲抽象有點愚蠢?!?/span>

重新考慮操作系統(tǒng)也有巨大的潛在優(yōu)勢。以數(shù)據(jù)為例,“我們可以摒棄傳統(tǒng)的數(shù)據(jù)構造,將每個原始數(shù)據(jù)塊視為任何操作的真實對象,”Crilly說。

他補充道,這種范式意味著“在插件模塊的幫助下,以我們想要的任何格式,將結果推回到我們需要的任何數(shù)據(jù)存儲系統(tǒng)中。所有關于操作系統(tǒng)本質的先入為主的概念都可能消失,剩下運行時環(huán)境——這是計算的最基本要素。換句話說,運行時環(huán)境就是新的操作系統(tǒng)?!?/span>

Wasm組件模型

Wasm的組件模型方案是這個愿景變?yōu)楝F(xiàn)實的一種方式。它建立在WebAssembly模塊之上,WebAssembly模塊在2019年成為官方標準。組件模型是一種新的Wasm二進制格式,它本質上是在WebAssembly核心模塊周圍添加了元數(shù)據(jù)。因此,在一個組件中可能有多個模塊。

組件模型提供了兩點:語言可兼容性和可組合性。組件封裝標準的WebAssembly模塊,您可以使用導入(組件運行所需的內容)和導出(允許從組件調用的內容)與它進行聯(lián)系。

組件模型基于無共享鏈接,這意味著它只導入和導出函數(shù)和不可變的值,而不是內存內容、表或可變全局值。這有點類似連接不同進程的Unix管道,或連接不同微服務的HTTP API。

采用這種方法可以消除全部潛在的供應鏈式攻擊。此外,使用函數(shù)導入跨無共享邊界直接調用可以減少無共享架構中系統(tǒng)調用、上下文切換和額外復制而導致的通信開銷。

據(jù)CosmonicWasm平臺即服務首席技術官Bailey Hayes聲稱,組件模型還消除了Wasm模塊的幾個摩擦點。首先,那些導入和導出使用更高級的類型,所以現(xiàn)在可以傳入字符串之類的東西。

雖然在使用Wasm綁定之前可以做到這一點,但這很麻煩,因此加以簡化顯然是成功的做法

同樣,缺乏與WebAssembly模塊的語言互操作性是造成摩擦的另一個原因。從技術上講,Wasm字節(jié)碼實際上是一堆i32s整數(shù)和浮點類型。它能夠調用主機提供給它的函數(shù)句柄,這使它能夠做更多的事情。

組件模型并不改變這方面,但它改變的是API,我們稱之為接口類型;現(xiàn)在有了一個接口類型定義,它不僅僅是一堆數(shù)字,它創(chuàng)建了所謂的規(guī)范ABI。這樣一來,就可以把兩個組件連接在一起,讓它們相互聯(lián)系。

這也我們得以使用任何語言生成語言綁定。字符串的Python表示和字符串的Rust表示不一樣,所以我們需要一種提升和降低的方式,這是由組件模型定義的。

Hayes認為,Wasm組件模型最終將成為我們新的計算單元。她說:“這下一波計算浪潮將不再專注于Linux容器的虛擬化,而是取決于我們的業(yè)務邏輯的WebAssembly表示?!?/span>

表示,其中的原因是組件模型為我們提供了一新的抽象,這是我們以前從未有過的。最終讓我們可以打破整個技術生態(tài)系統(tǒng)孤島的技術之一?!?/span>

她進一步解釋:“您在行業(yè)中經??吹降氖牵?/span>這是另一個Rust或C++庫的Go原生版本——在每個語言生態(tài)系統(tǒng)中都能看到這種情況。我們實際上只是在重復同樣的工作,在我看來,這純粹浪費人力和時間。

相比之下,組件模型讓技術人員可以“為工作構建最好的組件,擁有最好的API和最快的組件,然后您可以將其用作庫,無論您使用哪種語言。我認為這將是一股真正的創(chuàng)新力量。

她對Wasm抱有高漲的熱情,這確實是一項令人興奮的技術,不過Crilly發(fā)出了警告。

他說:“這種方法存在一些挑戰(zhàn)一個挑戰(zhàn)是,我們最終是否會扼殺創(chuàng)新,因為如果一個KeyVal必須遵循相同的API,那么如何將自己與另一個KeyVal區(qū)分開來我的另一個擔憂是,人們會急于通過組件模型將所有POSIX抽象引入WebAssembly。

我不希望我們夢游般地進入上世紀70年代的操作系統(tǒng)范式。我們可以做得更好,我真的希望開發(fā)人員在開始選擇WebAssembly種技術時認真想清楚這一點。

原文標題:Why WebAssembly Will Disrupt the Operating System,作者:Charles Humble

責任編輯:華軒 來源: 51CTO
相關推薦

2016-11-03 19:35:52

2019-06-03 15:30:27

操作系統(tǒng)Android 華為

2015-09-17 10:02:11

自有linux操作系統(tǒng)

2013-08-26 09:31:49

2013-12-03 09:44:27

微軟移動操作系統(tǒng)碎片化

2009-02-17 16:18:54

LG微軟移動操作系統(tǒng)

2009-05-19 15:56:36

LinuxPhoenixHyperSpace

2014-08-21 09:48:33

操作系統(tǒng)

2009-12-09 17:25:19

Linux操作系統(tǒng)

2009-09-24 14:36:25

Moblin操作系統(tǒng)

2010-06-12 10:05:42

Windows Ser操作系統(tǒng)

2009-10-23 08:32:52

Linux操作系統(tǒng)Ubuntu

2017-11-21 11:05:29

谷歌操作系統(tǒng)Swift

2010-04-15 14:40:26

Unix操作系統(tǒng)

2012-11-29 10:20:11

Windows Blu

2009-05-20 13:26:33

蘋果Iphone移動OS

2011-03-23 12:25:52

Java MEOracle

2017-01-05 18:52:43

2010-04-29 14:08:38

Unix操作系統(tǒng)

2011-04-13 17:31:33

點贊
收藏

51CTO技術棧公眾號