qual è la differenza tecnica tra demone, servizio e processo?


121

Voglio sapere quali sono le differenze nel comportamento di un demone, processo e servizio in esecuzione su Ubuntu.


3
Si adatta meglio a StackOverflow, dove è già stato chiesto e risposto convenientemente .
Tom Brossman,

5
@ Tom: No, quel post SE non risponde a cosa sia un servizio. E nel complesso le risposte qui sono più elaborate.
Mads Skjern,

3
@TomBrossman, il post che hai collegato non parla di servizi .
Pacerier,

4
StackOverflow riguarda la codifica. i deamon sono una cosa unix, non c'è posto migliore per chiedere che qui
Mr.Robot

1
Eh? come potrebbe mai essere chiusa questa domanda?
Jacob Vlijm,

Risposte:


123

Demoni - Demone non sta per Disk and Execution Monitor ( http://www.takeourword.com/TOW146/page4.html ). Sono i processi che vengono eseguiti in background e non sono interattivi. Non hanno un terminale di controllo.

Eseguono determinate azioni in momenti predefiniti o in risposta a determinati eventi. In * NIX, i nomi dei daemon terminano con d .

Servizi : in Windows, i demoni sono chiamati servizi .

Se ti stai chiedendo perché * NIX ha un comando chiamato service , viene usato solo per eseguire script di init (abbreviazione per inizializzazione scriptrunlevel ).

Processo : il processo è un programma in esecuzione. In un particolare istante di tempo, può essere in esecuzione , in sonno o in zombi (processo completato, ma in attesa che il processo padre raccolga il valore restituito).

Fonti e ulteriori informazioni :


2
I processi hanno qualche altro stato su Linux, ecco un diagramma eccellente: linux-tutorial.info/modules.php?name=MContent&pageid=84
Dietrich Epp

Questo pezzo di documentazione ufficiale di Ubuntu parla di "servizi" e penso che non stiano parlando di Windows! Quindi dovrei solo leggerlo come demone? help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern il

1
In effetti OP chiede servizi all'interno di Ubuntu, mentre questa risposta parla di servizi su Windows. Quindi, ovviamente, la risposta di Anon è quella corretta
Mads Skjern il

secondo serverfault.com/questions/129055/… demoni e servizi non sono gli stessi
Mr.Robot

41
  1. Un demone è uno sfondo, non interattivo del programma . È staccato dalla tastiera e dal display di qualsiasi utente interattivo. La parola demone per indicare un programma in background deriva dalla cultura Unix; non è universale.

  2. Un servizio è un programma che risponde alle richieste di altri programmi tramite un meccanismo di comunicazione tra processi (generalmente su una rete). Un servizio è ciò che fornisce un server. Ad esempio, il servizio di mapping delle porte NFS viene fornito come un servizio portmap separato, implementato come portmapddemone.

    Un servizio non deve essere un demone, ma di solito lo è. Un'applicazione utente con una GUI potrebbe avere un servizio integrato: ad esempio un'applicazione di condivisione file. Un altro esempio è il servizio X Window, che è tutt'altro che in background: prende il controllo dello schermo, della tastiera e del dispositivo di puntamento. È un servizio perché risponde alle richieste delle applicazioni (per creare e manipolare finestre, ecc.), Che possono anche essere altrove sulla rete. Ma il servizio X risponde anche ad ogni movimento di tasti e mouse.

  3. Un processo è uno o più thread di esecuzione insieme al loro insieme condiviso di risorse, i più importanti dei quali sono lo spazio degli indirizzi e i descrittori di file aperti. Un processo crea un ambiente per questi thread di esecuzione che sembra avere un'intera macchina tutta per sé: è una macchina virtuale.

    All'interno di un processo, le risorse di altri processi e del kernel sono invisibili e non direttamente accessibili (almeno non a un thread che esegue codice spazio utente). Ad esempio, non è possibile fare riferimento ai file aperti di un altro processo o al loro spazio di memoria; è come se quelle cose non esistessero nemmeno.

    Il processo, e la sua relazione con il kernel e altri processi, costituisce forse l'astrazione più importante nei sistemi operativi simili a Unix. Le risorse del sistema sono suddivise in processi e quasi tutto è inteso accadere all'interno di un processo o di un altro.


Non è possibile ottenere la memoria degli altri processi eseguendo una query direttamente per la RAM del sistema?
Pacerier,

1
In genere un processo non può eseguire query direttamente per la RAM del sistema. I sistemi operativi moderni utilizzano spazi di indirizzi virtuali ( en.wikipedia.org/wiki/Virtual_address_space ), il che significa che ogni processo può interagire solo con una vista falsa della memoria in cui il sistema operativo controlla esattamente ciò che è accessibile.
Akroy

"Un processo crea un ambiente per questi thread di esecuzione che sembra avere un'intera macchina tutta per sé: è una macchina virtuale." Modo molto bello per dirlo, non ci ho mai pensato così chiaramente. Ma ovviamente l'astrazione perde. Ad esempio, un processo in grado di misurare il tempo (che può fare anche attraverso il processore) può notare che non è solo sulla macchina. E ovviamente il sistema operativo fornisce meccanismi per enumerare altri processi.
masterxilo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.