07 | WASI:你听说过 WebAssembly 操作系统接口吗?

Capability-based Security
- 深入了解
- 翻译
- 解释
- 总结

WebAssembly(Wasm)是一种可移植、安全和高效的技术,最初应用于Web浏览器中。随着Wasm在Web领域之外的应用增多,出现了一项新的标准——WASI(WebAssembly System Interface,Wasm操作系统接口),使Wasm能够直接与操作系统交互。WASI通过增加“抽象层”的方式,解决了Wasm抽象机器与实际操作系统调用之间的可移植性问题,实现了“一次编译,到处运行”。同时,WASI基于Capability-based Security模型,通过细粒度的控制模块实例所能够使用的系统资源,保证了Wasm模块的运行时安全。这种安全模型相比传统的“分级保护域”模型更加灵活和安全。WASI的设计和实现遵守Wasm的“可移植性”及“安全性”原则,为Wasm在操作系统接口中的应用提供了重要支持。
《WebAssembly 入门课》,新⼈⾸单¥29
全部留言(9)
- 最新
- 精选
 静心请问老师,那WASI是将系统调用函数在编译期替换成WASI标准函数的吗?还是在运行期通过调用拦截或动态替换的方式? 静心请问老师,那WASI是将系统调用函数在编译期替换成WASI标准函数的吗?还是在运行期通过调用拦截或动态替换的方式?- 作者回复: 对的,应用在与wasi-libc编译时便会被替换成WASI的系统调用。然后虚拟机在解释执行Wasm字节码时就会使用虚拟机上的实现。 2020-09-1826
 Cryhard那这意味着Wasm的编写也需要像原生APP一样,运行中申请一组由WASI“代理”的系统权限的集合(而用户可以提供长期或者单次授权)。而程序也得支持“部分权限被禁用”的情况,例如在“不能调用本地录音设备”的状态下继续正常运行吗? Cryhard那这意味着Wasm的编写也需要像原生APP一样,运行中申请一组由WASI“代理”的系统权限的集合(而用户可以提供长期或者单次授权)。而程序也得支持“部分权限被禁用”的情况,例如在“不能调用本地录音设备”的状态下继续正常运行吗?- 作者回复: 是的,这个是一种情况。但实际上对 WASI 接口的调用需要进行怎样的权限管理要依据不同的情况来看。比如最简单的用虚拟机执行一个 WASI 应用,一般可能只要在运行虚拟机时指定所需要的“权限”接可。还有一种场景就是在云上使用 WASI。这个时候可以把 WASI 应用比作 Actor,每个 Actor 都需要显式指出自己需要使用的系统权限(WASI 接口)。如果使用了没有声明的注册的权限,一般会被直接注销或者shutdown。因为这里的 Actor 更像是注册一个 service。原生应用就又是另外一种形式了。 2020-09-185
 欢乐马wasm在浏览器中应该用可以理解 -可以提高性能,但在其他地方应用就是一个全新语言吧?除了发展生态,有实际价值么?没有想清楚 欢乐马wasm在浏览器中应该用可以理解 -可以提高性能,但在其他地方应用就是一个全新语言吧?除了发展生态,有实际价值么?没有想清楚- 作者回复: 主要还是提供了 WASI 这样的系统接口标准,以及像“基于能力的安全”这类安全模型。两个加起来在云原生领域的应用就会很广泛了,比如实现更轻量级的容器替代等等,比如:https://github.com/krustlet/krustlet。 2021-09-3021
 军秋除了浏览器和node,还有其它可运行WASI的运行环境吗?或者如何自己构建这个运行环境? 军秋除了浏览器和node,还有其它可运行WASI的运行环境吗?或者如何自己构建这个运行环境?- 作者回复: 有的,有很多开源的优秀 Wasm 运行时可以使用,它们大部分也都支持 WASI。这个我会在后面的文章中介绍哈。 2020-09-261
 奕wasm 可以直接运行在 Chrome 浏览器上 V8 引擎的,不存在系统调用。 那么可以直接使用的 node 环境吗?(node 的引擎也是 v8, 但是有系统调用) 还是要需要 引入 wasi 来重新编译 node 才能使用的? 奕wasm 可以直接运行在 Chrome 浏览器上 V8 引擎的,不存在系统调用。 那么可以直接使用的 node 环境吗?(node 的引擎也是 v8, 但是有系统调用) 还是要需要 引入 wasi 来重新编译 node 才能使用的?- 作者回复: Node 好像已经部分支持 WASI 了,可以看看这里:http://nodejs.cn/api/wasi.html 2020-09-201
 The Crusades老师,我理解加一层抽象可以更便于规范和统一,但为什么不能直接规范wasm字节码时对`fopen`这类c函数的实现呢? The Crusades老师,我理解加一层抽象可以更便于规范和统一,但为什么不能直接规范wasm字节码时对`fopen`这类c函数的实现呢?- 作者回复: fopen 这种函数的功能实际上已经超过了“指令集”中单个指令的功能范畴。你可以对比一下,比如 x86 中可以用 mov 指令来移动数据,这是很“原子”(不考虑 micro-ops),很小的一个操作;而打开文件这种功能一般是由 OS 通过系统调用实现的,它是基于前面的 mov 等一系列指令的基础之上实现的。 2022-11-01归属地:美国
 AIGC Weekly 周报网络的分层算吗? 抽象就是基于事物之上提取出一种规范,只要实现这种规范就可以表示此种事物,那从这个角度而言,编程语言中的 interface 也是一种抽象吗? AIGC Weekly 周报网络的分层算吗? 抽象就是基于事物之上提取出一种规范,只要实现这种规范就可以表示此种事物,那从这个角度而言,编程语言中的 interface 也是一种抽象吗?- 作者回复: 没错!这两种都算抽象。 2021-12-12
 lisiurwasi已经是一种标准了吗 我了解的比较出名的支持wasi的运行时有wasmer和wasmtime 他们和wasi的关系是类似于不同浏览器的js引擎和ecma的关系吗 lisiurwasi已经是一种标准了吗 我了解的比较出名的支持wasi的运行时有wasmer和wasmtime 他们和wasi的关系是类似于不同浏览器的js引擎和ecma的关系吗- 作者回复: 嗯是的,可以这么理解。 2020-11-20
  GEEK_jahenTCP/IP 网络模型加了很多抽象层;计算机里面ISA、编程语言、编程框架、业务框架,也是一层层的抽象2022-08-08归属地:中国香港 GEEK_jahenTCP/IP 网络模型加了很多抽象层;计算机里面ISA、编程语言、编程框架、业务框架,也是一层层的抽象2022-08-08归属地:中国香港