进程代数

计算机学科术语

进程代数是关于通信并发系统的代数理论的统称。 20世纪70年代后期,英国学者RMnner和C. A.R,分别提出了通信系统演算和通信顺序进程,开创了用代数方法研究通信并发系统的先河。 此后这一研究方向兴盛不衰,出现了众多类似而又 相互区别的演算系统,如ACP(提出者J.A.Ber郎tra 和J.W.K10p),ATp(提出者M.H即n樱y),Meije(提出者G.Eudol,R.desi~),LOTC6等,统称为进程代数。

简介
计算机科学是个非常年轻的科学,非常多的研究至今可能都不超过50年,很多研究的都可以追溯到20世纪50年代,而那个时候从事计算机事业的大师们很多今天仍健在。所以相对而言,我们对与一些事情的历史可以更加细致地但不会过于冗长地进行介绍。通过本文,我希望读者了解到进程代数是什么,并可以在脑中形成一条简单的时间线,清楚地看到进程代数发生的历史。
这些代数理论都使用通信,而不是共享存储,作为进程之间相互作用的基本手段,表现出面向分布式系统的特征。 在语法上,进程代数用一组算子作为进程的构件。算子的语义通常用结构化操作语义方法定义, 这样进程就可看成是带标号的变迁系统。进程代数 的一个显著特征是把并发性归结为非确定性,将并 发执行的进程的行为看成是各单个进程的行为的所 有可能的交错合成,即所谓交错语义。 进程代数研究的核心问题是进程的等价性,即在什么意义下两个进程的行为相同?在进程代数领域使用的最为广泛的等价关系有互模拟、测试等价、 失败等价(参见通信顺序进程)等。对这些语义等价 关系均建立了相应的公理系统。关于公理系统的研 究不仅加深了对语义理论的理解,而且使得有可能 对语义等价关系进行形式推理。 为了将进程代数的理论成果应用于解决实际问题,20世纪80年代后期出现了许多计算机支持工具。用这些工具可对进程的行为进行推理或模拟。
历史
谈到进程代数,很多人会想到Petri-net,在进程代数之前,这个1962年由Petri发明的形式化方法是并行理论的唯一工具,用来研究并行和分布式系统。
1970年的时候,世界上关于计算(computation)的形式化推理方法,基本分为三种:
定义
进程代数英文为:process algebra,在英文中,这个词组中的process代表一个system(系统的)behavior(行为);一个系统就是一个能表现出各种行为的事物,在计算机世界,process主要指一个软件系统的行为;这句话很抽象,说白了就是,一个软件系统可以表现为一个动作(action),比如转换一个文件的格式,也可以发生一个个事件(event),比如格式转换完毕,另外,一个软件系统也可以在一定的序列下完成一系列动作(action);我们可以从各个角度(aspect)去观察一个系统的行为。研究者往往会关注一个角度的系统行为,这是他们会把系统进行抽象,称这种抽象为对系统行为的一种观察(observation)。
有一些研究人员,以这样的一个角度观察系统的行为:
系统由一大堆动作(action)组成;
动作之间都是离散的(discrete),独立的;
离散的意思是action发生在某一时间,各个action发生的时间是独立的,不相关的。
离散数学中,群(Group)是一个代数结构,它的运算符特性满足该群的约束要求,比如群(G,*)是一个代数系统,其中运算符*要满足结合律的要求,从群论的角度来看,进程代数是一个以进程为基本元素,并且进程上的运算符满足特定的约束的代数结构。
进程代数理论中提出了许多种模型,其中最早的(大约是20世纪中期)、最简单的模型是:将行为看做是一个带有输入/输出的函数,在进程开始时,给予一个输入值,在进程的执行过程中的某个时刻会给予外界它的某个输出值。这个模型是基于有穷自动机理论的,即每个process被看做一个自动机(automaton)【注:今天仍然有人将一个process看作自动机,进行研究】,一个自动机有很多状态(state)和迁移(transition),状态通过迁移进行状态之间之间的转换,这样,用自动机代表一个进程时,状态之间的迁移就代表进程执行了一个动作,所以迁移描述了进程的最基本行为,另外,一个自动机还可以有一个初始状态和多个终止状态。一次行为(behiour)就是一个自动机迁移的实例,即从初始态到达某一个终止态的具体路径过程。
但是后来,人们发现这种自动机模型并不能完全表达一个系统的行为,它无法描述两个系统之前的交互行为,也就是说自动机无法用来描述并行系统或分布式系统,或者说反应系统(reactive system)的行为。因此人们开始了并发理论(concurrency theory)研究,所以说并发理论是针对反应式、并行式或分布式系统的,这些系统与云计算也有重要的相关之处。
那么进程代数可以说是并行理论中的一个研究方向,所以我们在后面会看到,一种进程代数通常都会有一个基本的运算符——并行组合(parallel composition),这里组合(compostion)是指多个离散的动作的组合。除了并行的组合,还有带有选择分支的组合(alternative composition--choice)和按顺序组合(sequential composition--sequencing),这样,我们就可以对系统使用进程代数建模,然后通过代数的运算,方程推导进行分析和验证以判断系统是否满足我们所希望的特性。
我们使用加号“ +” 作为 alternative composition, 分号“;” 作为sequential composition,而双竖线“||” 表示 parallel composition.那么我们定义以下法则:
如果任何带有三个运算符的代数结构满足以上七条法则,那么就称这个代数为进程代数,这就是一个简单的进程代数的概念定义。
方法
Bekič
奥地利维也纳的IBM实验室在整个60年代和70年代都以其程序语言的定义和语义方面的研究而著称,这个期间Hans Bekič就工作在这里,他主要从事ALGOL和PL/I(相信学过计算机的同志对这些名词都有点眼熟)的指称语义方面的研究,但是针对PL/I的parallel composition运算符如何指定指称语义遇到了困难,他提出了一个类并行组合运算符(quasi-parallel composition operator),后来更正为并行组合运算符,并提出了一些其他的基本运算和概念,使得进程代数的一些基本概念开始浮现,但是还不成熟。
CCS
进程代数历史上最重要的人物是Robin Milner,1973至1980年间发明了CCS(Calculus of Communicating Systems,通信系统演算),是用于描述通信并发系统的代数理论。
CSP
中国的研究者
林惠民
林惠民院士主要从事软件的基础性研究。计算机是一种工具,大部分的人是在进行应用研究,即如何利用现有的理论和模型来开发出更有用的东西。而基础性研究与应用研究不同,它不仅要关心怎么样,还要知道为什么这样,要能够提出新的模型和方法。计算机软件科学的特点是基础研究和应用研究是紧密结合的,而且时效性非常强,基础研究的最新成果很快就会应用到工程中去。林惠民院士从事的一项工作是关于并发程序形式语义学形式化方法的研究。他和他的同事设计并实现了世界上第一个通用的进程代数验证工具。进程代数的实际应用离不开计算机辅助工具的支持。八十年代后期,一批进程代数验证工具应运而生(如CWB, PSF, LOTOSphere等),其共同局限性是每一工具只适用于某一特定的进程演算。这种局限性妨碍了验证工具的推广应用。如何克服这种局限性是当时国际进程代数界面临的一个重大挑战。这些验证工具无法做到通用,根本原因在于缺乏既能描述不同进程演算的语义,又能为计算机所理解的通用语言。经过对不同演算的反复比较,并考虑到在计算机上实现的可能性,他提炼出了一个元语言,用它可以描述各种进程演算的公理化语义,并且具有良好的可读性。在此基础上实现了通用的交互式进程代数验证工具PAM,只要将这个元语言描述的进程演算定义输入PAM,就得到该演算的证明器。PAM可同时接受多个不同的演算,对每个演算又可生成多个证明窗口。这是世界上第一个通用的进程代数证明工具。1993年他又利用当时刚刚取得的关于消息传送进程证明系统的理论结果,对PAM加以扩充,研制成迄今世界上唯一能对付消息传送进程的验证工具VPAM。PAM和VPAM都是通过ftp在Internet上公开发行的,其用户遍布各大洲,包括美国、加拿大、英、法、德、意、荷兰、丹麦、瑞典、斯洛伐克、巴西、印度、新西兰、南非等十几个国家,其中既有来自大学的,也有来自菲利普、惠普和贝尔等著名公司实验室的。
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市