Thread es un flujo de secuencia única dentro de un proceso. Los hilos tienen las mismas propiedades que el proceso, por lo que se denominan procesos ligeros. Los subprocesos se ejecutan uno tras otro, pero dan la ilusión de que se ejecutan en paralelo. Cada hilo tiene diferentes estados. Cada hilo tiene
- contador de programa
- un conjunto de registros
- Un espacio de pila
Los subprocesos no son independientes entre sí, ya que comparten el código, los datos, los recursos del sistema operativo, etc.
Similitud entre subprocesos y procesos:
- Solo un subproceso o proceso está activo a la vez
- Dentro del proceso ambos ejecutan secuencialmente
- Ambos pueden crear hijos.
Diferencias entre subprocesos y procesos:
- Los hilos no son independientes, los procesos sí.
- Los subprocesos están diseñados para ayudarse entre sí, los procesos pueden hacerlo o no.
Tipos de hilos:
- Subproceso de nivel de usuario (ULT): se implementa en la biblioteca de nivel de usuario, no se crean utilizando las llamadas al sistema. El cambio de subprocesos no necesita llamar al sistema operativo y provocar una interrupción en el kernel. Kernel no conoce el subproceso de nivel de usuario y los administra como si fueran procesos de un solo subproceso.
- Ventajas de ULT –
- Se puede implementar en un sistema operativo que no admita subprocesos múltiples.
- Representación simple ya que el hilo solo tiene contador de programa, conjunto de registros, espacio de pila.
- Simple de crear ya que no hay intervención del kernel.
- El cambio de subprocesos es rápido ya que no es necesario realizar llamadas al sistema operativo.
- Limitaciones de ULT –
- No hay o hay menos coordinación entre los hilos y el Kernel.
- Si un subproceso provoca un error de página, todo el proceso se bloquea.
- Ventajas de ULT –
- Subproceso de nivel de kernel (KLT): Kernel conoce y administra los subprocesos. En lugar de una tabla de subprocesos en cada proceso, el propio kernel tiene una tabla de subprocesos (una maestra) que realiza un seguimiento de todos los subprocesos del sistema. Además, el kernel también mantiene la tabla de procesos tradicional para realizar un seguimiento de los procesos. El kernel del sistema operativo proporciona una llamada al sistema para crear y administrar subprocesos.
- Ventajas de KLT –
- Dado que el núcleo tiene pleno conocimiento sobre los subprocesos del sistema, el programador puede decidir dar más tiempo a los procesos que tienen una gran cantidad de subprocesos.
- Bueno para aplicaciones que se bloquean con frecuencia.
- Limitaciones de KLT –
- Lento e ineficiente.
- Requiere un bloque de control de subprocesos, por lo que es una sobrecarga.
- Ventajas de KLT –
Resumen:
- Cada ULT tiene un proceso que realiza un seguimiento del subproceso mediante la tabla de subprocesos.
- Cada KLT tiene una tabla de subprocesos (TCB), así como una tabla de procesos (PCB).
Publicación traducida automáticamente
Artículo escrito por Aniket_Dusey y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA