¿Cuál es la diferencia técnica entre daemon, servicio y proceso?


121

Quiero saber cuáles son las diferencias en el comportamiento de un demonio, proceso y servicio que se ejecuta en Ubuntu.


3
Este es un mejor ajuste para StackOverflow, donde convenientemente ya se ha preguntado y respondido .
Tom Brossman

55
@Tom: No, esa publicación SE no responde qué es un servicio. Y, en general, las respuestas aquí son más elaboradas.
Mads Skjern

3
@TomBrossman, la publicación que vinculaste no habla de servicios .
Pacerier

44
StackOverflow se trata de codificación. los demonios son una cosa de Unix, no hay mejor lugar para preguntar que aquí
Mr.Robot

1
¿Eh? ¿Cómo podría cerrarse esta pregunta?
Jacob Vlijm

Respuestas:


123

Daemons : Daemon no significa Disk and Execution Monitor ( http://www.takeourword.com/TOW146/page4.html ). Son los procesos que se ejecutan en segundo plano y no son interactivos. No tienen terminal de control.

Realizan ciertas acciones en momentos predefinidos o en respuesta a ciertos eventos. En * NIX, los nombres de los demonios terminan en d .

Servicios : en Windows, los demonios se denominan servicios .

Si se pregunta por qué * NIX tiene un comando llamado servicio , solo se usa para ejecutar scripts de inicio (abreviatura para el nivel de secuencia de comandos de inicialización ).

Proceso : el proceso es un programa en ejecución. En un instante de tiempo particular, puede estar ejecutándose , durmiendo o zombie (proceso completado, pero esperando que el proceso padre recoja el valor de retorno).

Fuentes y más información :


2
Los procesos tienen algunos estados más en Linux, aquí hay un excelente diagrama: linux-tutorial.info/modules.php?name=MContent&pageid=84
Dietrich Epp

Esta parte de la documentación oficial de Ubuntu habla de "servicios", ¡y creo que no están hablando de Windows! Entonces, ¿debería leerlo como demonio? help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern

1
De hecho, OP pregunta sobre los servicios dentro de Ubuntu, mientras que esta respuesta habla sobre los servicios en Windows. Entonces, obviamente, la respuesta de Anon es la correcta
Mads Skjern el

según serverfault.com/questions/129055/… los demonios y los servicios no son lo mismo
Mr.Robot

41
  1. Un demonio es un fondo, no interactiva del programa . Se separa del teclado y la pantalla de cualquier usuario interactivo. La palabra demonio para denotar un programa de fondo es de la cultura Unix; No es universal.

  2. Un servicio es un programa que responde a solicitudes de otros programas a través de algún mecanismo de comunicación entre procesos (generalmente a través de una red). Un servicio es lo que proporciona un servidor. Por ejemplo, el servicio de mapeo de puertos NFS se proporciona como un servicio de mapeo de puertos separado, que se implementa como el portmapddemonio.

    Un servicio no tiene que ser un demonio, pero generalmente lo es. Una aplicación de usuario con una GUI podría tener un servicio integrado: por ejemplo, una aplicación para compartir archivos. Otro ejemplo es el servicio X Window, que es todo menos en segundo plano: se hace cargo de su pantalla, teclado y dispositivo señalador. Es un servicio porque responde a solicitudes de aplicaciones (para crear y manipular ventanas, etc.), que incluso pueden estar en cualquier otro lugar de la red. Pero el servicio X también responde a cada pulsación de tecla y movimiento del mouse.

  3. Un proceso es uno o más hilos de ejecución junto con su conjunto compartido de recursos, el más importante de los cuales son el espacio de direcciones y los descriptores de archivos abiertos. Un proceso crea un entorno para estos subprocesos de ejecución que parece que tienen una máquina completa para ellos: es una máquina virtual.

    Dentro de un proceso, los recursos de otros procesos, y del núcleo, son invisibles y no son accesibles directamente (al menos no a un hilo que está ejecutando código de espacio de usuario). Por ejemplo, no hay forma de referirse a los archivos abiertos de otro proceso, o su espacio de memoria; es como si esas cosas ni siquiera existieran.

    El proceso, y su relación con el núcleo y otros procesos, tal vez constituye la abstracción más importante en los sistemas operativos tipo Unix. Los recursos del sistema están compartimentados en procesos, y se entiende que casi todo sucede dentro de un proceso u otro.


¿No podría obtener la memoria de los otros procesos consultando directamente la RAM del sistema?
Pacerier

1
Un proceso generalmente no puede consultar directamente la RAM del sistema. Los sistemas operativos modernos usan espacios de direcciones virtuales ( en.wikipedia.org/wiki/Virtual_address_space ), lo que significa que cada proceso solo puede interactuar con una vista falsa de memoria donde el sistema operativo controla exactamente lo que está accesible.
akroy

"Un proceso crea un entorno para estos subprocesos de ejecución que parece que tienen una máquina completa para ellos: es una máquina virtual". Muy buena forma de decirlo, nunca lo pensé así con tanta claridad. Pero, por supuesto, la abstracción está goteando. Al igual, un proceso que puede medir el tiempo (que puede hacer incluso a través del procesador) puede notar que no está solo en la máquina. Y, por supuesto, el sistema operativo proporciona mecanismos para enumerar otros procesos.
masterxilo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.