选择性摊销资源边界分析
在软件开发中,自动资源边界分析变得越来越重要,特别是在检测性能错误、防止算法复杂度攻击以及识别侧信道漏洞等方面。本文将探讨如何自动证明资源边界,即证明一个整数值的资源变量受给定程序表达式的约束。
1. 资源边界分析的两种方法
在解决资源边界问题时,通常有两种自然的方法:
- 最坏情况推理 :将问题视为循环边界问题的扩展,通过推断循环执行次数的上界,然后将更新表达式的最坏情况(或上界)乘以该更新执行的次数,汇总每个资源使用命令的结果。但这种方法有两个潜在缺点:一是预设了循环边界的存在(即假设程序会终止),而我们可能需要证明非终止、反应式程序的资源使用仍然有界;二是可能过于悲观,因为资源使用表达式的值在循环迭代中可能会有所不同。
- 完全摊销推理 :直接采用寻找足够强的归纳不变量来证明断言的方法。然而,直接将归纳不变量推理技术应用于资源边界分析可能具有挑战性,因为所需的归纳不变量通常非常复杂(例如多项式),因此并不总是能够自动、可行或可预测地推断出来。
2. 选择性摊销的核心思想
本文的关键见解是,上述两种方法并非二元选择,而是选择性摊销频谱上的极端实例。我们可以在任何资源更新序列中应用摊销推理,然后用最坏情况推理来分析每个序列对总体资源使用的贡献。
具体来说,我们可以将总体资源使用分解为任意的摊销段,这样可以灵活地选择分解方式,以简化资源摊销推理的归纳不变量推断,或者在可行、容易且精确的情况下利用循环边界推断。
超级会员免费看
订阅专栏 解锁全文
22

被折叠的 条评论
为什么被折叠?



