这就是微软使更新更小的方式
在我们深入探讨 Windows 11 服务模型中的更改之前,重要的是讨论更改背后的动机以及现有的服务模型。
我们都同意 Windows 是一种在全球各种环境中使用的操作系统。
在这种混合环境中更是如此,在这种环境中,每个人可能无法访问最快的互联网连接,但仍需要通过安全补丁保持保护。
这就是为什么补丁的大小很重要,特别是因为每月累积更新包含所有以前发布的修复程序。
![MSFT-patch-1 MSFT-patch-1](https://www.yundongfang.com/wp-content/uploads/2023/08/2023082022432364.gif)
Windows 10 的 1809 及更高版本使用上图中描述的成对正向和反向差分压缩。
这实际上确保操作系统可以在服务时恢复到其基本版本作为中间状态。您可能会注意到,虽然正向和反向差分是对称的,但它们具有非常不同的内容。
这家总部位于雷德蒙德的科技公司不使用双向增量,因为某些转换和补丁可能会删除反向增量所需的数据。
为了确保无损转换,反向增量首先需要存储正向增量添加和删除的内容。
![MSFT-patch-2 MSFT-patch-2](https://www.yundongfang.com/wp-content/uploads/2023/08/2023082022432364.gif)
由于内容不相交,该过程不会非常有效,至少与成对的正向和反向差分压缩相比。
Microsoft 确实使用一种称为反向更新数据生成的方法在 Windows 11 中改变了这个过程。
映射通过运行程序汇编代码的逐字节反汇编并识别虚拟地址来工作。虚拟地址在逻辑上对应于汇编代码函数的入口点,并在汇编代码更新时发生变化。这些变化由 delta 引擎观察并由映射表捕获。delta apply 的映射过程规范了这些变化的地址,这也是现代架构启发的 delta 算法如此高效的很大一部分原因。
看似简单直观的做法,它观察delta指令,然后直接将其反转,无需经过成对的delta反向pass。
![msft-patch-3 msft-patch-3](https://www.yundongfang.com/wp-content/uploads/2023/08/2023082022432364.gif)
然而,在后端,这构成了一个重要的后端更改,它使用映射表来映射汇编代码函数中的结果更改。
就像基本的补丁指令一样,这些转换可以被“观察”和反转。由于并非所有映射都是 1:1,因此存在轻微开销,并且在前向映射与其观察到的反向映射冲突的情况下,必须使用额外的补丁指令来对齐映射。这可以就地完成,并且反向映射将提供与反向增量几乎相同的性能,并从服务器上完成的增量生成直接映射。
雷德蒙德官方声称其反向更新数据生成方法导致 Windows 11 更新的大小减少了 40%。
Redmond 公司表示,几个月前它还为这种方法申请了专利。微软是否也会将这项技术反向移植到 Windows 10 中还有待观察。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun75096.html