Microsoft|微软:新算法让Windows 11累积更新体积缩小40%

今天,Windows 11 系统获得了首个补丁星期二活动日发布的累积更新 。考虑到 Windows 11 系统才在 10 月 5 日发布,因此该累积更新的幅度并不大,只是修复了一些兼容性问题,似乎也没有引入什么新的问题 。但如果你仔细观察的话,你就会发现该累积更新的安装速度要比 Windows 10 快了很多 。
访问:
微软中国官方商城 - 首页
Windows 是一个用于全球各种环境的操作系统,特别是在这个混合环境中,每个人可能无法获得最快的互联网连接,但仍然需要通过安全补丁保持保护 。这就是为什么补丁必须是小尺寸的,尤其是每月的累积更新包含了所有以前发布的修复程序 。
Windows 10 Version 1809 及以上功能更新采用了正向和反向差分压缩(forward and reverse differential compression) 。它确保操作系统在服务时可以恢复到其基本版本作为中间状态 。正如你可能注意到的,虽然正向和反向差分是对称的,但它们的特点是内容非常不同 。

Microsoft|微软:新算法让Windows 11累积更新体积缩小40%
文章图片

微软没有利用双向差分,因为一些转换和补丁可能会删除反向差分所需的数据 。为了确保非破坏性的转换,反向 delta 首先需要存储由正向 delta 增加和删除的内容 。
但由于内容上的不衔接,这个过程将不是很有效,至少与成对的正向和反向差分压缩相比是这样 。你可以在这里的微软白皮书中找到关于这个过程的更多细节 。
在 Windows 11 系统中,微软使用了反向更新数据生成(reverse update data generation)的方法,对这一过程进行了重大改变 。这是一个看似简单和直观的方法,它观察 delta 指令,然后直接逆转它们,而不经过成对的 delta 反向通道 。然而,在后端,这构成了一个重大的后端变化,它使用一个映射表来映射汇编代码功能中的结果变化 。微软解释说 。

Microsoft|微软:新算法让Windows 11累积更新体积缩小40%
文章图片

映射的工作原理是对程序的汇编代码进行逐个字节的反汇编,并确定虚拟地址 。虚拟地址在逻辑上对应于汇编代码功能的入口点,并在汇编代码被修复更新时发生转移 。这些移动被 delta 引擎观察到,并被一个映射表所捕获 。关于 delta 应用的映射过程使这些变化的地址正常化,这也是现代架构上开明的 delta 算法如此高效的很大一部分原因 。
与基本的修补指令一样,这些转换可以被“观察”和逆转 。由于不是所有的映射都是 1:1 的,所以有一点开销,当前向映射与观察到的反向映射冲突时,必须使用额外的修补指令来对齐映射 。这可以在原地完成,反向映射将提供与反向 delta 几乎相同的性能,其直接映射来自服务器上完成的 delta 生成 。

推荐阅读