Was ist der technische Unterschied zwischen Daemon, Service und Prozess?

121

Ich möchte wissen, welche Unterschiede im Verhalten eines unter Ubuntu ausgeführten Daemons, Prozesses und Dienstes bestehen.

krupal6022
quelle
3
Dies passt besser zu StackOverflow, wo es bequemerweise bereits abgefragt und beantwortet wurde .
Tom Brossman
5
@Tom: Nein, dieser SE-Beitrag antwortet nicht, was ein Dienst ist. Und insgesamt sind die Antworten hier ausführlicher.
Mads Skjern
3
@TomBrossman, Der von Ihnen verlinkte Beitrag spricht nichts von Diensten .
Pacerier
4
Bei StackOverflow geht es um Codierung. deamons sind eine unix sache, es gibt keinen besseren
ort
1
Huh? Wie konnte diese Frage jemals geschlossen werden?
Jacob Vlijm

Antworten:

123

Daemons - Daemon steht nicht für Disk and Execution Monitor ( http://www.takeourword.com/TOW146/page4.html ). Dies sind die Prozesse, die im Hintergrund ausgeführt werden und nicht interaktiv sind. Sie haben kein steuerndes Terminal.

Sie führen bestimmte Aktionen zu vordefinierten Zeiten oder als Reaktion auf bestimmte Ereignisse aus. In * NIX enden die Namen der Daemons mit d .

Dienste - In Windows werden Daemons als Dienste bezeichnet .

Wenn Sie sich fragen, warum * NIX einen Befehl namens service hat , wird er nur zum Ausführen von Init-Skripten verwendet (Kurzform für die Initialisierung von scriptrunlevel ).

Process - Process ist ein laufendes Programm. Zu einem bestimmten Zeitpunkt kann es entweder laufen , schlafen oder Zombie sein (abgeschlossener Prozess, aber warten, bis der übergeordnete Prozess den Rückgabewert abgerufen hat).

Quellen und weitere Informationen :

Grün
quelle
2
Prozesse haben unter Linux noch ein paar Zustände, hier ein exzellentes Diagramm: linux-tutorial.info/modules.php?name=MContent&pageid=84
Dietrich Epp
In dieser offiziellen Ubuntu-Dokumentation geht es um "Dienste", und ich denke, sie sprechen nicht über Windows! Soll ich es also einfach als Daemon lesen? help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern
1
Tatsächlich fragt OP nach Diensten in Ubuntu, während diese Antwort Dienste unter Windows beschreibt. Offensichtlich ist Anons Antwort die richtige
Mads Skjern,
gemäß serverfault.com/questions/129055/… Daemons und Services sind nicht dasselbe
Mr.Robot
41
  1. Ein Dämon ist ein Hintergrund, nicht-interaktives Programm . Es ist nicht mit der Tastatur und dem Display eines interaktiven Benutzers verbunden. Das Wort Daemon zur Bezeichnung eines Hintergrundprogramms stammt aus der Unix-Kultur. es ist nicht universell.

  2. Ein Dienst ist ein Programm, das über einen prozessübergreifenden Kommunikationsmechanismus (normalerweise über ein Netzwerk) auf Anforderungen anderer Programme reagiert. Ein Dienst ist das, was ein Server bereitstellt. Beispielsweise wird der NFS-Portzuordnungsdienst als separater Portzuordnungsdienst bereitgestellt, der als portmapdDämon implementiert ist .

    Ein Service muss kein Daemon sein, ist es aber normalerweise. In eine Benutzeranwendung mit einer grafischen Benutzeroberfläche könnte ein Dienst integriert sein, z. B. eine Dateifreigabeanwendung. Ein weiteres Beispiel ist der X Window-Dienst, der alles andere als im Hintergrund ausgeführt wird: Er übernimmt Bildschirm, Tastatur und Zeigegerät. Es handelt sich um einen Dienst, da er auf Anforderungen von Anwendungen (zum Erstellen und Bearbeiten von Fenstern usw.) reagiert, die sich auch an anderer Stelle im Netzwerk befinden können. Der X-Dienst reagiert jedoch auch auf jeden Tastendruck und jede Mausbewegung.

  3. Ein Prozess ist ein oder mehrere Ausführungsthreads zusammen mit den gemeinsam genutzten Ressourcen, von denen die wichtigsten der Adressraum und die Deskriptoren für offene Dateien sind. Ein Prozess erstellt eine Umgebung für diese Ausführungsthreads, die so aussieht, als hätten sie eine ganze Maschine für sich: Es handelt sich um eine virtuelle Maschine.

    Innerhalb eines Prozesses sind die Ressourcen anderer Prozesse und des Kernels unsichtbar und nicht direkt zugänglich (zumindest nicht für einen Thread, der User-Space-Code ausführt). Beispielsweise gibt es keine Möglichkeit, auf die geöffneten Dateien eines anderen Prozesses oder auf deren Speicherplatz zu verweisen. Es ist, als ob diese Dinge gar nicht existieren.

    Der Prozess und seine Beziehung zum Kernel und anderen Prozessen bilden möglicherweise die wichtigste Abstraktion in Unix-ähnlichen Betriebssystemen. Die Ressourcen des Systems sind in Prozesse unterteilt, und fast alles wird so verstanden, als würde es innerhalb des einen oder anderen Prozesses ablaufen.

Anon
quelle
Könnten Sie nicht den Speicher der anderen Prozesse abrufen, indem Sie direkt nach dem RAM des Systems fragen?
Pacerier
1
Ein Prozess kann im Allgemeinen nicht direkt nach dem RAM des Systems fragen. Moderne Betriebssysteme verwenden virtuelle Adressräume ( en.wikipedia.org/wiki/Virtual_address_space ), was bedeutet, dass jeder Prozess nur mit einer gefälschten Speicheransicht interagieren kann, bei der das Betriebssystem genau steuert, auf was zugegriffen werden kann.
Akroy
"Ein Prozess schafft eine Umgebung für diese Ausführungsthreads, die so aussieht, als hätten sie eine ganze Maschine für sich: Es handelt sich um eine virtuelle Maschine." Sehr schön ausgedrückt, habe noch nie so klar darüber nachgedacht. Aber natürlich ist die Abstraktion undicht. Ein Prozess, der die Zeit messen kann (was er sogar über den Prozessor tun kann), kann feststellen, dass er nicht allein auf der Maschine ist. Und natürlich bietet das Betriebssystem Mechanismen, um andere Prozesse aufzulisten.
Masterxilo