跳转到内容

Native Client:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
无编辑摘要
InternetArchiveBot留言 | 贡献
Reformat 1 URL (Wayback Medic 2.5)) #IABot (v2.0.9.5) (GreenC bot
 
(未显示12个用户的35个中间版本)
第1行: 第1行:
{{noteTA|G1=IT}}
{{Infobox software
{{Infobox software
| name = Google Native Client
| name = Google Native Client
| logo =
| logo = Google Chrome icon (March 2011).svg
| screenshot =<!-- Deleted image removed: [[Image:Native-client-python-repl.png|200px]] -->
| screenshot =<!-- Deleted image removed: [[Image:Native-client-python-repl.png|200px]] -->
| caption = A [[Python]] [[read-eval-print loop|REPL]] running under Native Client inside a web browser.
| caption = A [[Python]] [[read-eval-print loop|REPL]] running under Native Client inside a web browser.
| latest release version = SDK: [http://developer.chrome.com/native-client/sdk/release-notes Pepper 45] <small>({{start date and age|df=yes|2015|07|10}})</small>, Client: {{Latest stable software release/Google Chrome}}
| latest release version =
| latest release date =
| latest release date =
| latest preview version = [http://code.google.com/chrome/nativeclient/docs/releasenotes.html 0.5]
| latest preview version = [http://code.google.com/chrome/nativeclient/docs/releasenotes.html 0.5]
| latest preview date = {{start date and age|2011|07|28}}
| latest preview date = {{start date and age|2011|07|28}}
| developer = [[Google]],以及其他開發者
| developer = [[Google]],以及其他開發者
| programming language = [[C++]]
| programming language = [[C語言]]、[[C++]]
| operating system = [[Cross-platform]]: [[Microsoft Windows]], [[Linux]], [[Mac OS]], [[Google Chrome OS|Chrome OS]]
| operating system = [[Cross-platform]]: [[Microsoft Windows]], [[Linux]], [[Mac OS]], [[Google Chrome OS|Chrome OS]]
| status = 產品 (NaCl, PNaCl<ref>{{Cite web |url=http://src.chromium.org/viewvc/chrome?view=revision&revision=213999 |title=Chrome Revision 213999 |access-date=2015-01-07 |archive-date=2021-03-08 |archive-url=https://web.archive.org/web/20210308120902/https://src.chromium.org/viewvc/chrome?view=revision&revision=213999 }}</ref>)
| status = Research
| genre = 利用[[沙盒 (計算機安全)|沙盒]]技術,讓[[機器碼]]在[[瀏覽器]]上運行
| genre = 利用[[沙盒 (計算機安全)|沙盒]]技術,讓[[機器碼]]在[[瀏覽器]]上運行
| license = [[BSD licenses|New BSD license]]
| license = [[BSD licenses|New BSD license]]
第17行: 第18行:
}}
}}
{{Portal|Free software}}
{{Portal|Free software}}
'''Google Native Client'''(縮寫為'''NaCl'''),由[[谷歌]]所發起的[[開放原始碼]]計劃,採用[[BSD许可证]]。類似於[[微軟]]的 [[ActiveX]]技術,用[[沙盒 (計算機安全)|沙盒]]技術,可以讓[[瀏覽器]]直接運行[[]],希望讓 Web應用程式得到更佳能。
'''Google Native Client'''(縮寫為'''{{lang|en|NaCl}}'''),是一个由[[谷歌]]所發起的[[開放原始碼]]計劃,採用[[BSD许可证]]。它用[[沙盒 (計算機安全)|沙盒]]技術,讓[[Intel x86]]、[[ARM]]或[[MIPS]]子集的[[機]]直接在沙盒上運行。它能夠從[[瀏覽器]]直接運行程式機器碼獨立於使用者的作業系統之外,使[[Web應用程式]]可以用接近於機器碼運作速度來執行,同時兼顧安全性。其功類似於[[微軟]]的 [[ActiveX]],但是ActiveX只支援視窗系統

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

2017年5月31日,Google宣布放棄PNaCl轉向[[WebAssembly]]<ref>{{Cite news|url=https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html|title=Goodbye PNaCl, Hello WebAssembly!|work=Chromium Blog|access-date=2017-05-31|language=en-US|archive-date=2017-05-30|archive-url=https://web.archive.org/web/20170530233036/https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html|dead-url=no}}</ref>。

==技術內容==
==技術內容==
NaCl使用 [[Newlib]] 作為它的 [[C標準函式庫]],但它也支援[[GNU C 函式庫]]。
NaCl使用[[Newlib]]作為它的[[C標準函式庫]],但它也支援[[GNU C 函式庫]]。


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

===沙盒技術===
NaCl運用沙盒技术以防止外來(第三方)機器碼影響系統安全;特別是在[[x86]]平台上運用[[記憶體區段]],限制[[外掛程式]]所能讀寫的記憶體范围。<ref name="Sandboxx86">[http://research.google.com/pubs/archive/34913.pdf Native Client: A Sandbox for Portable, Untrusted x86 Native Code]</ref>

由於ARM與x86-64[[長模式]]不支援記憶體區段,因此在這些平台上NaCl的記憶體寫入地址是由沙盒過濾。<ref>{{Cite web |url=http://nativeclient.googlecode.com/svn/data/site/NaCl_SFI.pdf |title=Adapting Software Fault Isolation to Contemporary CPU Architectures |accessdate=2011-09-12 |archive-date=2011-07-23 |archive-url=https://web.archive.org/web/20110723064729/http://nativeclient.googlecode.com/svn/data/site/NaCl_SFI.pdf |dead-url=no }}</ref>

===機器碼驗證器===
NaCl運用機器碼驗證器(Code Validator)来保證只有安全機器碼能在系統執行。由於x86/x86-64是[[複雜指令集]],[[指令]]長度不一,透過[[控制流程]]可能隱藏非安全機器碼,從而使驗證十分耗時。NaCl運用固定長度的16或32[[位元組]]的指令束(Instruction Bundle),使機器碼驗證器設計簡單(只有約600行[[C語言]])和高效率;<ref name="Sandboxx86"/> <ref>{{Cite web |url=http://src.chromium.org/viewvc/native_client/trunk/src/native_client/src/trusted/validator/x86/ |title=Index of /trunk/src/native_client/src/trusted/validator/x86 |accessdate=2011-09-12 |archive-date=2012-07-20 |archive-url=https://archive.today/20120720193306/http://src.chromium.org/viewvc/native_client/trunk/src/native_client/src/trusted/validator/x86/ |dead-url=no }}</ref> 而運用指令束只是失去5%的執行效率。

== 應用軟件的移植 ==
NaCl支援[[單指令流多數據流]]指令(如[[SSE]]、[[3DNow!]])及[[多執行緒]]介面,應用軟件一般只需簡單的修改便可以移植到NaCl平台;在2009年一個發布會上,NaCl開發人員示範一個為NaCl平台的移植而修改了20行原始碼的[[H264]]解碼器軟件。<ref>{{Cite web |url=http://assets.en.oreilly.com/1/event/29/Native%20CPU%20Performance%20in%20the%20Browser%20with%20Google%20Native%20Client%20Presentation.pdf |title=Native CPU Performance in the Browser with Google Native Client |accessdate=2011-09-16 |archive-date=2019-02-17 |archive-url=https://web.archive.org/web/20190217094628/http://assets.en.oreilly.com/1/event/29/Native%20CPU%20Performance%20in%20the%20Browser%20with%20Google%20Native%20Client%20Presentation.pdf |dead-url=no }}</ref>

== 參考資料 ==
{{reflist}}


==發展狀況==
==外部連結==
==外部連結==
*[http://code.google.com/p/nativeclient/ NaCl計劃官網]
* {{en}} [http://code.google.com/p/nativeclient/ NaCl計劃官網]{{Wayback|url=http://code.google.com/p/nativeclient/ |date=20100722230056 }}
* {{en}} {{Youtube|id=2xV_0pTpNj0|title=Google I/O 2009 Native Code for Compute Intensive Web Apps}} - [[Google I/O]] 2009技術專題討論
{{網頁技術與標準}}
* {{en}} {{Youtube|id=KOsJIhmeXoc|title=Google I/O 2012 Life of a Native Client Instruction}} - Google I/O 2012技術專題討論
{{Software-stub}}

[[category:google]]
{{Google公司}}


[[en:Google Native Client]]
[[Category:Google軟體]]
[[Category:自由软件]]
[[fr:Google Native Client]]
[[Category:安全软件]]
[[hu:Google Native Client]]
[[it:Google Native Client]]
[[ja:Google Native Client]]
[[ko:구글 네이티브 클라이언트]]
[[ru:Native Client]]

2023年9月16日 (六) 10:34的最新版本

Google Native Client
開發者Google,以及其他開發者
当前版本
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言C語言C++
操作系统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只支援視窗系統。

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

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

技術內容

[编辑]

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

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

沙盒技術

[编辑]

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

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

機器碼驗證器

[编辑]

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

應用軟件的移植

[编辑]

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

參考資料

[编辑]
  1. ^ https://developer.chrome.com/native-client/sdk/release-notes#chrome-pepper-49.
  2. ^ Stable Channel Update for Desktop. 2024年9月2日 [2024年9月2日] (英語). 
  3. ^ Chrome for Android Update. 2024年9月4日 [2024年9月5日] (英語). 
  4. ^ Chrome Stable for iOS Update. 2024年8月27日 [2024年8月27日] (英語). 
  5. ^ Chrome Revision 213999. [2015-01-07]. (原始内容存档于2021-03-08). 
  6. ^ Goodbye PNaCl, Hello WebAssembly!. Chromium Blog. [2017-05-31]. (原始内容存档于2017-05-30) (美国英语). 
  7. ^ 7.0 7.1 Native Client: A Sandbox for Portable, Untrusted x86 Native Code
  8. ^ Adapting Software Fault Isolation to Contemporary CPU Architectures (PDF). [2011-09-12]. (原始内容存档 (PDF)于2011-07-23). 
  9. ^ Index of /trunk/src/native_client/src/trusted/validator/x86. [2011-09-12]. (原始内容存档于2012-07-20). 
  10. ^ Native CPU Performance in the Browser with Google Native Client (PDF). [2011-09-16]. (原始内容存档 (PDF)于2019-02-17). 

外部連結

[编辑]