Native Client

維基百科,自由的百科全書
(重新導向自C PPAPI
跳至導覽 跳至搜尋
Google Native Client
File:Google Chrome icon (March 2011).svg
開發者Google,以及其他開發者
目前版本SDK: Pepper 45 (2015年7月10日,​10年前​(2015-07-10), Client:
預覽版本0.5(2011年7月28日,​14年前​(2011-07-28
原始碼庫
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
程式語言C語言C++
引擎
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    作業系統Cross-platform: Microsoft Windows, Linux, Mac OS, Chrome OS
    類型利用沙盒技術,讓機械碼瀏覽器上運行
    許可協定New BSD license
    網站code.google.com/p/nativeclient

    Google Native Client(縮寫為NaCl),是一個由谷歌所發起的開放原始碼計劃,採用BSD許可證。它採用沙盒技術,讓Intel x86ARMMIPS子集的機械碼直接在沙盒上運行。它能夠從瀏覽器直接運行程式機械碼,獨立於用戶的作業系統之外,使Web應用程式可以用接近於機械碼運作的速度來執行,同時兼顧安全性。其功能類似於微軟ActiveX,但是ActiveX只支援Windows系統。

    Google將這項功能合併在Chrome OS之下開發。它也可以被用來開發安全的瀏覽器外掛程式。

    2017年5月31日,Google宣佈放棄PNaCl轉向WebAssembly[2]

    技術內容[編輯]

    NaCl使用Newlib作為它的C標準函式庫,但它也支援GNU C 函式庫

    它最初只支援x86平台,但目前也支援ARM平台與x86-64

    沙盒技術[編輯]

    NaCl運用沙盒技術以防止外來(第三方)機械碼影響系統安全;特別是在x86平台上運用記憶體區段,限制外掛程式所能讀寫的記憶體範圍。[3]

    由於ARM與x86-64長模式不支援記憶體區段,因此在這些平台上NaCl的記憶體寫入地址是由沙盒過濾。[4]

    機械碼驗證器[編輯]

    NaCl運用機械碼驗證器(Code Validator)來保證只有安全機械碼能在系統執行。由於x86/x86-64是複雜指令集指令長度不一,透過控制流程可能隱藏非安全機械碼,從而使驗證十分耗時。NaCl運用固定長度的16或32位元組的指令束(Instruction Bundle),使機械碼驗證器設計簡單(只有約600行C語言)和高效率;[3] [5] 而運用指令束只是失去5%的執行效率。

    應用軟件的移植[編輯]

    NaCl支援單指令流多數據流指令(如SSE3DNow!)及多線程介面,應用軟件一般只需簡單的修改便可以移植到NaCl平台;在2009年一個發佈會上,NaCl開發人員示範一個為NaCl平台的移植而修改了20行原始碼的H264解碼器軟件。[6]

    參考資料[編輯]

    1. ^ Chrome Revision 213999. [2015-01-07]. (原始內容存檔於2021-03-08). 
    2. ^ Goodbye PNaCl, Hello WebAssembly!. Chromium Blog. [2017-05-31]. (原始內容存檔於2017-05-30) (en-US). 
    3. ^ 3.0 3.1 Native Client: A Sandbox for Portable, Untrusted x86 Native Code
    4. ^ Adapting Software Fault Isolation to Contemporary CPU Architectures (PDF). [2011-09-12]. (原始內容存檔 (PDF)於2011-07-23). 
    5. ^ Index of /trunk/src/native_client/src/trusted/validator/x86. [2011-09-12]. (原始內容存檔於2012-07-20). 
    6. ^ Native CPU Performance in the Browser with Google Native Client (PDF). [2011-09-16]. (原始內容存檔 (PDF)於2019-02-17). 

    外部連結[編輯]