Google Native Client
维基百科,自由的百科全书
| 開發者 | Google,以及其他開發者 |
|---|---|
| 預覽版本 | 0.5/ 2011年7月28日 |
| 程式語言 | C++ |
| 作業系統 | Cross-platform: Microsoft Windows, Linux, Mac OS, Chrome OS |
| 開發狀態 | Research |
| 類型 | 利用沙盒技術,讓機器碼在瀏覽器上運行 |
| 許可協議 | New BSD license |
| 網站 | code.google.com/p/nativeclient |
Google Native Client(縮寫為NaCl),由谷歌所發起的開放原始碼計劃,採用BSD许可证。類似於微軟的 ActiveX技術,它運用沙盒技術,可以讓瀏覽器直接運行機器碼,讓 Web應用程式得到更佳的效能,同時又兼顧安全性。
目录 |
技術內容 [编辑]
NaCl使用 Newlib 作為它的 C標準函式庫,但是它也支援GNU C 函式庫。
它最初只支援x86平台,目前也支援ARM平台,與x86-64。
沙盒技術 [编辑]
NaCl運用沙盒以防止外來(第三方)機器碼影響系統安全;特別是在x86平台上運用記憶體區段,使外掛程式能讀寫的記憶體有所限制。[1]
由於ARM 與 x86-64 長模式不支援記憶體區段,因此在這些平台上NaCl記憶體的寫入地址是被沙盒過濾。[2]
機器碼驗證器 [编辑]
NaCl運用機器碼驗證器 (Code Validator) 來保證只有安全機器碼能在系統執行。由於x86/x86-64是複雜指令集,指令長度不一,透過控制流程可能隱藏非安全機器碼,從而使驗證十分耗時。NaCl運用固定長度的16或32位元組的指令束(Instruction Bundle),使機器碼驗證器設計簡單(只是約600行C語言)和高效率;[1] [3] 而運用指令束只是失去5%的執行效率。
應用軟件的移植 [编辑]
NaCl支援單指令流多數據流指令(如SSE、3DNow!)及多執行緒介面,應用軟件一般只需簡單的修改便可以移植到NaCl平台;在2009年一個發布會上,NaCl開發人員示範一個為NaCl平台的移植而修改了20行原始碼的H264解碼器軟件。[4]
參考資料 [编辑]
- ^ 1.0 1.1 Native Client: A Sandbox for Portable, Untrusted x86 Native Code
- ^ Adapting Software Fault Isolation to Contemporary CPU Architectures
- ^ Index of /trunk/src/native_client/src/trusted/validator/x86
- ^ Native CPU Performance in the Browser with Google Native Client
外部連結 [编辑]
- (英文) NaCl計劃官網
- (英文)
YouTube上的「Google I/O 2009 Native Code for Compute Intensive Web Apps」视频 - Google I/O 2009技術專題討論 - (英文)
YouTube上的「Google I/O 2012 Life of a Native Client Instruction」视频 - Google I/O 2012技術專題討論