热门问题
时间线
聊天
视角
Native Client
来自维基百科,自由的百科全书
Remove ads
Google Native Client(缩写为NaCl),是一个由谷歌所发起的开放原始码计划,采用BSD许可证。它采用沙盒技术,让Intel x86、ARM或MIPS子集的机器码直接在沙盒上运行。它能够从浏览器直接运行程式机器码,独立于使用者的作业系统之外,使Web应用程式可以用接近于机器码运作的速度来执行,同时兼顾安全性。其功能类似于微软的 ActiveX,但是ActiveX只支援视窗系统。
Google将这项功能合并在Chrome OS之下开发。它也可以被用来开发安全的浏览器外挂程式。
2017年5月31日,Google宣布放弃PNaCl转向WebAssembly[5]。
Remove ads
技术内容
NaCl运用沙盒技术以防止外来(第三方)机器码影响系统安全;特别是在x86平台上运用记忆体区段,限制外挂程式所能读写的记忆体范围。[6]
NaCl运用机器码验证器(Code Validator)来保证只有安全机器码能在系统执行。由于x86/x86-64是复杂指令集,指令长度不一,透过控制流程可能隐藏非安全机器码,从而使验证十分耗时。NaCl运用固定长度的16或32位元组的指令束(Instruction Bundle),使机器码验证器设计简单(只有约600行C语言)和高效率;[6] [8] 而运用指令束只是失去5%的执行效率。
应用软件的移植
NaCl支援单指令流多数据流指令(如SSE、3DNow!)及多执行绪介面,应用软件一般只需简单的修改便可以移植到NaCl平台;在2009年一个发布会上,NaCl开发人员示范一个为NaCl平台的移植而修改了20行原始码的H264解码器软件。[9]
参考资料
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads