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