Erlang实例及ERTS.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Erlang实例和ERTS Sequential Erlang(I) Sequential Erlang(II) Sequential Erlang(III) Sequential Erlang(and IV) Concurrent Erlang(I) Concurrent Erlang(and II) Distributed Erlang Error detection(I) Error detection(II) Error detection(and II) Erlang emulator 实现分析 emulator是什么 Erlang vm + bif + 基础设施 整个erlang系统的核心实现 代码成熟度 200K行C代码 几千行Erlang代码 同等的ACE框架 尺寸很小 适合于嵌入式 1.5M 也适合做桌面程序 如p2p emulator的特性 emulator的物理结构 Emulator的运行期 单个smp 多个smp情况 erl_start-erl_init-process_main-schedule-sys_schedule Beam的物理模块 Process Process是调度的单元 轻量设计 无耦合 通过message交换信息 线程协调multi_scheduling 可以按需开N个 scheduler 随时停止所有线程进行维护 内存分配策略 dist Pid(x,y,z) 节点间通讯 透明实现 erl_ext_dist.txt Dist 和 cnode 原理 Info模块 详细的系统运行器信息 erl_crash.dump 丰富的内容 Benchmark 用于测量系统运行器的情况 ets erlang term strorage Hash和tree实现 Match vm 对信号的处理 Eterm数据结构 用指针来分辨类型 内部格式和外部格式 是GC回收 表格和代码生成器 某些表格在源码里面找不到 Make的时候调用utility 程序动态生成的 垃圾回收 针对Process的Message 进行的回收 针对普通的eterm进行的回收 Port Driver Port是erlang程序自己操作的界面 Driver是功能的实现 Io poller是 port和外部通讯的推动力 代码热部署原理 Moudle Driver dll 系统微调 命令行参数 环境变量 运行期信息获取 经常的时候看大型工程的时候 碰到一二个地方实在不明白他是如何运作的 这时候最好的工具就是debugger 如gdb,的backtrace 可以得到完整的函数调用栈。在linux下推荐使用ddd, 俺的centos5 下标准版本没有安装ddd 顺手下载个安装就好了(标准版本却个motif-devel yum下就好)。ddd图形界面方便查看函数和变量,还有点击跳转功能。 附上几个调试erlang的脚本,希望能够方便大家。 1. [root@test98 ~]# cat gdb_beam #! /bin/bash ddd -x gdb.init /usr/local/lib/erlang/erts-5.5.5/bin/beam 2. [root@test98 ~]# cat gdb.init set arg -- -root /usr/local/lib/erlang -progname erl -- -home /root 3. ?[root@test98 ~]# tail .bash_profile -n 13 export PATH=$PATH:/usr/local/lib/erlang/erts-5.5.5/bin ROOTDIR=/usr/local/lib/erlang BINDIR=$ROOTDIR/erts-5.5.5/bin EMU=beam PROGNAME=`echo $0 | sed ‘s/.*\///’` export EMU export ROOTDIR export BINDIR export PROGNAME export EDITOR=vim export LANG=utf8 上面的脚本是针对beam 的。 如果你要调试beam.smp beam.hybrid 可以erl -smp true +K true -emu_args 得到参数 Executing: /usr/local/lib/erlang/erts-5.5.5/bin/beam.smp /usr/local/lib/erlang/erts-5.5.5/bin/beam.smp -K true -- -root /usr/local/lib/erlang -progname erl -- -

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档