Erlang emulator  实现分析 [email_address] mail.com 2007/10
emulator 是什么 <ul><ul><li>Erlang vm + bif +  基 础设施 </li></ul></ul><ul><ul><li>整个 erlang 系 统的核心实现 </li></ul></ul><ul><ul><li...
emulator 的特性   <ul><ul><li>高性能 </li></ul></ul><ul><ul><li>分布式 </li></ul></ul><ul><ul><li>支持多核 </li></ul></ul>
emulator 的物理 结构 <ul><ul><li>erlexec </li></ul></ul><ul><ul><li>escript </li></ul></ul><ul><ul><li>… </li></ul></ul>beam Be...
emulator 的 类型 Beam Beam.smp Beam.hybird
Emulator 的运行期 <ul><ul><li>单个 smp </li></ul></ul><ul><ul><li>多个 smp 情况 </li></ul></ul><ul><ul><li>erl_start->erl_init->proc...
Beam 的物理模 块   Beam 目 录下的 .c .h 这部份基本上是可移植的
Process <ul><ul><li>Process 是 调度的单元 </li></ul></ul><ul><ul><li>轻量设计 </li></ul></ul><ul><ul><li>无耦合 </li></ul></ul><ul><ul>...
线程协调 multi_scheduling <ul><ul><li>可以按需开 N 个   scheduler </li></ul></ul><ul><ul><li>随 时停止所有线程进行维护 </li></ul></ul>
内存分配策略 <ul><ul><li>: binary_alloc  </li></ul></ul><ul><ul><li>D: std_alloc  </li></ul></ul><ul><ul><li>E: ets_alloc  </li>...
dist <ul><ul><li>Pid(x,y,z) </li></ul></ul><ul><ul><li>节点间通讯   </li></ul></ul><ul><ul><li>透明 实现 </li></ul></ul>
erl_ext_dist.txt  <ul><ul><li>Dist  和   cnode  原理 </li></ul></ul>
Info 模 块   <ul><ul><li>详细的系统运行器信息 </li></ul></ul><ul><ul><li>erl_crash.dump  丰富的内容 </li></ul></ul>
Benchmark <ul><ul><li>用于 测量系统运行器的情况   </li></ul></ul>
ets <ul><ul><li>erlang term strorage </li></ul></ul><ul><ul><li>Hash 和 tree 实现 </li></ul></ul><ul><ul><li>Match vm </li></...
对信号的处理   SIGINT SIGUSR1 SIGUSR2 在 单独线程处理信号
Eterm 数据 结构 <ul><ul><li>用指 针来分辨类型 </li></ul></ul><ul><ul><li>内部格式和外部格式 </li></ul></ul><ul><ul><li>是 GC 回收 </li></ul></ul>
表格和代 码生成器 <ul><ul><li>某些表格在源 码里面找不到 </li></ul></ul><ul><ul><li>Make 的 时候调用 utility  程序 动态生成的 </li></ul></ul>
垃圾回收 <ul><ul><li>针对 Process 的 Message  进行的回收 </li></ul></ul><ul><ul><li>针对普通的 eterm 进行的回收 </li></ul></ul>
Port & Driver  <ul><ul><li>Port 是 erlang 程序自己操作的界面 </li></ul></ul><ul><ul><li>Driver 是功能的 实现 </li></ul></ul><ul><ul><li>Io...
代 码热部署原理 <ul><ul><li>Moudle  </li></ul></ul><ul><ul><li>Driver dll </li></ul></ul>
系 统微调 <ul><ul><li>命令行参数 </li></ul></ul><ul><ul><li>环境变量 </li></ul></ul><ul><ul><li>运行期信息 获取 </li></ul></ul>
结束 谢谢大家
Upcoming SlideShare
Loading in …5
×

Erlang Emulator Implementation

1,577 views

Published on

Erlang Emulator Implementation

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,577
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Erlang Emulator Implementation

  1. 1. Erlang emulator 实现分析 [email_address] mail.com 2007/10
  2. 2. emulator 是什么 <ul><ul><li>Erlang vm + bif + 基 础设施 </li></ul></ul><ul><ul><li>整个 erlang 系 统的核心实现 </li></ul></ul><ul><ul><li>尺寸很小 适合于嵌入式 </li></ul></ul>
  3. 3. emulator 的特性 <ul><ul><li>高性能 </li></ul></ul><ul><ul><li>分布式 </li></ul></ul><ul><ul><li>支持多核 </li></ul></ul>
  4. 4. emulator 的物理 结构 <ul><ul><li>erlexec </li></ul></ul><ul><ul><li>escript </li></ul></ul><ul><ul><li>… </li></ul></ul>beam Beam.smp Beam.hybird Beam Driver Sys Utilts Unix Windows … tty_sl ram_file_drvzlib_drv udp_inet tcp_inet Efile async
  5. 5. emulator 的 类型 Beam Beam.smp Beam.hybird
  6. 6. Emulator 的运行期 <ul><ul><li>单个 smp </li></ul></ul><ul><ul><li>多个 smp 情况 </li></ul></ul><ul><ul><li>erl_start->erl_init->process_main->schedule->sys_schedule </li></ul></ul>
  7. 7. Beam 的物理模 块 Beam 目 录下的 .c .h 这部份基本上是可移植的
  8. 8. Process <ul><ul><li>Process 是 调度的单元 </li></ul></ul><ul><ul><li>轻量设计 </li></ul></ul><ul><ul><li>无耦合 </li></ul></ul><ul><ul><li>通 过 message 交 换信息 </li></ul></ul>
  9. 9. 线程协调 multi_scheduling <ul><ul><li>可以按需开 N 个 scheduler </li></ul></ul><ul><ul><li>随 时停止所有线程进行维护 </li></ul></ul>
  10. 10. 内存分配策略 <ul><ul><li>: binary_alloc </li></ul></ul><ul><ul><li>D: std_alloc </li></ul></ul><ul><ul><li>E: ets_alloc </li></ul></ul><ul><ul><li>F: fix_alloc </li></ul></ul><ul><ul><li>H: eheap_alloc </li></ul></ul><ul><ul><li>L: ll_alloc </li></ul></ul><ul><ul><li>M: mseg_alloc </li></ul></ul><ul><ul><li>S: sl_alloc </li></ul></ul><ul><ul><li>T: temp_alloc </li></ul></ul><ul><ul><li>Y: sys_alloc </li></ul></ul>
  11. 11. dist <ul><ul><li>Pid(x,y,z) </li></ul></ul><ul><ul><li>节点间通讯 </li></ul></ul><ul><ul><li>透明 实现 </li></ul></ul>
  12. 12. erl_ext_dist.txt <ul><ul><li>Dist 和 cnode 原理 </li></ul></ul>
  13. 13. Info 模 块 <ul><ul><li>详细的系统运行器信息 </li></ul></ul><ul><ul><li>erl_crash.dump 丰富的内容 </li></ul></ul>
  14. 14. Benchmark <ul><ul><li>用于 测量系统运行器的情况 </li></ul></ul>
  15. 15. ets <ul><ul><li>erlang term strorage </li></ul></ul><ul><ul><li>Hash 和 tree 实现 </li></ul></ul><ul><ul><li>Match vm </li></ul></ul>
  16. 16. 对信号的处理 SIGINT SIGUSR1 SIGUSR2 在 单独线程处理信号
  17. 17. Eterm 数据 结构 <ul><ul><li>用指 针来分辨类型 </li></ul></ul><ul><ul><li>内部格式和外部格式 </li></ul></ul><ul><ul><li>是 GC 回收 </li></ul></ul>
  18. 18. 表格和代 码生成器 <ul><ul><li>某些表格在源 码里面找不到 </li></ul></ul><ul><ul><li>Make 的 时候调用 utility 程序 动态生成的 </li></ul></ul>
  19. 19. 垃圾回收 <ul><ul><li>针对 Process 的 Message 进行的回收 </li></ul></ul><ul><ul><li>针对普通的 eterm 进行的回收 </li></ul></ul>
  20. 20. Port & Driver <ul><ul><li>Port 是 erlang 程序自己操作的界面 </li></ul></ul><ul><ul><li>Driver 是功能的 实现 </li></ul></ul><ul><ul><li>Io poller 是 port 和外部通 讯的推动力 </li></ul></ul>
  21. 21. 代 码热部署原理 <ul><ul><li>Moudle </li></ul></ul><ul><ul><li>Driver dll </li></ul></ul>
  22. 22. 系 统微调 <ul><ul><li>命令行参数 </li></ul></ul><ul><ul><li>环境变量 </li></ul></ul><ul><ul><li>运行期信息 获取 </li></ul></ul>
  23. 23. 结束 谢谢大家

×