Erlang processes and OS processes
When discussing processes in the context of Erlang, we are usually referring to Erlang processes and not OS processes. There is a subtle but very important distinction between the two. OS processes are scheduled and controlled by, well, the operating system, or more correctly, the kernel. The kernel is tasked with queuing, dequeuing, marshalling data, memory allocation, and many other tasks required for smooth process execution. Erlang processes, on the other hand, are processes local to the Erlang VM (BEAM). ERTS is the proverbial kernel in this regard. It is in charge of the scheduling and management of these processes.
Another important distinction between these two is a question of weight. Typically, when thinking of OS processes, these are heavy, clunky objects to deal with, and forget about inter-process communication. Erlang processes are, in contrast, extremely lightweight. In fact, it is not uncommon for a single Erlang VM to have many thousands...