Was sind Erlang Prozesse hinter den Kulissen?
-
04-10-2019 - |
Frage
Ich habe sehr begrenztes Wissen über Erlang bekam, aber soweit ich verstehe, kann es „Prozesse“ mit einem sehr niedrigen Kosten erzeugen.
So frage ich mich, was sind die "Prozesse" hinter den Kulissen?
Sind sie Fibers? Themen? Fortsetzungen?
Lösung
Auch aus der Erlang doc:
Erlang Prozesse sind leicht (Wachsen und schrumpfen dynamisch) mit geringer Speicherbedarf, schnell zu erstellen und beenden, und die Zeitplanung Overhead gering ist.
Quelle: http://www.erlang.org/doc/reference_manual/processes .html
Sie können auch einen Blick auf diese haben wollen:
http://www.defmacro.org/ramblings/concurrency.html
Wenn man über Erlang Prozesse zu sprechen, heißt es:
Erlang Prozesse sind leicht Threads. Sie sind sehr billig zu starten und zerstören und sind sehr schnell zu Umschalten zwischen weil unter der Motorhaube sie sind einfach Funktionen. Ein typisches Erlang-System auf einem modernen Laufe Desktop-Computer kann zwischen viele Zehntausende solcher Prozesse. Prozesse werden alle paar geschaltet Dutzend Funktionsaufrufe, die macht schaltet weniger körnig sondern spart ein enorme Menge an Zeit, die normalerweise verschwendete auf Kontextwechsel.
Andere Tipps
Sie werden Leichte Prozesse .
Siehe auch meine Frage Technisch warum Prozesse in Erlang effizienter als OS-Threads .
Ich habe gefunden, keine endgültige Quelle, sondern von dem, was ich verstehe:
-
Es gibt einen Scheduler (zB oder mehrere Disponenten, dass Akt kooperativ), die bestimmt, welche erlang Prozess zu starten, auf dem OS Gewinde.
-
Diese Verfahren haben eine wachstumsfähige Stapel (vielleicht eine Präambel in jeweils Funktionen dass zuordnet, wenn nötig Stapel), so dass sie nicht verbrauchen zu viel Speicher, wenn sie es brauchen.
-
Sie geben zurück an den Scheduler je nachdem, ob sie sind Warten auf Daten oder haben für eine ausreichende Menge an Zeit ausgeführt (Vielleicht Präambelkode in einigen Prüfungen Funktionen, wie viel Zeit, um zu sehen verstrichen ist). Im Gegensatz zu Fäden, kommen sie nicht vorbelegt?
-
Jeder Prozess zuordnet Speicher von verschiedenen Seiten oder von einem verschiedene allocator, so ist es nicht möglich, den gemeinsamen Speicher zu (in ähnliche Art und Weise, dass OS vermeiden Sharing-Speicher verarbeitet).
-
Vermutlich hat auch getrennte Verteilern oder Seiten pro erlang Prozess würde auch helfen mit Garbage-Collection und in dem Fall, dass der Prozess endet, dann ist die Seiten können, ohne dass zu tun, jede Garbage Collection zurückgeführt werden: http://prog21.dadgum.com/16.html
Im Grunde sind sie Threads;) Ein Adressraum für sie
.