01 / 05准备播放
先为一个实例预留最大范围
匿名映射覆盖声明的最大地址范围
WASM LINEAR MEMORY / RANGE预留范围 ≠ Wasm 可访问长度 ≠ RSS
1 / 5 · 先预留SOURCEcow_linux.go · newLinuxCOWMemory
执行第 1–3 行
func newLinuxCOWMemory(maximum uint64) (*linuxCOWMemory, error) {
mapping, err := unix.Mmap(-1, 0, int(maximum), PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS)
return &linuxCOWMemory{mapping: mapping, max: int(maximum)}, nil
}
最大范围:8192 Wasm 页 = 512 MiB
Host 映射先覆盖最大范围;Wasm 可见长度单独变化。
MEMORY RANGE每个实例先拥有自己的最大范围
范围状态预留范围Wasm 可访问声明上限
baseWasm 偏移 →limit
每个实例自己的 base整段范围属于本实例上限 512 MiB
实例 A恢复前 → 恢复后
实例 B另一个实例的起点
A 自己稳定;A 与 B 不要求数值相同。
Host 映射已建立;Wasm 可访问长度另由实例内存状态决定。
先有地址范围,再谈 Wasm 可访问长度
旁白
点一下播放即可。也可以只听声音,或拖动进度跳到想看的位置。
0:001:59
正在准备本课音轨与图解。首次播放需要点一下。