occam-pi:混合CSP和pi-calculus的最佳成分
|
[新闻|occam-pi型|下载|文档|漏洞|即将到来的太阳|出版物|链接]
Occam-pi和KRoC是正在进行的扩展(CSP)理念的研究的结果通过明智地包含pi-calculus的移动性特征来实现occam。在出于可证明性的利益,我们一直在谨慎地保持区别在原始的简单静态点到点同步通信之间occam和pi-calculus的动态异步多路通信;在这方面,我们准备牺牲pi-calculus优雅的稀疏性。我们推测,引入的额外复杂性(和纪律)将使更容易证明并发和分布式程序的任务。
Kent可重定向occam编译器(KRoC)是一个occam/occam-pi语言平台,由occam编译器、本机代码转换器和支持运行时系统组成。
本页记录了开源(GNU(全球导航单元)
通用公共许可证(GPL)和图书馆通用公共许可证(LGPL))KRoC版本,当前支持运行Linux或FreeBSD的基于Intel/i386的计算机。二进制版本的KRoC版本(即不要支持occam-pi扩展)可用于Solaris/SPARC、OSF/Alpha和Parsytec/PowerPC,从WoTUG站点.
CSP具有复合语义和指称语义,这意味着它允许模块化和增量开发(细化)即使是并发组件。反过来,这意味着我们得到当我们并行运行进程时,这并不奇怪(因为它们的点所有各方都必须明确处理交互的这些交互)。这根本不是标准情况线程和锁并发,没有正式的指称语义和我们一直感到惊讶。
然而,我们需要一些扩展来描述某些新的动态-这就是我们讨论pi-calculus的地方。明确地,我们希望允许过程网络发展,改变其拓扑,在不丢失语义的情况下应对增长和衰退或结构完整性。我们希望解决流程的移动性问题,渠道和数据,并了解这些想法之间的关系。我们希望保留对此类系统进行推理的能力,保留精化的概念。
此版本的occam编译器支持新的occam-pi型语言的版本。新功能包括:
- 移动和非-移动障碍物
- 移动过程类型、通信和分配
- 移动信道类型、通信和分配
- 移动数据类型、通信和分配
- 运行时大小移动阵列
- 运行时大小标准复制器
- 叉子ed动态流程创建
- 自我诅咒PROC公司秒
- 用户的使用协议其他中的协议定义
- 变体(标记)协议继承
- 32个优先级的进程优先级支持
- 用户定义的通道,用于将通道通信与外部代码连接
- 具有不同优化级别的新代码生成器
- 更好地集成用户代码和运行时内核
- 未定义(和未分配)变量使用检查
- 70纳秒上下文开关/通信时间(在800 MHz.P3上)
- 20纳秒的进程启动/关闭时间(在800 MHz.P3上)
- 延长会合时间
- 步骤复制器的大小:例如``PAR i=<start>FOR<count>STEP<stead>''
- 数组构造函数表达式:例如``x:=[i=0表示尺寸x|f(i)]''
- 通道方向说明符:例如``PROC foo(INT通道输入?,输出!)''
- 这个第页,共页关键字现在是可选的:例如``PROC foo(CHAN INT输入?,输出!)''
更多信息与occam-pi的新语言扩展有关。KRoC的其他信息,包括参考手册(目前大多是偶然发生的,不是occam-pi),新occamdoc工具的标准、开发说明和其他上编程语言和系统组Wiki.
KRoC的开源版本可用作tarball:
注:这个版本现在很旧了。如果您打算使用较新的语言的特点,我们建议您遵循此处的说明,安装更新版本的KRoC。
下载后,解压缩tarball,将其更改为`克洛克-版本'目录并运行`建造'用于编译和安装KRoC的脚本:
猛击$焦油-xvzf kroc-1.4.0.tar.gz
克罗克-1.4.0/
kroc-1.4.0/建筑
猛击$cd克朗-1.40
猛击$./内部版本
KRoC安装配置
1-7用于更改路径,A-E用于切换/设置功能,Ctrl-C用于中止,
返回以确认并安装:
默认情况下,KRoC将自己安装在源树中。要选择其他安装目录,请输入1在提示符下,再次出现提示时,键入所需的目录。配置的其他部分可以用类似的方式设置。要使用默认设置进行安装,只需按return。可以通过按Ctrl-C随时中止生成过程--当`建造“是重新运行的,它不会重新构建已经编译好的东西。有关建筑KRoC的详细信息:
猛击$./build--帮助
注释:如果安装成功完成`建造'脚本将显示消息--请仔细阅读因为它包含与包裹相关的重要信息。你还应该阅读顶层`自述文件'文件。
各种示例程序可以用以下方法构建:
猛击$./内部版本示例
示例程序现在安装在“kroc特定文件”目录下(如配置中所示)。目前有:
号码簿 | 描述 |
示例/课程/ | 课程库示例程序、演示和occam练习的一些模型答案 |
示例/同步/ | 同步原语示例 |
示例/udc/ | 用户定义频道示例程序 |
示例/cif/ | C接口示例程序 |
示例/演示/ | “better-bar”示威者 |
示例/bsc/ | 文件/套接字/进程示例(用于阻塞系统调用) |
示例/dynproc/ | 动态可加载流程示例 |
示例/sdlraster/ | SDLRaster示例程序 |
源树可以通过运行`./build清除'.这不会删除任何已安装的内容,但会删除任何示例程序和生成的cgtest(已生成使用`./内部版本示例'和`./构建cgtests')。
大部分KRoC文档都是以文本/HTML文件和UNIX手册页的形式提供的。在KRoC 1.3.3及以上版本中,标准“课程”除了Inmos库的最小手册页(仅详细说明PROC/FUNCTION接口并给出图书馆的简要描述)。与KRoC相关的文件安装在指定的“KRoC特定文件”目录下文件/.
如果你是KRoC的新手,你应该阅读KRoC入门页面(发行版中包含文本版本作为基本上-kroc.txt). 本文介绍了occam-pi程序的基本知识以及如何用KRoC编译。
以下文档是在线的(也包括在分发中):
如果您在Linux系统上编译或安装KRoC时遇到问题,我们可能会提供帮助。当`建造'脚本运行后离开在名为`打字稿'(位于分发的顶级目录中)。如果编译失败,此文件将具有错误消息的副本。将此文件作为附件通过电子邮件发送到ofa-bugs@kent.ac.uk。也请在电子邮件中包含任何相关信息,例如:硬件/处理器(`cat/proc/cpuinfo'); Linux内核版本(`cat/proc/版本',或`找到对应内核版本); 以及您正在使用的发行版的名称和版本(例如“Debian stable”)。
拥有完整的打字文件通常很有帮助。要获得此信息,请执行“distclean”,然后重新构建分发版:
猛击$./build分布式清理
猛击$./构建
KRoC安装配置
1-7用于更改路径,A-E用于切换/设置功能,Ctrl-C用于中止,
返回以确认并安装:
有一个讨论occam/KRoC相关问题的邮件列表,occam-com@kent.ac.uk。这是一个封闭列表,请订阅邮件皮特·韦尔奇.
KRoC开源版本正在不断开发中。计划在未来版本中添加/扩展以下内容,并且可能已经在中得到部分支持开发版本:
- 移动IEE文件“优先动态通信和移动流程”中描述的流程类型,在下面
- Linux/MIPS的KRoC目标(MIPS-II及以上版本为32位)
- Solaris/Sparc的KRoC目标(gcc,32位)
- Linux/PPC的KRoC目标(gcc,32位)
与KRoC项目相关的所有出版物都可以在本页上找到:http://www.cs.kent.ac.uk/research/groups/sys/kroc.html.