Windows 是一个用于全球各种环境的操作系统,特别是在这个混合环境中,每个人可能无法获得最快的互联网连接,但仍然需要通过安全补丁保持保护。这就是为什么补丁必须是小尺寸的,尤其是每月的累积更新包含了所有以前发布的修复程序。
Windows 10 Version 1809 及以上功能更新采用了正向和反向差分压缩(forward and reverse differential compression)。它确保操作系统在服务时可以恢复到其基本版本作为中间状态。正如你可能注意到的,虽然正向和反向差分是对称的,但它们的特点是内容非常不同。
微软没有利用双向差分,因为一些转换和补丁可能会删除反向差分所需的数据。为了确保非破坏性的转换,反向 delta 首先需要存储由正向 delta 增加和删除的内容。
但由于内容上的不衔接,这个过程将不是很有效,至少与成对的正向和反向差分压缩相比是这样。你可以在这里的微软白皮书中找到关于这个过程的更多细节。
在 Windows 11 系统中,微软使用了反向更新数据生成(reverse update data generation)的方法,对这一过程进行了重大改变。这是一个看似简单和直观的方法,它观察 delta 指令,然后直接逆转它们,而不经过成对的 delta 反向通道。然而,在后端,这构成了一个重大的后端变化,它使用一个映射表来映射汇编代码功能中的结果变化。微软解释说。
映射的工作原理是对程序的汇编代码进行逐个字节的反汇编,并确定虚拟地址。虚拟地址在逻辑上对应于汇编代码功能的入口点,并在汇编代码被修复更新时发生转移。这些移动被 delta 引擎观察到,并被一个映射表所捕获。关于 delta 应用的映射过程使这些变化的地址正常化,这也是现代架构上开明的 delta 算法如此高效的很大一部分原因。
与基本的修补指令一样,这些转换可以被“观察”和逆转。由于不是所有的映射都是 1:1 的,所以有一点开销,当前向映射与观察到的反向映射冲突时,必须使用额外的修补指令来对齐映射。这可以在原地完成,反向映射将提供与反向 delta 几乎相同的性能,其直接映射来自服务器上完成的 delta 生成。
微软声称,其反向更新数据生成方法使 Windows 11 更新的大小减少了 40%。该公司表示,它在几个月前还为这种方法申请了专利。微软是否会将这种技术也回传到 Windows 10,还有待观察。