这篇论文介绍了一个名为Serval的框架,用于通过符号执行来对系统代码进行可扩展的自动化验证。
Serval的核心思想是将开发人员使用Rosette编写指令集解释器并转化为自动化验证器,从而实现系统软件的验证。这一框架通过符号性能分析和优化来识别和修复验证性能瓶颈。作者通过将Serval应用于现有的系统和未经验证的系统中,展示了其在找到系统错误和提高验证效率方面的有效性。
本文提出了一个名为 SibylFS 的文件系统行为规范,可以以黑盒测试方式检查文件系统实现和规范之间的行为差异。
修改xv6的内核接口,构建状态机规范和声明式规范以支持SMT(Satisfiability Modulo Theories)求解器来进行验证。通过有限化内核接口,使用硬件虚拟化简化虚拟内存推理,并在LLVM IR级别工作,以避免对C语义进行建模,从而实现了"一键验证"。
主要思路是统计多个文件系统的实现,计算具体文件系统与多个文件系统总体之间的差异性(直方图/信息熵),从而窥探出其文件系统的具体实现在语义上的差异。