赵翔鹏的Blog -- Zhao Xiangpeng's Think-pad


载入中

我的分类
载入中
日志更新
载入中
最新评论
载入中
站内搜索
留言板
载入中
链接
管理我的BLOG
载入中
Blog信息
载入中

[rss] (推荐!)
(不推荐)

进程代数的几种有用扩展
翔 发表于 2007-1-24 10:08:00
Some Useful Extensions of Process Algebras

CSP、CCS这两种经典进程代数的表达能力有时并不能满足我们的要求,因此人们不断对其进行扩展,比如Pi Calculus就是对CCS加入了mobility,即通道传通道的功能。最近因工作需要,收集了一些进程代数扩展的文章,列举如下:
  • broadcast
经典进程代数只支持一对一通讯。若要实现广播、多播,可以参考A Broadcast-based Calculus for Communicating Systems,和A Calculus of Broadcasting Systems. 这里实现broadcast的思路就跟在以太网上做broadcast一样:操作语义中c!和c?通讯后,要把c!写到箭头上,而不是写一个内部动作\tau。这样可以把c!信号传递给下一个可能的接收者。
  • priority
操作系统中运行的进程支持优先级的概念,但优先级也是经典进程代数中缺少的一个东西。这方面的扩展可以参考Priority in Process Algebras一文。这里的想法是进程仍然有固定的优先级,但通讯操作则有不同的优先级。文章讨论了一个看似自然但是错误的语义,然后给出了一个正确的语义,关键是除了普通的\tau之外,还要定义一个“高优先级”的\tau。文章还指出优先级的概念其实可以分为静态的、动态的、全局的、局部的等等,分别需要定义不同的语义。
  • forced termination
根据BPEL规范,如果并行进程的一支出错需要终止,要把其他分支也杀掉。这个就叫做forced termination。实现技术其实不是很困难,在我们的文章Semantics of BPEL4WS-like fault and compensation handling里就有,此处略。
  • action trace
学CSP时我们知道,trace不能表达进程全部的语义,比如内部选择和外部选择就不能通过trace来区分,因而标准的做法是加入failure/divergence这个复杂的模型。其实有一个更好的办法,就是对trace稍作改造,通过巧妙的语义定义(加入一个idling action \delta),就可以在统一的trace框架下表达全部语义,无需引入多余的failure/divergence概念。文章可以参考Retracing the Semantics of CSP,以及Traces, Pomsets, Fairness and Full Abstraction for Communicating Processes。虽然idea非常好,但是这两篇文章写的不是很清楚,还要好好想想。
  • resource allocation
这个在上面提到的Retracing the Semantics of CSP中就有定义。作者说action trace的一大好处就是非常容易扩展。此外还有一篇文章Towards A Truly Concurrent Model for Processes Sharing Resources,应该更全面。
  • asynchronous communication
这个我还没有仔细研究。Retracing the Semantics of CSP也提出了一个解决方案,看起来非常简洁,但是其正确性还值得怀疑……

总结:这篇blog对进程代数的扩展作了个小survey。内容不是很全,比如real time什么的都没有提到。不知道有没有类似的文章?如果没有,说不定就可以去投稿了,呵呵。

阅读全文 | 回复(2) | 引用通告 | 编辑
 

Re:进程代数的几种有用扩展
icebaby(游客)发表评论于2007-9-4 8:30:00
icebaby(游客)请问FDR如何安装阿?那个licence怎么申请?谢谢

个人主页 | 引用 | 返回 | 删除 | 回复
 

Re:进程代数的几种有用扩展
游客(游客)发表评论于2007-1-25 20:52:00
游客(游客)等着阅读你的“投稿”。

个人主页 | 引用 | 返回 | 删除 | 回复
 

发表评论:
载入中
Powered by Oblog.