`
vanadiumlin
  • 浏览: 504904 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Erlang ERTS的Trap机制的设计及其用途

 
阅读更多

erlang的trap机制在实现中用的很多,在费时的BIF操作中基本上都可以看到。它的实现需要erl vm的配合。它的作用基本上有3个:

1. 把费时操作分阶段做。由于erlang是个软实时系统,一个进程或者bif不能无限制的占用cpu时间。所以erlang的每个进程执行的时候,最多只能执行一定数量的指令.这个是设计方面的目标。实现上也要配套。所以比如md5,list_member查找这种可能耗时的操作都是用trap机制来实现的,也就是说 当进程调度到的时候 执行一定数量的计算 然后把上下文trap起来 放弃执行 等待下一次的调度 来继续计算。

2. 延迟执行,实现上层的决策。 明显的例子是 send操作。 send的时候 节点间可能未连接,所以这个send的操作不能继续,先trap, 然后在下一次的调度的时候 执行节点连接操作,一旦成功 send操作就继续往下执行。对客户来讲这个操作是透明的。他不知道你幕后的这些事情。

3. 主动放弃CPU yield.

erlang设计还是蛮细致的!

PS:涉及到费时操作的BIF有:
do_bif_utf8_to_list
ets_delete_1
spawn_3
monitor_2
spawn_link_3
spawn_opt_1
send_2
crc32_1
adler32_1
md5_1
send_3
build_utf8_return
build_list_return
finalize_list_to_list
do_bif_utf8_to_list
ets_select_reverse
ets_match_spec_run_r_3
re_run_3
re_exec_trap
keyfind
monitor_node_3.

分享到:
评论

相关推荐

    erlang-erts-19.3.6.4-1.el7.x86_64.rpm

    erlang-erts-19.3.6.4-1.el7.x86_64.rpm

    erts erlang api

    ### Erlang运行时系统应用(ERTS):匹配规格与API概述 #### 一、Erlang运行时系统应用(ERTS) Erlang运行时系统应用(ERTS)是...随着Erlang及其运行时系统的不断发展,ERTS将继续为开发者提供强大的工具和支持。

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    并行编程语言Erlang:Erlang OTP框架及其应用开发指南

    接着,文档深入讲解了Erlang OTP框架的核心概念,包括监督树、进程模型、行为模式和热代码升级机制。最后,文档通过具体的代码示例演示了如何使用Erlang OTP框架开发电话系统、即时通讯系统和分布式数据库应用,涵盖...

    erlang程序设计与入门

    OTP是Erlang的开发框架,提供了标准库、设计原则和工具,包括行为(如GenServer、GenEvent)、应用管理和错误处理机制等,帮助开发者构建更加稳定和可维护的系统。 8. **Eshell和REPL** Erlang的交互式Shell...

    Erlang程序设计,包含完整目录和全套源码

    这个压缩包包含了Erlang程序设计的完整目录和源码,是学习和理解Erlang编程的重要资源。 Erlang的并发特性源于其轻量级进程模型,每个进程都有自己的内存空间,进程间通信通过消息传递实现,这种设计降低了并发执行...

    erlang 设计指南

    **Erlang设计指南** Erlang是一种面向并发的、函数式编程语言,它由瑞典电信设备制造商Ericsson开发,主要用于构建高度可扩展和容错性强的分布式系统。"Programming Erlang: Software for a Concurrent World"是Joe...

    Erlang程序设计及源码

    本资源包含了一本Erlang程序设计的入门经典书籍及其配套源码,适合初学者深入理解Erlang编程。 1. **Erlang简介** Erlang以其强大的并发处理能力而闻名,它采用了轻量级进程模型,使得在单个系统中可以同时运行...

    [Erlang程序设计]源代码

    **Erlang程序设计源代码详解** Erlang是一种面向并发、函数式编程语言,尤其在分布式系统和高可用性领域表现出色。本资源包含了《Erlang程序设计》一书的所有实例代码,旨在帮助读者深入理解Erlang语言的核心特性和...

    inside Erlang VM3

    ### Erlang VM (Erlang虚拟机)深入解析 #### Erlang简介 Erlang是一种通用、并发、强容错的编程语言,最初由...通过深入了解Erlang VM的工作原理及其特性,我们可以更好地利用其优势来设计和实现高效可靠的系统。

    Erlang程序设计中文版

    书中会讲解如何设计健壮的系统,以及如何利用Erlang的错误处理机制来实现系统的高可用性。 5. **热代码升级**:Erlang支持在运行时替换代码,无需停止服务,这对于维护大型系统至关重要。这部分内容会介绍如何实现...

    erlang深度分析.pdf

    Erlang的虚拟机(VM)即Erlang Runtime System(ERTS),是Erlang系统运行的基础。它支持轻量级进程,提供了高效的并发处理能力。在性能方面,ERTS经过优化,能够在多种硬件架构上高效运行。进行VM的定量分析是了解...

    erlang的timer和实现机制

    在深入理解Erlang的timer模块的同时,还可以查阅《Erlang程序设计》这本书,它提供了更多关于Erlang语言特性和实践的详细信息。此外,提供的"erlang的timer和实现机制.pdf"和"更多erlang资料下载.txt"也是进一步学习...

    Erlang并发编程,Erlang程序设计,Erlang中文手册

    Erlang并发编程,Erlang程序设计,Erlang中文手册。 学习erlang的好资料。  Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此...

    Erlang程序设计(英文版)

    分布式编程在Erlang中和本地编程一样自然,因为Erlang虚拟机(VM)和Erlang运行时系统(ERTS)被设计为在分布式环境下工作。 Erlang的Mnesia数据库是一个可扩展的、非关系型、事务性数据库,它作为内存中的数据存储...

    Erlang程序设计及源代码打包

    **Erlang程序设计概述** Erlang是一种面向并发的、...总的来说,Erlang程序设计是一门深入探讨Erlang语言及其应用的课程,结合源代码实践,可以帮助你建立起坚实的基础,进而探索更高级的并发和分布式系统构建技术。

    erlang24.3.4

    本文提供centos系统下erlang的RPM安装包,版本为24.3.4.13

    Erlang程序设计中文版(完整书签).pdf

    6. Erlang运行时系统(ERTS):ERTS为Erlang程序提供执行环境,包括垃圾回收、线程管理、进程调度等底层服务。它经过优化,可以在多核处理器上有效运行。 7. OTP框架:开放电信平台(Open Telecom Platform)是一个...

Global site tag (gtag.js) - Google Analytics