¿Cuál es la diferencia entre un Proceso y un Hilo?

Hoy os traigo una pregunta muy popular en una entrevista: ¿Cuál es la diferencia entre un Proceso y un Hilo?

Para entender bien la distinción, lo primero que tenemos que definir es lo que es un Programa. Un programa es un archivo ejecutable que contiene un conjunto de instrucciones que se almacenan en el disco. Un solo programa puede tener múltiples procesos asociados a él. Por ejemplo, Chrome crea procesos separados para cada pestaña abierta del navegador, pero todos y cada uno de los procesos pertenecen a Chrome.

Cuando un programa se carga en la memoria de un ordenador y comienza a ejecutarse, se convierte en un Proceso. El proceso recién activado requiere acceso a recursos esenciales como registros, un contador de programa y una pila de llamadas para operar.

En el contexto de un proceso en ejecución, un hilo representa la secuencia más pequeña de instrucciones que puede ser gestionada independientemente por el planificador del sistema operativo.

La relación entre un programa, un proceso y un hilo puede resumirse en tres pasos:

  1. Un programa comienza como un conjunto estático de instrucciones contenidas en un archivo ejecutable.
  2. Cuando se carga en memoria, el programa previamente inerte, se activa en uno o más procesos en ejecución.
  3. Después de que un proceso se inicializa, adquiere memoria y recursos del sistema operativo. Un único proceso puede subdividirse en uno o varios subprocesos si es necesario. Por ejemplo, Microsoft Word suele dedicar un hilo a tareas de corrección ortográfica y otro a insertar texto en un documento.

Existen varias diferencias clave entre los procesos y los hilos:

  • Los procesos tienden a ejecutarse independientemente unos de otros, mientras que los hilos existen dentro del contexto de un proceso padre.
  • Los procesos individuales no comparten el mismo espacio de memoria, mientras que los hilos que pertenecen al mismo proceso padre pueden acceder a la memoria compartida.
  • Los procesos requieren más sobrecarga para inicializarse y terminarse que los hilos. Son operaciones de peso pesado.
  • La transición entre procesos requiere un cambio de contexto más caro en comparación con la transición entre hilos.
  • La comunicación y el intercambio de datos puede ocurrir más rápido entre los hilos, ya que habitan en el mismo contexto de proceso.
Fuente: ByteByteGoFuente: ByteByteGo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *