Why do OS not support erlang's lightweight process?
Jacobo G. Polavieja
Sat Sep 2 05:35:07 CEST 2006
Tony Finch wrote:
> On Tue, 29 Aug 2006, lang er wrote:
>> If OS support erlang's lightweight process in kernel, many programming
>> languages could have erlang's concurrent capability.I think it is not
> The reason that Erlang processes are lightweight is that they do not
> require a context switch from userland -> kernel -> userland in order to
> schedule the next thread. Erlang can rely on the properties of the
> language, specifically no shared mutable data, in order to isolate
> processes from each other. The kernel must use the CPU's virtual memory
> support to do this, because it cannot make assumptions about the languages
> used to write userland processes, and switching pages tables is expensive.
> There have been some experiments with single-address-space operating
> systems, which should in principle be able to context switch faster (they
> only need to change the page table access rights, not the virtual -> real
> address mapping) but current CPUs are not optimised for this kind of
> design, so it isn't an advantage in practice. It also requires a 64 bit
> address space to be practical.
And wouldn't it be possible to implement a similar threading system in
other VM like, say, CLR (Mono VM)?
There lots of base differences from the Mono Framework to Erlang, but
maybe it's easier to implement more effective ways of concurrency with
VMs than with traditional languages. If so, MonoThreads, at present, map
to POSIX Threads, and that's something I would like to see improved now
that I'm starting to discover some of Erlang's benefits such as its
Right now there are some people making efforts such as MicroThreading
(which I'll have to read further through), and Continuations (which seem
to be similar also to MicroThreads). I just don't have any valuable
information on performance compared to POSIX Threads (well, MicroThreads
seem to be more efficient, but it's quite experimental), and neither any
comparison to other concurrency systems such as Erlang's.
Just in case someone is interested:
Sorry if I talked too much about Mono and this isn't the place to do it,
but is another of my bigger interests in software and I can't help
imagining new ways of improving it. I wish it had some of the benefits
Erlang offers. But nothing is perfect!
After this big chunk of speech, if anyone wants to bring up any
information it would make enormously happy.
More information about the erlang-questions