Presentation is loading. Please wait.

Presentation is loading. Please wait.

Erlang emulator 实现分析 mryufeng@gmail.com 2007/10.

Similar presentations


Presentation on theme: "Erlang emulator 实现分析 mryufeng@gmail.com 2007/10."— Presentation transcript:

1 Erlang emulator 实现分析 2007/10

2 Erlang vm + bif + 基础设施 整个erlang系统的核心实现 尺寸很小 适合于嵌入式
emulator是什么 Erlang vm + bif + 基础设施 整个erlang系统的核心实现 尺寸很小 适合于嵌入式

3 emulator的特性 高性能 分布式 支持多核

4 emulator的物理结构 erlexec escript … tty_sl ram_file_drvzlib_drv udp_inet
tcp_inet Efile async Beam Driver Sys Utilts beam Beam.smp Beam.hybird erlexec escript Unix Windows

5 emulator的类型 Beam Beam.smp Beam.hybird

6 Emulator的运行期 单个smp 多个smp情况
erl_start->erl_init->process_main->schedule->sys_schedule

7 Beam的物理模块 Beam目录下的.c .h 这部份基本上是可移植的

8 Process是调度的单元 轻量设计 无耦合 通过message交换信息

9 线程协调multi_scheduling
可以按需开N个 scheduler 随时停止所有线程进行维护

10 内存分配策略 : binary_alloc D: std_alloc E: ets_alloc F: fix_alloc
H: eheap_alloc L: ll_alloc M: mseg_alloc S: sl_alloc T: temp_alloc Y: sys_alloc

11 dist Pid(x,y,z) 节点间通讯 透明实现

12 erl_ext_dist.txt Dist 和 cnode 原理

13 详细的系统运行器信息 erl_crash.dump 丰富的内容
Info模块 详细的系统运行器信息 erl_crash.dump 丰富的内容

14 Benchmark 用于测量系统运行器的情况

15 erlang term strorage Hash和tree实现 Match vm
ets erlang term strorage Hash和tree实现 Match vm

16 对信号的处理 SIGINT SIGUSR1 SIGUSR2 在单独线程处理信号

17 用指针来分辨类型 内部格式和外部格式 是GC回收
Eterm数据结构 用指针来分辨类型 内部格式和外部格式 是GC回收

18 某些表格在源码里面找不到 Make的时候调用utility 程序动态生成的
表格和代码生成器 某些表格在源码里面找不到 Make的时候调用utility 程序动态生成的

19 针对Process的Message 进行的回收 针对普通的eterm进行的回收
垃圾回收 针对Process的Message 进行的回收 针对普通的eterm进行的回收

20 Port是erlang程序自己操作的界面 Driver是功能的实现 Io poller是 port和外部通讯的推动力
Port & Driver Port是erlang程序自己操作的界面 Driver是功能的实现 Io poller是 port和外部通讯的推动力

21 代码热部署原理 Moudle Driver dll

22 系统微调 命令行参数 环境变量 运行期信息获取

23 结束 谢谢大家


Download ppt "Erlang emulator 实现分析 mryufeng@gmail.com 2007/10."

Similar presentations


Ads by Google