面对软件错误构建可靠的分布式系统-8OTP介绍

 OTP介绍

开放电信平台(Open Telecom Platform, OTP)是为了构建和运行电信系统而设计的一个开发系统。图7.1给出了该系统的一个方块图,该图来自参考文献[66]。如图中所示,OTP系统是设计来运行在通常的操作系统之上的一个所谓的中间件平台

7.1OTP系统架构

OTP其实是在Ericsson内部开发的,但是其中大部分软件已经按照Erlang公开许可(Erlang public license1公布给了公共领域。

OTP的发布包含有如下一些部件:

            1Erlang的编译器和开发工具。

            2.适应多种不同目标环境的Erlang运行时系统。

            3.覆盖广泛的公共应用的一些库。

            4.实现公共行为模式的一组设计模式。

            5.用来学习如何使用该系统的一些教学资料。

            6.大量的文档。

 

1 非常类似于一个开源许可。


137

OTP已经被移植到了许多不同的操作系统上,包括所有的Unix类的系统(LinuxFreeBSDSolarisOS-X…),大多数的Windows操作系统(Windows 9598NT…)和一些VxWorks之类的嵌入式操作系统。

Erlang运行时系统是一个用来运行由Erlang BEAM编译器产生的中间码(intermediate code)的虚拟机。它同时也为Erlang编译器产生的本地码(native code)提供运行时支撑服务。

ErlangBEAM编译器自1998年后就取代了原始的JAM编译器。BEAM编译器[41,42]Erlang源代码编译成为32bit字宽的线索化解释器(threaded interpreter)使用的指令序列。而原始的JAM机是一个非线索化(non-threaded)字节码解释器(byte code interpreter)。

另外,为了提高效率,Erlang程序还可以用Uppsala大学开发的HIPE编译器[47]编译成本地码(native code)。编译成被解释执行的BEAM中间码的模块和编译成本地码的模块在模块级是可以自由混合的,即整个模块既可以被编译成BEAM码,也可以被编译成HIPE码,但是在模块内部,两种码不能混合。

BEAM机和HIPE机共同使用了Erlang运行时系统中关于内存管理、输入/输入、进程管理、垃圾收集等部件的代码。

Erlang运行时系统提供了许多传统上由操作系统提供的服务,所以,Erlang运行时系统远不仅仅提供纯序列化语言的运行时支撑,而比这要复杂得多。所有得Erlang进程都由Erlang运行时进程来管理——即使在一个Erlang运行时系统控制着数以万计的Erlang进程的时候,宿主操作系统也只会感到只有一个进程在运行,那就是Erlang运行时系统本身。

另一方面,与其他语言相比,Erlang的编译器又是相当简单的。编译通常只是一个从Erlang代码到一条合适的虚拟机原语的一个简单翻译。所以,例如Erlang中的spawn原语被翻译成虚拟机中的一条单独的操作码(opcode)(即spawn原语的实现),然后付出很大的努力使得操作码的实现尽量的高效。


138

7.1

OTP的发布包包含由一个很大的库集,为了发布的目的,其中所有的库都作为OTP应用的实例。例如发布包R9B(译注:Erlang/OTP的一个发布版本号)就包含如下这些应用:

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值