小 型 微 型 计 算 机 系 统
Journal of Chinese Computer Systems
2009年 9月 第 9期
Vo1.30 No.9 20o9
渐进 式标 记一清扫垃圾收 集机 制验证
李 隆 ,陈意云 ,林春晓
(中国科学技术大学 计算 机科学技术 系,安徽 合肥 230026)
(中国科学技 术大学 苏州研究 院 软件安全实验室 ,江苏 苏州 215123)
E·mail:liwis@ mail.ustc.edu.cn
摘 要:垃圾收 集已经成为可靠、高效程序运行平 台的一个重要组成部分.渐进式垃圾 收集 由于在 用户程序运行时并行 的执行
垃圾收集操作,其算法及实现则更为复杂,其可靠性也更难以得到保证.本文论述使用 Hoare风格的程序验证框架形式验证渐
进式标记一清扫 垃圾收集机制及其 写拦截器在汇编语 言层 次上的 实现的研究工作.被验证 的属性涵括 了简单的类 型安全到整 个
内存 堆上的数据保持.本文所有的验证 工作都 实现在 Coq辅助定理证明工具 中,从而可以迅速的用 于构造携 带证明的代 码包.
关 键 词:软件安全;程序验证 ;垃圾 收集;携带证明的代码
中图分 类号 :TP301 文献标识码 :A 文 章 编 号 :1000.1220(2009)09 1742-06
VerificatiOn 0f Increm ental M ark.Sweep Garbage Collection
LI Long 一,CHEN Yi.yun .一,LIN Chun.xiao‘·
(Departmentof Compu ̄rScience andTechnology,University ofScience and Technology of China,Hefei 230026,China )
(Software Security Laborato ̄,SuzhouInstituteTorAdvancedStudy,UniversityofScience and Technology of China,Suzhou 215123,China )
Abstract:Garbage collection has been an im portant compo nent of effi cient an d reliable pro gram execution platform s. 1]he algorithm
and implementation of incremental garbage collection have been more complicated because it collec ts garbage in paralld to user pro—
gram s.And it is difficult to guarantee the reliability ofincremental garbage collection.In this paper,we present the form al verifica-
don of the assembly—level im plementation of incremental mark-swee p garbage collec tors an d write barriers in a Hoare—style program
logic.The properties verified about the garbage collec tors range from simple type safety to full heap preservation.An d all ofthe veil—
fication is mechanized in the Coq proof assistant and can be used to pack as proof-carrying code packages immed iately.
Key words:software safety;program verification;garbage collection;proof-carrying code
1 引 言
如今,垃圾 收集 (Garbage Collection,简称 GC)… 已经普
遍应用于主流 的软件开 发领域 中.它使得 程序员不 再需要 手
工的释放 内存 ,从 而避 免 了 内存 操 作 中的许 多人为 错误 .同
时,它通过 自动 的对 内存的使用进行管理 ,极大地提高了资 源
利用 的效率.垃圾 收集 已经成为可靠、高效的程序运行平台中
一
个重要组 成部分.然而 ,垃圾收集 自身往 往都 比较复杂 ,其
算法设计和实现的可靠性往往都很难得到保证.同时 ,随着多
线程 (Multi-threading)技术 的广 泛应 用 ,能与 用户 程序 (User
Programs)并行执行 的渐进 式垃圾 收集 的应 用范 围也越 来越
广,但其执行 过程也更为复杂 ,其可靠 性也更 难以得 到保证.
然而垃圾收集过程 中的任何错误或者异常都会导致 用户 程序
在平台运行时产生不可 预知的结果.因此要确保用 户程序在
运行平台上的有效执行 ,就需要确保垃圾收集的可靠性.
近年来 ,携 带证 明 的代 码 (Proof-Carrying Code,简称
PCC)[21作为 Hoare风格 的一种 验证框架 ,已经被广 泛用 于推
导 程序 的各种属 性.PCC代 码包包 含 了软件 的本 地代码 (N.
ative Code),代码 的安全 规范 (Safety Specification)以及说 明
代码满足相应安全规范的机器 可检查 的证 明.从而 PCC系统
不需要相信复杂、易出错 的编译和优化过程 ,能够使用 较小的
被信任计算基础(Trusted Computing Base,简称 TCB)来构 造
具有更高安全性 的软件.
本文论述了渐进式标记一清扫垃圾收集机制及其 写拦截
器在 PCC风格系统 中的形式验证.本文 的主要 贡献在于 :
(1)本文使用 SCAP(Stack—based Certified Assembly Pro—
gramming) 形式验证 了渐进式标记一 清扫垃圾 收集 及其写
拦截器.SCAP作为 PCC的一个扩展 ,也是一种 Hoare风格 的
验证框架 ,主要用于处理 带有 函数 调用 、返 回的程序 的验 证.
与 PCC一样 ,SCAP也在汇编语言层次上验证程序属 性.因而
本文 的验证能够更多 的考虑垃圾 收集在底 层执行时的操作行
为.同时还将 编译 和优 化过程排 除出 TCB,提高 了所 述工作
的可靠性.
(2)本文在验证渐进式标记一清扫垃圾收集器 的同时还
收稿 日期 :2008-04-21 收修改稿 日期 :2008-09-04 基金项 目:国家 自然科学基金项 目(60673126)资助 ;Intel中国研究 中心资 助. 作者 简
介 :李 隆,男 ,1979年生 ,博士研究生 ,研究方向为基 于程序设 计语 言的软件 安全 研究、汇编语言级程序验 证、垃圾收集及 并行程序安全 性验证
等 ;陈意云 ,男 ,1946年生 ,教授 ,博士生导师 ,研究方向为程序设计语言 的理论 和实现技术 、形式 描述技术 、软 件安全 ;林春晓 ,男 ,1981年生 ,博
士研究生 ,研究方向为基于程序 设计语言的软件安全研究 、汇编语言级程序验证、垃圾收集的安全性 验证等.