En un sistema operativo (SO) no es lo mismo un proceso que un subproceso o hilo. Para que entiendas por completo estos procesos, en este artículo te detallamos todas sus diferencias. Pero antes, repasemos cada uno de ellos por separado.
El proceso en un sistema operativo
En el sistema operativo (SO), un proceso es la instancia de un programa de computadora que está siendo ejecutado por uno o varios subprocesos (también conocidos como thread o hilo). Por ejemplo, cuando escribimos un programa en C o C ++ y lo compilamos, el compilador crea código binario. El código original y el código binario son programas y, por lo tanto, cuando ejecutamos el código binario, se convierte en un proceso . Dependiendo del sistema operativo, un proceso puede estar compuesto por múltiples subprocesos de ejecución que ejecutan instrucciones al mismo tiempo.

Contextos o atributos de un proceso / contexto del proceso
- Id de proceso : un identificador único asignado por el sistema operativo (SO).
- Información de programación de la CPU: por ejemplo, prioridad (diferentes procesos pueden tener diferentes prioridades, por ejemplo, a un proceso corto se le puede asignar una prioridad baja en la primera programación del trabajo más corto).
- Estado del proceso : puede estar listo, funcionando, etc.
- Información de estado de E / S: por ejemplo, dispositivos asignados al proceso.
- Registros de la CPU : como el contador de programa (los registros de la CPU deben guardarse y restaurarse cuando un proceso se intercambia dentro y fuera de la CPU).
- Información de cuentas
La memoria de proceso está dividida en cuatro secciones para un trabajo eficiente. Las secciones incluyen:
- La pila , que se utiliza para las variables locales cuando se declaran.
- El montón,
que se utiliza para la asignación de memoria dinámica y se gestiona mediante llamadas a new delete, malloc, free, etc. - La sección de texto , que está formada por el código del programa compilado, se lee desde el almacenamiento no volátil cuando se inicia el programa.
- La sección de datos, que se compone de las variables globales y estáticas, asignadas e inicializadas antes de ejecutar el archivo principal.
Lo que necesitas saber sobre el proceso
- El proceso puede denominarse programa en ejecución.
- Los procesos requieren más tiempo para el cambio de contexto, ya que son más pesados.
- Los procesos poseen su contador de programa (PC) individual, espacio de pila y conjunto de registros.
- Los procesos son totalmente independientes y se ejecutan en un espacio de memoria diferente al subproceso.
- Todos los diferentes procesos son tratados por separado por el sistema operativo.
- Los procesos individuales son independientes entre sí.
- Los procesos requieren más tiempo para su terminación.
- La comunicación que tiene lugar entre los procesos necesita algo de tiempo.
- En caso de que algún proceso se bloquee, los procesos restantes continúan con su trabajo.
- Los procesos requieren más recursos que los subprocesos.
- Los procesos requieren más tiempo para crearse.
- Cada proceso tiene diferentes copias de código y datos.
- Los procesos no requieren sincronización.
El subproceso en un sistema operativo
Un subproceso es un flujo de ejecución a través del código de proceso, con su propio contador de programa que realiza un seguimiento de qué instrucción ejecutar a continuación, registros del sistema que contienen sus variables de trabajo actuales y una pila que contiene el historial de ejecución. Debido a que los subprocesos tienen algunas de las propiedades de los procesos, a veces se denominan procesos ligeros.
Un sistema operativo (SO) que tiene capacidad de subprocesos, la unidad básica de utilización de la CPU es un subproceso. Un subproceso se compone o consta de un contador de programa (PC), un registro y un espacio de pila. Los subprocesos no son independientes entre sí, como los procesos, como resultado, los subprocesos comparten con otros subprocesos su sección de código, sección de datos, recursos del sistema operativo también denominados tareas, como archivos abiertos y señales. Los subprocesos se pueden dividir en dos tipos: subproceso a nivel de usuario (ULT) y subproceso a nivel de kernel (KLT).
- Subproceso de nivel de usuario (ULT): se implementan en la biblioteca de nivel de usuario, no se crean mediante llamadas al sistema.
- Subproceso de nivel de kernel (KLT) : KLT es un tipo de subproceso que conoce y gestiona los subprocesos. En lugar de una tabla de subprocesos en cada proceso, el núcleo en sí tiene una tabla de subprocesos (una maestra) que realiza un seguimiento de todos los subprocesos del sistema. También mantiene la tabla de procesos tradicional para realizar un seguimiento de los procesos.
Lo que necesitas saber sobre del subproceso
- El subproceso es parte del proceso.
- Los subprocesos requieren menos tiempo para el cambio de contexto, ya que son más ligeros que los procesos.
- Un subproceso comparte la sección de código, el espacio de direcciones y la sección de datos con los otros subprocesos.
- Un subproceso se ejecuta en el mismo espacio de memoria que el proceso al que pertenece.
- Todos los subprocesos del mismo nivel de usuario son tratados como una sola tarea por el sistema operativo.
- Los subprocesos son parte de un proceso y, por lo tanto, dependen.
- Los subprocesos requieren menos tiempo para su terminación.
- La comunicación que tiene lugar entre subprocesos requiere menos tiempo que los procesos.
- En caso de que un subproceso de nivel de usuario experimente un bloqueo, los subprocesos restantes también se restringen, ya que un sistema operativo considera que los subprocesos son una tarea singular.
- Los subprocesos requieren menos recursos en comparación con los subprocesos.
- Los subprocesos requieren menos tiempo para crearse.
- Es posible compartir la misma copia de código y datos entre diferentes subprocesos.
- Los subprocesos requieren sincronización para evitar escenarios inesperados.
Diferencias entre proceso y subproceso
PROCESO | SUBPROCESO |
El proceso puede denominarse programa en ejecución. | El subproceso es parte del proceso. |
Requiere más tiempo para cambiar de contexto, ya que son más pesados. | Requiere menos tiempo para cambiar de contexto, ya que son más ligeros que los procesos. |
Los procesos poseen su contador de programa (PC) individual, espacio de pila y conjunto de registros. | Un subproceso comparte la sección de código, el espacio de direcciones y la sección de datos con los otros subprocesos. |
Los procesos son totalmente independientes y se ejecutan en un espacio de memoria diferente al del subproceso. | Un subproceso se ejecuta en el mismo espacio de memoria que el proceso al que pertenece. |
Los procesos individuales son independientes entre sí. | Los subprocesos son parte de un proceso y, por lo tanto, dependen. |
Los procesos requieren más tiempo para su terminación. | Los subprocesos requieren menos tiempo para su terminación. |
La comunicación que tiene lugar entre los procesos necesita algo de tiempo. | La comunicación que tiene lugar entre subprocesos requiere menos tiempo que los procesos. |
En caso de que algún proceso se bloquee, los procesos restantes continúan con su trabajo. | En caso de que un subproceso de nivel de usuario experimente un bloqueo, los subprocesos restantes también se restringen, ya que un sistema operativo considera que los subprocesos son una tarea singular. |
Los procesos requieren más recursos que los subprocesos. | Los subprocesos requieren menos recursos en comparación con los subprocesos. |
Los procesos requieren más tiempo para crearse. | Los subprocesos requieren menos tiempo para crearse. |
Cada proceso tiene diferentes copias de código y datos. | Es posible compartir la misma copia de código y datos entre diferentes subprocesos. |
Los procesos no requieren sincronización. | Los subprocesos requieren sincronización para evitar escenarios inesperados. |
¿Cuáles son algunas de las similitudes entre subprocesos y procesos?
- Al igual que los procesos, los subprocesos comparten la CPU y solo un subproceso activo (en ejecución) a la vez.
- Los subprocesos dentro de un proceso se ejecutan secuencialmente, este también es el caso de los procesos.
- Como es el caso del proceso, si un subproceso está bloqueado, se puede ejecutar otro subproceso.