陳思衡-2023Async_WASM.pdf

編號:132075 PDF 24頁 773.46KB 下載積分:VIP專享
下載報告請您先登錄!

陳思衡-2023Async_WASM.pdf

1、第三屆中國Rust開發者大會WebAssembly 簡介簡介WebAssembly(簡稱 Wasm)是一種新的編譯目標,幫助在 web 中運行高性能應用。它是一種低級語言,設計為編譯器目標,以在 web 瀏覽器中高效運行。WebAssembly 介紹WebAssembly 代碼可以以接近原生的速度運行,且具有很小的二進制大小和快速加載速度。#高性能WebAssembly 最初由 Mozilla、Google、Microsoft 等主要瀏覽器供應商共同設計。它現已在所有主流瀏覽器中實現,包括 Chrome、Firefox、Safari 和 Edge。#標準穩定#多語言支持WebAssembly

2、設計為安全地嵌入到網頁中。它提供一種沙箱環境,禁止直接訪問瀏覽器功能或用戶數據。而是需要通過 host function 來訪問宿主環境。#安全性現在多種語言都有編譯器支持 WebAssembly,如 C/C+、Rust、Go、Zig 等。WebAssembly 簡介Photo/image/chartWasm 的 memory 是 host 內存中的一部分。對于 Wasm 而言,這塊內存是從 0 開始的,而不是 host 所看到的地址。WebAssembly 機制機制memoryWasm 編寫的 function 可以通過“export”導出給 host 調用。Host 可以把自己的 func

3、tion 通過“import“提供給 wasm 調用。functionWebAssembly 簡介Photo/image/chartWasm 實例實例 WebAssembly 簡介WASI 簡介簡介WebAssembly System Interface(簡稱 WASI),它定義了一組 WASM 模塊可以調用的系統調用接口。WASI 的目的是讓 WASM 模塊可以訪問底層系統的功能,比如文件系統、網絡等。這使得 WASM 可以作為一個更廣泛的運行時,不僅僅局限于瀏覽器環境。WASI 當前定義了一組 POSIX 兼容的系統調用,讓 WASM 模塊可以訪問文件系統。未來 WASI 還會加入更多系統

4、接口,為 WASM 提供更廣泛的系統訪問能力。WebAssembly 介紹Photo/image/chartWASI 的本質就是一套 host 提供的 function。與開發者自行提供的 host function 相比,WASI 在 Rust 被內置在 std 中。WASI 實例實例 WASI 簡介WASM 的應用場景的應用場景WASM 使用場景和問題由于 WASI,WASM 不僅可以在瀏覽器中運行,其作為一種通用二進制格式,也適用于瀏覽器外的許多場景:1.物聯網設備:WASM 體積小、加載快,很適合運行在物聯網設備上。使用 WASM 可以讓這些設備運行更復雜的邏輯,實現設備間的互操作性。

5、2.云計算:WASM 模塊可以部署在云端運行,為用戶提供服務。因為 WASM 是sandbox的,所以可以保證代碼的安全性。WASM 的模塊化也讓云端應用更易于構建和部署。3.用戶定義函數(UDF):WASM UDF 安全性更高。WASM 運行在沙箱中,訪問受限,可以防止惡意 UDF 對數據和系統產生破壞。與解釋執行的 UDF 相比,WASM 作為二進制格式可以獲得更高的運行性能。WASM 中中 IO 阻塞問題阻塞問題WASM 使用場景和問題在 WASI 和 一些用戶自定義的 Host function 中,難免存在一些如網絡服務的阻塞行為。當在 tokio 之類的 async runtime

6、 中執行一些特別的 WASM 時就會遇到 WASM 阻塞 tokio 最終導致服務不可用的情況。阻塞示例阻塞示例 WASM 使用場景和問題利用語言本身利用語言本身 Async 機制機制因為 Rust 的 async 機制是無棧協程,會將 async 部分在編譯時隱式轉換成一個 Future。所以我們可以利用這一點來實現一個 Async 的 Wasm。Async Wasm 解決方案Photo/image/chart利用本身利用本身 Async 機制機制 自行實現自行實現 Async RuntimeAsync 的 Wasm在 wasm 中把 future 存入固定內存處。導出 poll 函數給 h

7、ost 調用。把 host function 包裝成自定義 Future。實現簡單利用本身利用本身 Async 機制機制 優點優點方案不通用(wasm 局限于某一種語言)無法與現有生態配合缺點缺點Async 的 Wasm基于基于 fiber/ucontext Async Wasm 解決方案wasmtime-fiber 是一個通過內聯匯編,保存當前寄存器和棧數據來實現有棧協程的 rust 庫。wasmtime-fiberUcontext 和 fiber 功能相同,但是 linux 的系統庫。ucontext執行流程執行流程Async Wasm 解決方案與 WASM 的語言無關??梢詮陀?WASM

8、 編寫語言本身的生態。不會對 WASM 執行產生性能損失基于基于 fiber/ucontext 優點優點實現困難,涉及到匯編。容易出錯。需要極其注意內存安全。缺點缺點Async Wasm 解決方案效果示例效果示例 Async Wasm 解決方案基于基于 Asyncify(Binaryen)Async Wasm 解決方案Binaryen 是一個編譯器基礎架構庫,提供了一套用于處理 WebAssembly 的工具。其中一個功能是 asyncify,它允許將同步的 WebAssembly 代碼轉換為異步代碼。就像 rust 對 async function 做的事情一樣。Photo/image/chartAsyncify 原理示意原理示意Async Wasm 解決方案執行流程執行流程Async Wasm 解決方案與 WASM 的語言無關。與 CPU 匯編指令無關??梢钥鐧C器調度??梢钥鐧C器調度。Asyncify(Binaryen)優點優點運行效率有所下降。缺點缺點Async Wasm 解決方案Asyncify 跨機器調度跨機器調度Async Wasm 解決方案Asyncify 跨機器調度跨機器調度Async Wasm 解決方案Thank you!

友情提示

1、下載報告失敗解決辦法
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站報告下載后的文檔和圖紙-無水印,預覽文檔經過壓縮,下載后原文更清晰。

本文(陳思衡-2023Async_WASM.pdf)為本站 (2200) 主動上傳,三個皮匠報告文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知三個皮匠報告文庫(點擊聯系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。
客服
商務合作
小程序
服務號
折疊
午夜网日韩中文字幕,日韩Av中文字幕久久,亚洲中文字幕在线一区二区,最新中文字幕在线视频网站