Quelle est la différence technique entre démon, service et processus?


121

Je veux savoir quelles sont les différences de comportement d’un démon, d’un processus ou d’un service exécuté sous Ubuntu.


3
C’est un meilleur choix pour StackOverflow, où il a déjà été commodément demandé et répondu .
Tom Brossman

5
@Tom: Non, cette publication SE ne répond pas à ce qu'est un service. Et globalement, les réponses ici sont plus élaborées.
Mads Skjern

3
@TomBrossman, le message que vous avez lié ne parle aucunement des services .
Pacerier

4
StackOverflow concerne le codage. les démons sont une chose Unix, il n'y a pas de meilleur endroit pour demander qu'ici
Mr.Robot

1
Hein? comment cette question pourrait-elle être fermée?
Jacob Vlijm le

Réponses:


123

Daemons - Daemon ne pas debout pour moniteur de disque et d' exécution ( http://www.takeourword.com/TOW146/page4.html ). Ce sont les processus qui fonctionnent en arrière-plan et qui ne sont pas interactifs. Ils n'ont pas de terminal de contrôle.

Ils effectuent certaines actions à des moments prédéfinis ou en réponse à certains événements. Dans * NIX, les noms des démons se terminent par d .

Services - Dans Windows, les démons sont appelés services .

Si vous vous demandez pourquoi * NIX a une commande nommée service , elle est simplement utilisée pour exécuter des scripts init (raccourci pour initialisation scriptrunlevel ).

Process - Process est un programme en cours d'exécution. À un moment donné, il peut être en cours d'exécution , en veille ou zombie (processus terminé, mais en attendant que son processus parent récupère la valeur renvoyée).

Sources et informations complémentaires :


2
Les processus ont encore quelques états sous Linux, voici un excellent diagramme: linux-tutorial.info/modules.php?name=MContent&pageid=84
Dietrich Epp Le

Ce document officiel sur Ubuntu parle de "services", et je pense qu'ils ne parlent pas de Windows! Alors devrais-je simplement le lire en tant que démon? help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern

1
En fait, OP pose des questions sur les services dans Ubuntu, alors que cette réponse parle de services sous Windows. Alors évidemment, la réponse d'Anon est la bonne
Mads Skjern le

selon serverfault.com/questions/129055/… les démons et les services ne sont pas les mêmes
Mr.Robot

41
  1. Un démon est un fond, la non-interactive programme . Il est détaché du clavier et de l'affichage de tout utilisateur interactif. Le mot démon pour désigner un programme en arrière-plan provient de la culture Unix; ce n'est pas universel.

  2. Un service est un programme qui répond aux demandes d'autres programmes via un mécanisme de communication interprocessus (généralement via un réseau). Un service est ce qu'un serveur fournit. Par exemple, le service de mappage de port NFS est fourni en tant que service portmap distinct, implémenté en tant que portmapddémon.

    Un service ne doit pas nécessairement être un démon, mais généralement. Une application utilisateur avec une interface graphique pourrait avoir un service intégré: par exemple, une application de partage de fichiers. Un autre exemple est le service X Window, qui est tout sauf en arrière-plan: il prend en charge votre écran, votre clavier et votre périphérique de pointage. C'est un service parce qu'il répond aux requêtes des applications (créer et manipuler des fenêtres, etc.), qui peuvent même se trouver ailleurs sur le réseau. Mais le service X répond également à tous vos mouvements de souris et de touches.

  3. Un processus est un ou plusieurs threads d'exécution avec leur ensemble partagé de ressources, les plus importants étant l'espace d'adressage et les descripteurs de fichiers ouverts. Un processus crée un environnement pour ces threads d’exécution, qui ressemble à une machine complète: c’est une machine virtuelle.

    Dans un processus, les ressources des autres processus et du noyau sont invisibles et non directement accessibles (du moins pas à un thread exécutant du code d'espace utilisateur). Par exemple, il n’existe aucun moyen de faire référence aux fichiers ouverts d’un autre processus, ni à leur espace mémoire; c'est comme si ces choses n'existaient même pas.

    Le processus et sa relation avec le noyau et d'autres processus constituent peut-être l'abstraction la plus importante dans les systèmes d'exploitation de type Unix. Les ressources du système sont compartimentées dans des processus et presque tout est compris comme se produisant dans un processus ou un autre.


Ne pourriez-vous pas obtenir la mémoire des autres processus en interrogeant directement la RAM du système?
Pacerier

1
En général, un processus ne peut pas interroger directement la RAM du système. Les systèmes d’exploitation modernes utilisent des espaces d’adresse virtuels ( en.wikipedia.org/wiki/Adresse_Virtuelle ), ce qui signifie que chaque processus ne peut interagir qu’avec une fausse vue de la mémoire où le système d’exploitation contrôle exactement ce qui est accessible.
akroy

"Un processus crée pour ces threads un environnement qui ressemble à une machine complète: c'est une machine virtuelle." Très belle façon de le dire, je n'y ai jamais pensé aussi clairement. Mais bien sûr, l'abstraction fuit. Par exemple, un processus capable de mesurer le temps (ce que le processeur peut même faire) peut remarquer qu'il n'est pas seul sur la machine. Et bien sûr, le système d'exploitation fournit des mécanismes pour énumérer d'autres processus.
masterxilo
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.