度量时态逻辑的多头监控
1. 引言
监控(或运行时验证)是通过将系统事件与规范进行分析,来验证系统属性的过程。规范定义了哪些事件序列构成了预期的系统行为。监控算法(或监视器)可以根据它们与被监控系统的交互方式进行分类。核心区别在于事件的监控时间:
- 在线监视器 :在系统执行期间实时处理事件,由于事件流的性质,每个事件只能读取一次。若后续分析需要该事件,在线监视器必须将其存储在内存中。其计算过程可视为使用一个单向读取头读取事件流,向前移动、更新监视器状态并产生输出。
- 离线监视器 :在系统停止运行后处理事件,分析存储在文件中的有限事件序列(即轨迹)。离线监视器配备的读取头没有移动限制,实际上可以有多个读取头(对应轨迹中的索引)同时从多个位置读取。不过,即使在离线监控中,按顺序处理事件也有其优势:一是顺序读取的原始性能由于预取和底层文件系统及硬件特性优于随机访问读取;二是可以删除所有读取头已处理的轨迹部分,并在末尾追加新事件,从而有效模拟在线监控。
本文提出,通过利用多个(有限数量)按顺序遍历轨迹的单向读取头,离线监控与在线监控不同且更优。多次读取每个输入的能力使我们能够获得更优的复杂度结果。我们以度量时态逻辑(MTL)的规范监控为例进行了验证,获得了第一个针对具有过去和有界未来时态运算符的MTL的离线几乎与轨迹长度无关的监控算法,该算法输出一个布尔判决轨迹,表示公式在输入轨迹每个位置的满足情况。这里的“几乎”表示监视器的空间复杂度对轨迹长度存在对数依赖,这源于需要以二进制形式存储轨迹长度。
主要贡献包括:
1. 提出用于MTL的多头监控算法。
2. 对该算法进行正
超级会员免费看
订阅专栏 解锁全文
9万+

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



