跳到主要内容
10.5555/1251229.1251230acm会议文章/章节视图摘要出版物页面osdi公司会议记录会议集合
第条
免费访问

使用特定于系统的程序编写编译器扩展检查系统规则

出版:2000年10月22日 出版历史记录
  • 获取引文提醒
  • 摘要

    操作系统内核、嵌入式系统和库等系统软件必须遵守许多正确性和性能规则。常见的例子包括“对变量A的访问必须由锁B保护”、“系统调用必须在使用用户指针之前检查其有效性”和“消息处理程序应尽快释放其缓冲区以允许更大的并行性”。不幸的是,这些规则基本上没有得到遵守。
    本文通过展示系统实现者如何使用元级编译(MC)编写简单的、特定于系统的编译器扩展,自动检查代码是否违反规则,来解决这个问题。通过将特定领域的知识与编译器的自动机制相结合,MC将语言级检查和优化的好处带到了用这些语言实现的系统的更高“元”级。本文通过将MC方法应用于四个复杂的实际系统(Linux、OpenBSD、Xok外核和FLASH机器的嵌入式软件)来证明其有效性。MC扩展在这些系统中发现了大约500个错误,并导致了大量内核补丁。大多数扩展都不到一百行代码,由对所检查的系统了解有限的实现者编写。

    工具书类

    [1]
    {1} M.Bishop和M.Dilger。检查文件访问中的竞争条件。计算系统,第131-152页,1996年春季。]]
    [2]
    {2} R.S.Boyer和Y.Yu。广泛使用的微处理器目标代码的自动证明。美国计算机学会期刊,1(43):166-1921996年1月。]]
    [3]
    {3} 南千叶。C++的元对象协议。面向对象编程系统、语言和应用程序,第285-299页,1995年10月。]]
    [4]
    {4} A.Chou、B.Chelf、D.R.Engler和M.Heinrich。使用元级编译来检查FLASH协议代码。于2000年11月在ASPLOS 2000中发布。]]
    [5]
    {5} A.周和D.R.恩格勒。Metal:一种用于构建轻量级、特定于系统的软件检查器、分析器和优化器的语言和系统。可根据要求提供:[电子邮件保护], 2000.]]
    [6]
    {6} J.C.Corbett、M.B.Dwyer、J.Hatcliff、S.Laubach、C.S.Pasareanu、Robby和H.Zheng。Bandera:从java源代码中提取有限状态模型。2000年ICSE, 2000.]]
    [7]
    {7} R.F.船员。ASTLOG:一种用于检查抽象语法树的语言。第一届领域特定语言会议记录,第229-242页,1997年10月。]]
    [8]
    {8} D.L.Detlefs、R.M.Leino、G.Nelson和J.B.Saxe。扩展静态检查。TR SRC-159,COMPAQ SRC,1998年12月。]]
    [9]
    {9} D.R.恩格尔。将应用程序语义和控件合并到编译中。第一届领域特定语言会议记录1997年10月。扩展版本“接口编译:将程序接口编译为语言的步骤”被选出现在1999年5月/6月IEEE软件工程学报第25卷第3期第387-400页。]]
    [10]
    {10} D.Evans、J.Guttag、J.Horning和Y.M.Tan。Lclint:使用规范检查代码的工具。ACM SIGSOFT软件工程基础研讨会会议记录1994年12月。]]
    [11]
    {11} R.W.弗洛伊德。为程序指定含义,第19-32页。J.T.Schwartz,Ed.美国数学学会,1967年。]]
    [12]
    {12} C.W.Fraser和D.R.Hanson。一个可重定向的C编译器的设计与实现.Benjamin/Cummings出版公司,加利福尼亚州红木市,1995年。]]
    [13]
    {13} 里德·黑斯廷斯和鲍勃·乔伊斯。净化:快速检测内存泄漏和访问错误。冬季USENIX会议记录1992年12月。]]
    [14]
    {14} G.Holzmann和M.Smith。软件模型检查:从源代码中提取验证模型。受邀论文。程序。PSTV/FORTE99发布。Kluwer公司, 1999.]]
    [15]
    {15} Intrinsa公司。PREfix/Enterprise的技术介绍。技术报告,Intrinsa Corporation,1998年。]]
    [16]
    {16} M.F.Kaashoek、D.R.Engler、G.R.Ganger、H.M.Briceno、R.Hunt、D.Mazieres、T.Pinckney、R.Grimm、J.Jannotti和K.Mackenzie。外核系统上的应用程序性能和灵活性。第十六届ACM操作系统原理研讨会会议记录,1997年10月。]]
    [17]
    {17} G.Kiczales、J.des Rivieres和D.G.Bobrow。元对象协议的艺术麻省理工学院出版社,1991年。]]
    [18]
    {18} G.Kiczales、J.Lamping、A.Mendhekar、C.Maeda、C.V.Lopes、J.Loingtier和J.Irwin。面向方面编程。欧洲面向对象编程会议,1997年6月。]]
    [19]
    {19} A.Kolawa和A.Hicken。Insure++:支持全面质量软件的工具。www.paras.com/insure/papers/tech.htm。]]
    [20]
    {20} J.Kuskin、D.Ofelt、M.Heinrich、J.Heinlein、R.Simoni、K.Gharachorloo、J.Chapin、D.Nakahira、J.Baxter、M.Horowitz、A.Gupta、M.Rosenblum和J.Hennessy。斯坦福FLASH多处理器。第21届计算机体系结构国际研讨会论文集1994年4月。]]
    [21]
    {21}J.Lamping、G.Kiczales、L.H.Rodriguez Jr.和E.Ruf。开放编译器的体系结构。IMSA’92反射和元级架构研讨会会议记录, 1992.]]
    [22]
    {22}T.主。C程序的特定于应用程序的静态代码检查:Ctool。胡说八道:数字Zine(版本1.0), 1997.]]
    [23]
    {23}K.L.McMillan和J.Schwalbe。千兆缓存一致性协议的形式化验证。共享内存多处理国际研讨会论文集,第242-51页。日本东京信息处理。Soc.,1991年。]]
    [24]
    {24}T.C.Mowry、A.K.Demke和O.Krieger。针对非核心应用程序的自动编译器插入I/O预取。第二届操作系统设计与实现研讨会论文集, 1996.]]
    [25]
    {25}G.纳尔逊。程序验证技术《施乐PARC研究报告CSL-81-10》,1981年6月,斯坦福大学,1981年。]]
    [26]
    {26}K·欧文斯。“请查看卸载比赛的所有模块”。发送至[电子邮件保护]。提供要遵循的协议以防止模块卸载竞争。,2000.]]
    [27]
    {27}拉希德。个人沟通。Microsoft的内部工具用于检查Windows设备驱动程序中的违规行为。,2000年7月。]]
    [28]
    {28}P.罗素([电子邮件保护]). 不可靠的Linux内核黑客指南。随2.3.99 Linux RedHat Kernel 2000一起发布。]]
    [29]
    {29}C.P.Sapuntzakis。个人沟通。OpenBSD中的错误,中断上下文可能调用阻塞内存分配器,2000年4月。]]
    [30]
    {30}S.Savage、M.Burrows、G.Nelson、P.Sobalvarro和T.E.Anderson。橡皮擦:用于多线程编程的动态数据竞争检测器。计算机系统ACM事务, 15(4):391-411, 1997.]]
    [31]
    {31}A.斯利瓦斯塔瓦和A.尤斯塔斯。ATOM—用于构建自定义程序分析工具的系统。SIGPLAN’94编程语言设计与实现会议记录, 1994.]]
    [32]
    {32}U.Stern和D.L.Dill。SCI缓存一致性协议的自动验证。正确的硬件设计和验证方法:IFIP WG10.5高级研究工作会议记录, 1995.]]

    引用人

    查看全部

    建议

    评论

    信息和贡献者

    问询处

    发布于

    封面图片ACM会议
    OSDI’00:第四届操作系统设计与实现研讨会会议记录-第4卷
    2000年10月
    355页

    赞助商

    出版商

    USENIX协会

    美国

    出版历史记录

    出版:2000年10月22日

    检查更新

    限定符

    • 第条

    贡献者

    其他指标

    文献计量学和引文

    文献计量学

    文章指标

    • 下载次数(过去12个月)39
    • 下载次数(最近6周)8

    其他指标

    引文

    引用人

    查看全部
    • (2020)系统第29届USENIX安全研讨会会议记录10.5555/3489212.3489224(199-216)在线发布日期:2020年8月12日
    • (2019)抓斗2019年第十四届欧洲系统会议记录10.1145/3302424.3303972(1-17)在线发布日期:2019年3月25日
    • (2019)DCNS公司第二十四届程序设计语言和操作系统体系结构支持国际会议论文集10.1145/3297858.3304065(287-299)在线发布日期:2019-04-04
    • (2018)NAR-miner:从代码中发现负关联规则以进行错误检测2018年第26届ACM欧洲软件工程会议暨软件工程基础研讨会会议记录10.1145/3236024.3236032(411-422)在线发布日期:2018年10月26日
    • (2018)常规属性的符号验证第40届国际软件工程会议论文集10.1145/3180155.3180227(871-881)在线发布日期:2018年5月27日
    • (2018)基于动态符号执行的静态分析缺陷可达性判定方法编程和计算软件10.1134/S036176881806005144:6(467-475)在线发布日期:2018年11月1日
    • (2017)正则性质的实用符号验证2017年第11次软件工程基础联席会议记录10.1145/3106237.3121275(1053-1055)在线发布日期:2017年8月21日
    • (2017)格拉斯潘ACM SIGARCH计算机架构新闻10.1145/3093337.303774445:1(389-404)在线发布日期:2017年4月4日
    • (2017)格拉斯潘ACM SIGPLAN通知10.1145/3093336.303774452:4(389-404)在线发布日期:2017年4月4日
    • (2017)格拉斯潘第二十二届编程语言和操作系统体系结构支持国际会议论文集10.1145/3037697.3037744(389-404)在线发布日期:2017年4月4日
    • 显示更多引用者

    视图选项

    查看选项

    PDF格式

    以PDF文件查看或下载。

    PDF格式

    电子阅读器

    使用联机查看电子阅读器.

    电子阅读器

    获取访问权限

    登录选项

    完全访问权限

    媒体

    数字

    其他

    桌子

    分享

    分享

    共享此出版物链接

    在社交媒体上分享