WebAssembly入门课
于航
PayPal 高级软件工程师
新⼈⾸单¥9.9
1233 人已学习
课程目录
已更新 12 讲 / 共 22 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 我们为什么要了解 WebAssembly?
免费
01 | 基础篇:学习此课程你需要了解哪些基础知识?
02 | 历史篇:为什么会有 WebAssembly 这样一门技术?
核心原理篇 (6讲)
03 | WebAssembly 是一门新的编程语言吗?
04 | WebAssembly 模块的基本组成结构到底有多简单?
05 | 二进制编码:WebAssembly 微观世界的基本数据规则是什么?
06 | WAT:如何让一个 WebAssembly 二进制模块的内容易于解读?
07 | WASI:你听说过 WebAssembly 操作系统接口吗?
08 | API:在 WebAssembly MVP 标准下你能做到哪些事?
应用篇 (3讲)
09 | WebAssembly 能够为 Web 前端框架赋能吗?
10 | 有哪些已经投入生产的 WebAssembly 真实案例?
11 | WebAssembly 在物联网、多媒体与云技术方面有哪些创新实践?
WebAssembly入门课
15
15
1.0x
00:00/00:00
登录|注册

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

于航 2020-09-18
你好,我是于航。
相信你在刚刚接触到 WebAssembly 这门技术的时候一定有所发现,WebAssembly 这个单词实际上是由两部分组成,也就是 “Web” 和 “Assembly”。
“Web” 表明了 Wasm 的出身,也就是说它发明并最早应用于 Web 浏览器中, “Assembly” 则表明了 Wasm 的本质,这个词翻译过来的意思是 “汇编”,也就是指代它的 V-ISA 属性。
鉴于 Wasm 所拥有“可移植”、“安全”及“高效”等特性,Wasm 也被逐渐应用在 Web 领域之外的一些其他场景中。今天我们将要讲解的,便是可以用于将 Wasm 应用到 out-of-web 环境中的一项新的标准 —— WASI(WebAssembly System Interface,Wasm 操作系统接口)。通过这项标准,Wasm 将可以直接与操作系统打交道。
在正式讲解 WASI 之前,我们先来学习几个与它息息相关的重要概念。在了解了这些概念之后,相信甚至不用我过多介绍,你也能够感受到 WASI 是什么,以及它是如何与 Wasm 紧密结合的。

Capability-based Security

第一个我们要讲解的,是一个在“计算机安全”领域中十分重要的概念 —— “Capability-based Security”,翻译过来为“基于能力的安全”。由于业界没有一个相对惯用的中文表达方式,因此我还是保持了原有的英文表达来作为本节的标题,在后面的内容中,我也将直接使用它的英文表达方式,以保证内容的严谨性。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《WebAssembly入门课》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥9.9
立即订阅
登录 后留言

精选留言(4)

  • popgis
    请问老师,那WASI是将系统调用函数在编译期替换成WASI标准函数的吗?还是在运行期通过调用拦截或动态替换的方式?

    作者回复: 对的,应用在与wasi-libc编译时便会被替换成WASI的系统调用。然后虚拟机在解释执行Wasm字节码时就会使用虚拟机上的实现。

    2020-09-18
    1
    1
  • Cryhard
    那这意味着Wasm的编写也需要像原生APP一样,运行中申请一组由WASI“代理”的系统权限的集合(而用户可以提供长期或者单次授权)。而程序也得支持“部分权限被禁用”的情况,例如在“不能调用本地录音设备”的状态下继续正常运行吗?

    作者回复: 是的,这个是一种情况。但实际上对 WASI 接口的调用需要进行怎样的权限管理要依据不同的情况来看。比如最简单的用虚拟机执行一个 WASI 应用,一般可能只要在运行虚拟机时指定所需要的“权限”接可。还有一种场景就是在云上使用 WASI。这个时候可以把 WASI 应用比作 Actor,每个 Actor 都需要显式指出自己需要使用的系统权限(WASI 接口)。如果使用了没有声明的注册的权限,一般会被直接注销或者shutdown。因为这里的 Actor 更像是注册一个 service。原生应用就又是另外一种形式了。

    2020-09-18
    1
  • 猴哥
    除了浏览器和node,还有其它可运行WASI的运行环境吗?或者如何自己构建这个运行环境?

    作者回复: 有的,有很多开源的优秀 Wasm 运行时可以使用,它们大部分也都支持 WASI。这个我会在后面的文章中介绍哈。

    2020-09-26
  • 一步
    wasm 可以直接运行在 Chrome 浏览器上 V8 引擎的,不存在系统调用。 那么可以直接使用的 node 环境吗?(node 的引擎也是 v8, 但是有系统调用) 还是要需要 引入 wasi 来重新编译 node 才能使用的?

    作者回复: Node 好像已经部分支持 WASI 了,可以看看这里:http://nodejs.cn/api/wasi.html

    2020-09-20
收起评论
4
返回
顶部