基于携带证明的代码的垃圾收集过程验证

基于携带证明的代码的垃圾收集过程验证

论文摘要

使用Java和C#等安全的程序设计语言编写的程序能够完全避免一些在传统程序设计语言编写的程序中经常出现的安全漏洞,从而提高软件的可靠性。然而,这类安全语言的众多安全特性都依赖于其运行环境,特别是垃圾收集机制的正确性和安全性。不幸的是,垃圾收集算法通常难于设计和正确地实现。同时,垃圾收集器和用户程序的交互过程也往往相当复杂而易出错。因此,为了提高使用垃圾收集机制的程序设计语言的安全性和可靠性,势必需要对垃圾收集过程的安全性和正确性进行严格的研究。本文工作使用基于Hoare逻辑的汇编语言级形式程序验证框架,对垃圾收集器的安全性和正确性,以及垃圾收集器与多种用户程序,特别是类型化汇编语言的交互过程的安全性进行了严格的形式验证。本文工作基于携带证明的代码技术,所有的验证都在计算机辅助定理证明工具COQ中实现为计算机可检查的证明。这样,垃圾收集器和用户程序就能够被构造为一个完整的携带安全性证明的软件包,方便地通过互联网和其他渠道进行发布。本文的第一部分工作验证了两种典型垃圾收集器的汇编语言实现。该工作使用分离逻辑风格的代码规范语言给出了停止式标记—清扫垃圾收集器和基于初始快照的Yuasa渐进式垃圾收集器的安全规范,并使用Hoare风格的程序逻辑和推理方法证明了垃圾收集器满足其安全规范。第二部分工作从单独验证垃圾收集器工作存在的不足出发,提出并实现了一种通用的验证垃圾收集器和用户程序交互过程的方法。其核心思想是使用类似抽象数据类型的技术将垃圾收集器对用户程序的接口及其验证抽象起来,使得用户程序的验证无需再关心垃圾收集器的具体实现,并方便用户程序验证和垃圾收集器验证的链接。最后一部分工作研究了类型安全的垃圾收集过程。给出了一种为基础的类型化汇编语言提供验证的垃圾收集过程的方法,它基于一个开放式的汇编语言级程序逻辑,并使用了第二部分工作的主要思想,将垃圾收集器的细节从类型化汇编语言的类型系统中抽象出去,简化了类型化汇编语言的设计。同时,本文还讨论了这些工作在计算机辅助定理证明工具COQ中的实现,以及在这些实现中设计和发展的一些提高证明效率的方法和技术。本文工作的主要贡献和创新包括:1)基于汇编语言层次的一个携带证明程序的验证框架,首次成功地验证了多种垃圾收集算法的汇编级实现代码,以及它们和用户程序的交互过程;2)提出了一种基于抽象数据类型技术的通用方法,能够对垃圾收集器、用户程序以及它们的交互过程进行简洁且严格的验证;3)首次成功地解决了在最小被信任计算基础的前提下为类型化汇编语言提供类型安全的垃圾收集过程这一热点研究问题;4)基于分离逻辑技术,首次成功地从单个内存单元开始构造了标记—清扫式垃圾收集器的具体内存规范。这些研究工作对减小安全程序设计语言的被信任计算基础进行了有益的尝试——使用形式程序验证技术,携带基础证明的垃圾收集过程就可以被排除出安全程序设计语言的被信任计算基础。同时,它们也为汇编语言级程序的形式验证,特别是为携带证明的代码的技术的应用积累了重要的理论和实践经验。而随着这类技术的进步,更多被信任的软件就可以经过验证而被排除出系统的被信任计算基础。

论文目录

  • 摘要
  • Abstract
  • 第1章 绪论
  • 1.1 垃圾收集技术
  • 1.1.1 基本概念
  • 1.1.2 经典垃圾收集算法
  • 1.1.3 用户程序和垃圾收集器的交互方式
  • 1.1.4 精确的和保守的垃圾收集
  • 1.1.5 垃圾收集的安全性问题
  • 1.2 形式程序验证和携带证明的代码
  • 1.2.1 经典Hoare逻辑
  • 1.2.2 携带证明的代码
  • 1.2.3 基础的携带证明的代码
  • 1.3 相关研究工作
  • 1.3.1 形式程序验证
  • 1.3.2 垃圾收集验证
  • 1.3.3 类型安全的垃圾收集
  • 1.4 本文概述
  • 1.4.1 主要贡献、技术特点和创新之处
  • 1.4.2 章节安排
  • 第2章 验证框架
  • 2.1 元逻辑
  • 2.2 抽象机器模型
  • 2.2.1 讨论
  • 2.3 开放式汇编语言程序推理系统
  • 2.3.1 推理规则
  • 2.3.2 可靠性和正确性
  • 2.4 模块化验证栈式控制流程序的推理方法
  • 2.4.1 验证条件产生器
  • 2.5 分离逻辑风格的代码规范语言
  • 第3章 垃圾收集器验证
  • 3.1 基本假定和相关定义
  • 3.2 停止式标记-清扫垃圾收集器
  • 3.2.1 原理及算法
  • 3.2.2 堆数据结构形式定义
  • 3.2.3 垃圾收集器规范
  • 3.2.4 构造证明
  • 3.3 Yuasa渐进式垃圾收集器
  • 3.3.1 交互式的垃圾收集
  • 3.3.2 原理及算法
  • 3.3.3 弱三色抽象不变式
  • 3.3.4 垃圾收集器规范
  • 3.3.5 构造证明
  • 第4章 验证垃圾收集过程的通用框架
  • 4.1 基于ADT的垃圾收集器接口规范
  • 4.1.1 抽象存储状态和具体存储状态
  • 4.1.2 抽象规范和具体规范
  • 4.2 基于抽象接口规范的用户程序验证
  • 4.3 基于抽象接口规范的垃圾收集器验证
  • 第5章 为类型化汇编语言构造验证的垃圾收集过程
  • 5.1 方法概述
  • 5.2 验证垃圾收集器
  • 5.3 基础的类型化汇编语言
  • 5.3.1 类型定义
  • 5.3.2 定型规则
  • LITE框架'>5.3.3 嵌入OCAPLITE框架
  • 5.4 证明垃圾收集器接口规范的一致性
  • 5.5 链接实例
  • 第6章 验证工作的COQ实现
  • 6.1 计算机辅助定理证明工具COQ
  • 6.2 验证框架
  • 6.3 验证垃圾收集器
  • 6.4 验证垃圾收集器和用户程序交互
  • 6.5 类型化汇编语言和验证的垃圾收集
  • 6.6 讨论
  • 第7章 结束语
  • 7.1 文章总结
  • 7.2 对后续研究的展望
  • 参考文献
  • 致谢
  • 在读期间发表的学术论文与取得的研究成果
  • 相关论文文献

    标签:;  ;  ;  ;  

    基于携带证明的代码的垃圾收集过程验证
    下载Doc文档

    猜你喜欢