¿Cuál es la diferencia entre un proceso y un hilo?

Resuelto James Fassett asked hace 15 años • 35 respuestas

¿Cuál es la diferencia técnica entre un proceso y un hilo?

Tengo la sensación de que se usa en exceso una palabra como "proceso" y que también hay hilos de hardware y software. ¿Qué tal los procesos livianos en lenguajes como Erlang ? ¿Existe una razón definitiva para utilizar un término sobre el otro?

James Fassett avatar Oct 14 '08 16:10 James Fassett
Aceptado

Tanto los procesos como los subprocesos son secuencias de ejecución independientes. La diferencia típica es que los subprocesos (del mismo proceso) se ejecutan en un espacio de memoria compartido, mientras que los procesos se ejecutan en espacios de memoria separados.

No estoy seguro de a qué subprocesos de "hardware" o "software" podría estar refiriéndose. Los subprocesos son una característica del entorno operativo, más que una característica de la CPU (aunque la CPU normalmente tiene operaciones que hacen que los subprocesos sean eficientes).

Erlang utiliza el término "proceso" porque no expone un modelo de multiprogramación de memoria compartida. Llamarlos "hilos" implicaría que tienen memoria compartida.

Greg Hewgill avatar Oct 14 '2008 09:10 Greg Hewgill

Esta información se encontró en Microsoft Learn aquí: Acerca de procesos y subprocesos

Proceso
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 mínimo y máximo de conjuntos de trabajo y al menos un hilo de ejecución. Cada proceso se inicia con un único hilo, a menudo llamado hilo primario , pero puede crear hilos adicionales a partir de cualquiera de sus hilos.

Hilo
Un hilo es una entidad dentro de un proceso cuya ejecución se puede programar. Todos los subprocesos de un proceso comparten su espacio de direcciones virtuales y recursos del sistema. Además, cada subproceso mantiene controladores de excepciones, una prioridad de programación, almacenamiento local del subproceso, un identificador de subproceso único y un conjunto de estructuras que el sistema utilizará 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 núcleo, un bloque de entorno del subproceso y una pila de usuario en el espacio de direcciones del proceso del subproceso. Los subprocesos también pueden tener su propio contexto de seguridad, que puede usarse para hacerse pasar por clientes.

Microsoft Windows admite la multitarea preventiva , lo que crea el efecto de ejecución simultánea de múltiples subprocesos de múltiples procesos. En una computadora multiprocesador, el sistema puede ejecutar simultáneamente tantos subprocesos como procesadores haya en la computadora.

Scott Langham avatar Oct 14 '2008 09:10 Scott Langham