theBeamBook - The Erlang Runtime System

查看原文

本文是一本尚未完工的书,讲了 Erlang 底层是如何实现它的调度和解释器的。

  • Erlang 的最底层是 ERTS, 它掌管进程调度(Erlang 自己重写了整个专属于自己运行时的进程,有别于系统进程)
  • BEAM 是 Erlang 的虚拟机,用来执行指令。
  • Process 的本质是大约几百个 bytes 的数据结构,包含了进程控制的一些字段(PCB) 外加 Stack, Heap, Mailbox.
  • Mailbox 的本质是一个无锁消息队列。
  • Scheduling 的策略是抢占式调度,任一时刻 CPU 只执行一个进程,时间片花完了就推后去执行别的进程。它的内部维护了两个队列,一个专门维护被 receive message 堵塞的进程,另外一个维护可执行的进程。