Procesos E Hilos
Procesos e Hilos
¿Qué son los procesos?
Los procesos son la unidad elemental que tiene el sistema operativo para la programación y asignación de recursos. Un proceso en ejecución, indica la existencia de un programa que se encuentra interactuando con el ordenador. Al levantar un proceso, el sistema operativo asigna memoria y recursos para su ejecución. Al terminar un proceso, el sistema operativo libera esos recursos.
NOTA 🤓: Cabe destacar que la manera de gestión de estos recursos depende del modo de trabajar de cada sistema operativo en particular (Linux, macOs o Windows).
Visión general de un proceso:

Descripción de los componentes de un proceso:
- Register: Son datos necesarios para un proceso, como instrucciones, direcciones de almacenamiento u otros.
- Counter: También conocido como puntero de instrucción, el contador se desempeña en un papel organizativo. Realiza un seguimiento de dónde se encuentra una computadora en su secuencia de programa.
- Stack: Es una estructura de datos que almacena información sobre las subrutinas activas de un programa de computadora. Se utiliza como espacio de borrador para el proceso. Se distingue de la memoria asignada dinámicamente para el proceso que se conoce como “heap”.
- Heap: Región de memoria utilizada para la asignación dinámica de memoria durante la ejecución del proceso.
- Code: Sección de memoria que almacena el código ejecutable del programa. También se conoce como “segmento de código” o “sección de texto”. Aquí se almacenan las instrucciones de bajo nivel o de lenguaje de máquina para ser ejecutadas.
Características de los procesos:
- Un proceso tiene su propio espacio de memoria, que incluye el código, los datos y los recursos asignados.
- Los procesos se ejecutan de forma independiente y están aislados de otros procesos.
- Los procesos no pueden acceder directamente a la memoria o recursos de otros procesos.
- Los procesos pueden crearse, suspenderse, reanudarse y terminarse de forma independiente.
- Los procesos suelen tener un hilo principal que inicia la ejecución.
- Los procesos pueden crear hilos secundarios adicionales dentro del mismo proceso.
¿Qué es un hilo?
Un hilo, o también llamado subproceso, es básicamente un flujo de ejecución o una secuencia de instrucciones manejada de forma independiente. Un hilo vive dentro del contexto de un proceso y este utiliza todos sus recursos; como por ejemplo, la memoria o los registradores.
Debemos destacar que si un hilo, altera un elemento de memoria de segmento, todos los demás hilos se percatan de aquello (en el caso de multihilo).
¿Qué es Multihilo?
Multihilo o también conocido como multithreading, se refiere a la capacidad de un sistema o programa de ejecutar múltiples hilos de forma concurrente dentro de un proceso.
En un entorno de ejecución de un solo hilo, el programa se ejecuta secuencialmente, es decir, una instrucción se ejecuta después de la otra y en orden. En cambio, en un entorno de ejecución multihilo, el programa puede dividirse en múltiples hilos, cada uno de los cuales se ejecuta simultáneamente y realiza un conjunto específico de tareas.
Los hilos comparten recursos y memoria comunes dentro de un proceso, lo que les permite comunicarse y cooperar entre sí. Cada hilo tiene su propio contador de programa, pila de ejecución y variables locales, pero también pueden acceder a variables compartidas y recursos compartidos dentro del proceso.
Visión general de un hilo y un multihilo

Características de los hilos:
- Los hilos son unidades de ejecución ligeras en comparación con los procesos. La creación, la finalización y el cambio de contexto entre hilos son más rápidos y requieren menos recursos que los procesos.
- Los hilos pueden ejecutarse concurrentemente, lo que significa que múltiples hilos pueden estar en ejecución al mismo tiempo dentro de un proceso. Esto permite aprovechar mejor los sistemas multiprocesador o multinúcleo, puesto que, los hilos pueden distribuirse en los diferentes núcleos de procesamiento.