Un proceso en segundo plano es un proceso informático que se ejecuta detrás de escena (es decir, en segundo plano) y sin la intervención del usuario. [1] Las tareas típicas para estos procesos incluyen registro, monitoreo del sistema, programación, [2] y notificación al usuario. [3] El proceso en segundo plano suele ser un proceso secundario creado por un proceso de control para procesar una tarea informática. Después de la creación, el proceso hijo se ejecutará por sí solo, realizando la tarea independientemente del proceso de control, liberando el proceso de control de realizar esa tarea. [ cita requerida ]
En un sistema Windows , un proceso en segundo plano es un programa de computadora que no crea una interfaz de usuario o un servicio de Windows . Los primeros se inician como se inicia cualquier otro programa, por ejemplo, a través del menú Inicio . Los servicios de Windows, por otro lado, son iniciados por Service Control Manager . En Windows Vista y versiones posteriores, se ejecutan en una sesión separada . No hay límite en cuanto a la cantidad de recursos del sistema que puede utilizar un servicio del sistema o un proceso en segundo plano. De hecho, en la familia de sistemas operativos de Microsoft Windows Server , se espera que los procesos en segundo plano sean los principales consumidores de recursos del sistema.[ cita requerida ]
En un sistema Unix o similar a Unix , un proceso o trabajo en segundo plano puede identificarse además como uno cuyo ID de grupo de procesos difiere de su ID de grupo de terminal (TGID). (El TGID de un proceso es el ID de proceso del líder del grupo de procesos que abrió la terminal, que normalmente es el shell de inicio de sesión. El TGID identifica el terminal de control del grupo de procesos). Este tipo de proceso no puede recibir señales de teclado de su terminal principal, y normalmente no enviará salida a ese terminal. [4] Esta definición más técnica no distingue entre si el proceso puede recibir o no la intervención del usuario. Aunque los procesos en segundo plano se utilizan normalmente para fines que necesitan pocos recursos, cualquier proceso se puede ejecutar en segundo plano y dicho proceso se comportará como cualquier otro proceso, con las excepciones mencionadas anteriormente. [1]
Servicios de Windows
En la familia de sistemas operativos Windows NT , un servicio de Windows es un proceso en segundo plano dedicado. [5] Un servicio de Windows debe ajustarse a las reglas y protocolos de interfaz del Administrador de control de servicios , el componente responsable de administrar los servicios de Windows. [6]
Los servicios de Windows se pueden configurar para que se inicien cuando se inicia el sistema operativo y para que se ejecuten en segundo plano siempre que se ejecute Windows. Alternativamente, se pueden iniciar manualmente o mediante un evento. Los sistemas operativos Windows NT incluyen numerosos servicios que se ejecutan en el contexto de tres cuentas de usuario : System
, Network Service
y Local Service
. Estos componentes de Windows a menudo se asocian con el proceso de host para los servicios de Windows: svchost.exe . Dado que los servicios de Windows operan en el contexto de sus propias cuentas de usuario dedicadas, pueden operar cuando un usuario no está conectado.
Antes de Windows Vista , los servicios instalados como "servicios interactivos" podían interactuar con el escritorio de Windows y mostrar una interfaz gráfica de usuario . Sin embargo, con Windows Vista, los servicios interactivos quedaron obsoletos y dejaron de funcionar correctamente como resultado del refuerzo de los servicios de Windows . [7] [8]
Los tres medios principales para administrar los servicios de Windows son:
- Complemento de servicios para Microsoft Management Console
sc.exe
- Windows PowerShell
Demonio
Un demonio es un tipo de proceso en segundo plano diseñado para ejecutarse continuamente en segundo plano, a la espera de que ocurran eventos o que se cumplan las condiciones. [9] Estos procesos suelen utilizar recursos mínimos del sistema y realizan tareas que requieren poca o ninguna entrada del usuario. Cuando se inicia con la función daemon , los daemons se desvinculan de su terminal padre. [10]
Lanzamiento y reanudación en Unix
Desde una línea de comandos de Unix, se puede iniciar un proceso en segundo plano utilizando el operador "&". La utilidad bg puede reanudar un trabajo suspendido (enviando SIGCONT ), ejecutándolo en segundo plano. El uso de la utilidad fg también volverá a conectar la entrada estándar a su terminal principal, poniéndola en primer plano. La utilidad de trabajos enumerará todos los procesos asociados con la terminal actual y se puede utilizar para traer procesos en segundo plano al primer plano. [4] [11]
Cuando finaliza una sesión de inicio de sesión , mediante el cierre de sesión explícito o la desconexión de la red, todos los procesos, incluidos los procesos en segundo plano, se cancelarán de forma predeterminada para evitar que se conviertan en procesos huérfanos . Concretamente, cuando el usuario sale del proceso de cáscara de lanzamiento, como parte de apagado envía una hangup señal ( SIGHUP ) a todos sus puestos de trabajo , a finalizar todos los procesos en el correspondiente grupo de proceso . Para que los procesos continúen ejecutándose, uno no puede terminar la sesión o terminar la sesión sin terminar los procesos. Se puede usar un multiplexor de terminal para dejar una sesión en ejecución pero desconectar un terminal virtual de él, dejando los procesos ejecutándose como procesos secundarios de la sesión; el usuario puede volver a conectar la sesión más tarde. O bien, la terminación puede evitarse iniciando el proceso a través del comando nohup (indicando al proceso que ignore SIGHUP) o ejecutándolo posteriormente disowncon la identificación del trabajo, lo que elimina el trabajo de la lista de trabajos por completo o simplemente evita que SIGHUP sea enviado. En este último caso, cuando finaliza la sesión, los procesos hijo no se terminan, ya sea porque no se envían SIGHUP o porque lo ignoran y, por lo tanto, se convierten en procesos huérfanos, que luego son adoptados por el proceso init (el kernel establece el proceso init como padre), y continúan ejecutándose sin una sesión, ahora llamados daemons .
Ejemplo
En este ejemplo que se ejecuta en Unix , la utilidad de suspensión se lanzó en segundo plano. Posteriormente, la herramienta ps se ejecutó en primer plano, donde generó el texto a continuación. Ambos fueron lanzados desde el caparazón. [12]
PID TT STAT TIME COMMAND 54659 10 S 0 : 00.06 su ( zsh ) 54703 10 IN 0 : 00.00 - sleep 1000 54852 10 R + 0 : 00.00 - ps -U botty -axd
Teléfonos inteligentes
Muchas versiones más recientes de los sistemas operativos de teléfonos inteligentes y PDA ahora incluyen la capacidad de iniciar procesos en segundo plano. Debido a los límites del hardware, los procesos en segundo plano en los sistemas operativos móviles suelen estar restringidos a determinadas tareas o niveles de consumo. En Android , el uso de CPU para procesos en segundo plano está limitado al 5-10%. [13] Las aplicaciones de terceros en iOS de Apple están limitadas a un subconjunto de funciones mientras se ejecutan en segundo plano. [3] Tanto en iOS como en Android, el sistema puede eliminar los procesos en segundo plano si utilizan demasiada memoria. [3] [13]
Ver también
- Procesamiento por lotes
- Multitarea por computadora
- Grupo de proceso
Referencias
- ^ a b "¿Qué es un sistema operativo? Procesos" . El tutorial de Linux. Archivado desde el original el 15 de agosto de 2020 . Consultado el 14 de noviembre de 2010 .
- ^ Michele Cyran (diciembre de 1993). Conceptos de base de datos de Oracle, versión 10g 1 . Oracle Corporation. B10743-01 . Consultado el 12 de noviembre de 2010 .
- ^ a b c Jesús Díaz (8 de abril de 2010). "Cómo funciona la multitarea en el nuevo iPhone OS 4.0" . Gizmodo. Archivado desde el original el 2 de noviembre de 2010 . Consultado el 14 de noviembre de 2010 .
- ^ a b GNU Bash Reference Manual, Edición 4.1, Conceptos básicos de control de trabajos . Free Software Foundation, Inc. 23 de diciembre de 2009. Archivado desde el original el 3 de diciembre de 2010 . Consultado el 10 de noviembre de 2010 .
- ^ "Resumen de servicios" . Microsoft TechNet . Microsoft . Consultado el 29 de marzo de 2013 .
- ^ "Servicios" . Red de desarrolladores de Microsoft . Microsoft . Consultado el 29 de marzo de 2013 .
- ^ "New Elevation PowerToys para Windows Vista" . Revista TechNet . Microsoft . Junio de 2008 . Consultado el 21 de junio de 2013 .
El servicio CmdAsSystem está configurado como interactivo cuyo soporte está en desuso. Es posible que el servicio no funcione correctamente. El problema es que este script intenta crear e iniciar un servicio interactivo. Los servicios interactivos no funcionarán correctamente debido al aislamiento de la sesión 0 en Windows Vista.
- ^ "Servicios en Windows" . MSDN . Microsoft . 18 de octubre de 2010 . Consultado el 21 de junio de 2013 .
- ^ Eric S. Raymond (1 de octubre de 2004). El archivo de jerga, versión 4.4.8, "demonio" . Archivado desde el original el 3 de noviembre de 2010 . Consultado el 10 de noviembre de 2010 .
- ^ raf (12 de junio de 2010). Manual del usuario de Linux, "daemon" . Archivado desde el original el 21 de octubre de 2010 . Consultado el 10 de noviembre de 2010 .
- ^ Åke Nordlund (7 de febrero de 2007). "Procesos en segundo plano en Unix / Linux" . Archivado desde el original el 13 de febrero de 2012 . Consultado el 10 de noviembre de 2010 .
- ^ "POSIX" ps " " . IEEE Std 1003.1, edición de 2004 .
- ^ a b Matt Buchanan (29 de abril de 2010). "Explica Giz: cómo funciona la multitarea en un teléfono" . Gizmodo. Archivado desde el original el 17 de octubre de 2010 . Consultado el 14 de noviembre de 2010 .