跳到主要内容
10.1145/3009837.3009847acm会议文章/章节视图摘要出版物页面波普尔会议记录会议集合
研究论文
开放式访问

围棋:基于频道的节目的生动性和安全性

出版:2017年1月1日出版历史

摘要

Go是一种生产级静态类型编程语言,其设计特点是显式消息传递原语和轻量级线程,使(并鼓励)程序员开发并发系统,其中组件通过通信而不是基于锁的共享内存并发进行交互。Go只能在运行时检测全局死锁,但不能提供编译时保护来防止所有常见的通信不匹配或部分死锁。

这项工作为Go程序中的有界活性和安全性开发了一个静态验证框架,能够检测一类实际并发程序中的通信错误和部分死锁,包括具有动态通道创建和无限递归的程序。我们的方法从围棋项目中推断出它作为一种行为类型的传播模式的忠实表现。通过检查对频道使用的语法限制(称为围栏),我们可以确保程序由有限多个不同的通信模式组成,这些通信模式可以无限多次重复。此限制允许我们实现有界验证过程(类似于有界模型检查),以检查类型中的活动性和安全性,而这些类型又近似于Go程序中的活动度和安全性。我们已经在工具库中实现了类型推断、活性和安全检查,并针对公开可用的Go程序进行了测试。

2017年2月27日更新。请参见注释。

跳过补充材料部分

补充材料

工具书类

  1. Golang并发模式的集合。https://github。com/stillwaterc/concurrency。谷歌学者谷歌学者
  2. 工具链。http://mrg.doc.ic.ac.uk/tools/gong。谷歌学者谷歌学者
  3. V.Agababov、M.Buettner、V.Chudnovsky、M.Cogan、B.Greenstein、S.McDaniel、M.Piatek、C.Scott、M.Welsh和B.Yin。Flywheel:谷歌移动网络数据压缩代理。2015年和2015年NSDI。谷歌学者谷歌学者数字图书馆数字图书馆
  4. D.G.安德森。使用ePaxos的经验:使用Go进行系统研究。2013https://da-data.blogspot.co.uk/2013/10/experience-with-epaxos-systems-research.html。谷歌学者谷歌学者
  5. 安德鲁·格兰德。通过通信共享内存。https://blog.golang.org/share-memory-by-communication(https://博客.golang.org/share-memory-by-communicating)。谷歌学者谷歌学者
  6. D.Brand和P.Zafiropulo。关于通信有限状态机。J.ACM,30:323-3421983年4月。谷歌学者谷歌学者数字图书馆数字图书馆
  7. N.Busi、M.Gabbrielli和G.Zavattaro。基于通道的计算中的复制与递归定义。2003年,ICALP’03,第133-144页。谷歌学者谷歌学者数字图书馆数字图书馆
  8. N.Busi、M.Gabbrielli和G.Zavataro。比较过程计算中的递归、复制和迭代。在ICALP’04中,第307–319页,2004年。谷歌学者谷歌学者交叉引用交叉引用
  9. L.Caires和F.Pfenning。会话类型为直觉主义线性命题。在CONCUR中,LNCS第6269卷,第222-236页。施普林格,2010年。谷歌学者谷歌学者数字图书馆数字图书馆
  10. L.Caires、F.Pfenning和B.Toninho。线性逻辑命题作为会话类型。计算机科学中的数学结构,26(3):367–4232016。谷歌学者谷歌学者交叉引用交叉引用
  11. M.Carbone、O.Dardha和F.Montesi。作为作曲锁自由的进步。《协调》,LNCS第8459卷,第49-64页。斯普林格,2014年。谷歌学者谷歌学者数字图书馆数字图书馆
  12. S.Chaki、S.K.Rajamani和J.Rehof。类型作为模型:模型检查消息传递程序。2002年POPL'02,第45-57页。谷歌学者谷歌学者数字图书馆数字图书馆
  13. M.Coppo、M.Dezani-Ciancaglini和N.Yoshida。面向对象语言的异步会话类型和进程。在2007年FMOODS,LNCS第4468卷,第1-31页。谷歌学者谷歌学者数字图书馆数字图书馆
  14. M.Coppo、M.Dezani-Ciancaglini、N.Yoshida和L.Padovani。动态交错多方会话的全球进展。MSCS,26(2):238–302,2016年。谷歌学者谷歌学者
  15. S.Debois、T.T.Hildebrandt、T.Slaats和N.Yoshida。具有有界和无界递归的协作过程的类型检查活性。《计算机科学中的逻辑方法》,12(1),2016年。谷歌学者谷歌学者
  16. B.菲茨帕特里克。go 1.5.1 linux/amd64死锁检测失败,2015年。https://github.com/golang/go/issues/12734#发布评论-142859447。谷歌学者谷歌学者
  17. E.Giachino、N.Kobayashi和C.Laneve。无界过程网络的死锁分析。在CONCUR中,LNCS第8704卷,第63-77页。斯普林格,2014年。谷歌学者谷歌学者
  18. C.霍尔。通信顺序过程。普伦蒂斯·霍尔,1985年。谷歌学者谷歌学者数字图书馆数字图书馆
  19. K.Honda、V.T.Vasconcelos和M.Kubo。结构化通信编程的语言原语和类型规程。在ESOP’98中,LNCS第1381卷,第22-138页。Springer-Verlag,1998年。谷歌学者谷歌学者数字图书馆数字图书馆
  20. K.本田、N.吉田和M.卡本。多方异步会话类型。在POPL'08中,第273-284页。ACM,2008年。JACM中的完整版本:63(1-9):1–672016。谷歌学者谷歌学者数字图书馆数字图书馆
  21. H.Hüttel、I.Lanese、V.T.Vasconcelos、L.Caires、M.Carbone、P.-M Deniélou、D.Mostrous、L.Padovani、A.Ravara、E.Tuosto、H.T.Vieira和G.Zavataro。会话类型和行为合同的基础。ACM计算。调查。,49(1):3:1:3:362016年4月。谷歌学者谷歌学者数字图书馆数字图书馆
  22. A.Igarashi和N.Kobayashi。微积分的通用类型系统。西奥。计算。科学。,311(1-3):121–163, 2004.谷歌学者谷歌学者数字图书馆数字图书馆
  23. N.小林。微积分的基于类型的信息流分析。《学报》,42(4-5):291-3472005。谷歌学者谷歌学者数字图书馆数字图书馆
  24. N.小林。一种新型的无死锁过程系统。在2006年CONCUR,LNCS第4137卷,第233-247页,2006年。谷歌学者谷歌学者数字图书馆数字图书馆
  25. N.Kobayashi和D.Sangiorgi。移动进程的无锁混合型系统。托普拉斯,32(5):16:1–16:49,2008年5月。谷歌学者谷歌学者数字图书馆数字图书馆
  26. N.Kobayashi、K.Suenaga和L.Wischik。p-演算的资源使用分析。计算机科学中的逻辑方法,2(3),2006。谷歌学者谷歌学者
  27. J.Lange、N.Ng、B.Toninho和N.Yoshida。本文的完整版本。可在https://arxiv.org/abs/1610.08843。谷歌学者谷歌学者
  28. J.Lange、E.Tuosto和N.Yoshida。从通信机器到图形编排。S.K.Rajamani和D.Walker,编辑,POPL'15,第221-232页。ACM出版社,2015年。谷歌学者谷歌学者数字图书馆数字图书馆
  29. R.Milner。《通信系统微积分》,《计算机科学讲义》第92卷。施普林格,柏林,1980年。谷歌学者谷歌学者数字图书馆数字图书馆
  30. R.Milner。沟通与并发。Prentice-Hall,Inc.,美国新泽西州上鞍河,1989年。谷歌学者谷歌学者数字图书馆数字图书馆
  31. R.Milner和D.Sangiorgi。倒钩相互模拟。ICALP编辑W.Kuich,LNCS第623卷,第685-695页。Springer-Verlag,1992年。谷歌学者谷歌学者数字图书馆数字图书馆
  32. I.Moraru、D.G.Andersen和M.Kaminsky。平等主义议会中有更多共识。SOSP’13,第358-372页,美国纽约州纽约市,2013年。ACM。谷歌学者谷歌学者数字图书馆数字图书馆
  33. N.Ng和N.Yoshida。并发Go-by-Global会话图合成的静态死锁检测。CC 2016,第174–184页。ACM,2016年。谷歌学者谷歌学者数字图书馆数字图书馆
  34. H.R.尼尔森和F.尼尔森。具有有限通信拓扑的高阶并发程序(扩展抽象)。在94年的POPL中,第84-97页。ACM,1994年。谷歌学者谷歌学者数字图书馆数字图书馆
  35. L.帕多瓦尼。线性π-微积分中的死锁和锁自由度。在T.A.Henzinger和D.Miller,编辑,CSL-LICS’14,第72:1–72:10页。ACM出版社,2014年。谷歌学者谷歌学者数字图书馆数字图书馆
  36. 罗伯·派克。Go并发模式,2012年。谷歌学者谷歌学者
  37. https://对话。golang.org/2012/concurrency.slide。谷歌学者谷歌学者
  38. 萨米尔·阿贾姆尼(Sameer Ajamni)。2013年高级围棋并发模式。https://talk.golang.org/2013/advconc.slide。谷歌学者谷歌学者
  39. 萨米尔·阿杰马尼(Sameer Ajmani)。《Go并发模式:管道和取消》,2014年。https://blog.golang.org/piples。谷歌学者谷歌学者
  40. D.Sangiorgi和D.Walker。π-演算:流动过程理论。剑桥大学出版社,2001年。谷歌学者谷歌学者数字图书馆数字图书馆
  41. K.Stadmüller、M.Sulzmann和P.Thiemann。基于静态跟踪的同步Mini-Go死锁分析。2016年APLAS。出现。谷歌学者谷歌学者交叉引用交叉引用
  42. K.Takeuchi、K.Honda和M.Kubo。一种基于交互的语言及其打字系统。在1994年巴黎,LNCS第817卷,第398–413页。Springer-Verlag,1994年。谷歌学者谷歌学者数字图书馆数字图书馆
  43. 围棋作者。有效执行。https://golang.org/doc/effective_go.html。谷歌学者谷歌学者
  44. B.Toninho、L.Caires和F.Pfenning。高阶过程、函数和会话:一元集成。2013年《员工持股计划》第350–369页。谷歌学者谷歌学者数字图书馆数字图书馆
  45. B.托尼尼奥、L.凯恩斯和F.普芬宁。会话型进程中的协同安全和非分散性。TGC’14,第159-175页,2014年。谷歌学者谷歌学者
  46. P.Wadler。提议作为会议。2012年,ICFP’12,第273-286页。谷歌学者谷歌学者数字图书馆数字图书馆
  47. S.Weirich和B.Yorgey。未绑定库。https://黑客攻击。haskell.org/package/unbound。谷歌学者谷歌学者

索引术语

  1. 围栏关闭:基于频道的节目的生动性和安全性

                      建议

                      评论

                      登录选项

                      检查您是否可以通过登录凭据或您的机构访问本文。

                      登录

                      完全访问权限

                      PDF格式

                      以PDF文件查看或下载。

                      PDF格式

                      电子阅读器

                      使用eReader联机查看。

                      电子阅读器