1 / 23

Erlang emulator 实现分析

Erlang emulator 实现分析. mryufeng@g mail.com 2007/10. emulator 是什么. Erlang vm + bif + 基 础设施 整个 erlang 系 统的核心实现 尺寸很小 适合于嵌入式. emulator 的特性. 高性能 分布式 支持多核. emulator 的物理 结构. tty_sl ram_file_drvzlib_drv udp_inet tcp_inet Efile async. Beam Driver Sys Utilts. beam Beam.smp

maude
Download Presentation

Erlang emulator 实现分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. emulator的物理结构 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 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. Info模块 详细的系统运行器信息 erl_crash.dump 丰富的内容

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

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

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

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

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

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

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

  21. 代码热部署原理 Moudle Driver dll

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

  23. 结束 谢谢大家

More Related