Acerca de los procesos y subprocesos

Cada proceso proporciona los recursos necesarios para ejecutar un programa. Un proceso tiene un espacio de direcciones virtuales, código ejecutable, identificadores abiertos para objetos del sistema, un contexto de seguridad, un identificador de proceso único, variables de entorno, una clase de prioridad, tamaños de conjunto de trabajo mínimo y máximo, y al menos un subproceso de ejecución. Cada proceso se inicia con un único subproceso, a menudo denominado subproceso principal, pero puede crear subprocesos adicionales a partir de cualquiera de sus subprocesos.

Un subproceso es la entidad dentro de un proceso que se puede programar para su ejecución. Todos los subprocesos de un proceso comparten su espacio de direcciones virtuales y los recursos del sistema. Además, cada subproceso mantiene controladores de excepciones, una prioridad de programación, un almacenamiento local de subproceso, un identificador de subproceso único y un conjunto de estructuras que el sistema usará para guardar el contexto del subproceso hasta que se programe. El contexto del subproceso incluye el conjunto de registros de máquina del subproceso, la pila del kernel, un bloque de entorno de subprocesos y una pila de usuarios en el espacio de direcciones del proceso del subproceso. Los subprocesos también pueden tener su propio contexto de seguridad, que se puede usar para suplantar clientes.

Microsoft Windows admite multitarea preventiva, lo que crea el efecto de la ejecución simultánea de varios subprocesos a partir de varios procesos. En un equipo multiprocesador, el sistema puede ejecutar simultáneamente tantos subprocesos como hay procesadores en el equipo.

Un objeto de trabajo permite administrar grupos de procesos como una unidad. Los objetos job son objetos namables, protegibles y compartibles que controlan los atributos de los procesos asociados a ellos. Las operaciones realizadas en el objeto de trabajo afectan a todos los procesos asociados al objeto de trabajo.

Una aplicación puede usar el grupo de subprocesos para reducir el número de subprocesos de aplicación y proporcionar administración de los subprocesos de trabajo. Las aplicaciones pueden poner en cola elementos de trabajo, asociar el trabajo con identificadores de espera, poner en cola automáticamente en función de un temporizador y enlazar con E/S.

La programación en modo de usuario (UMS) es un mecanismo ligero que las aplicaciones pueden usar para programar sus propios subprocesos. Una aplicación puede cambiar entre subprocesos de UMS en modo de usuario sin implicar al programador del sistema y recuperar el control del procesador si un subproceso umS se bloquea en el kernel. Cada subproceso de UMS tiene su propio contexto de subproceso en lugar de compartir el contexto del subproceso de un único subproceso. La capacidad de cambiar entre subprocesos en modo de usuario hace que UMS sea más eficaz que los grupos de subprocesos para los elementos de trabajo de corta duración que requieren pocas llamadas del sistema.

Una fibra es una unidad de ejecución que la aplicación debe programar manualmente. Las fibras se ejecutan en el contexto de los subprocesos que los programan. Cada subproceso puede programar varias fibras. En general, las fibras no proporcionan ventajas sobre una aplicación multiproceso bien diseñada. Sin embargo, el uso de fibras puede facilitar la portabilidad de aplicaciones diseñadas para programar sus propios subprocesos.

Para obtener más información, vea los temas siguientes: