hay dos clases principales de hilo: los
hilos de usuario o hilos verdes, que son completamente gestionados dentro del
proceso y sin ayuda del sistema operativo, y los hilos de núcleo o hilos de
kernel, que sí son gestionados por el sistema operativo como si fueran
procesos. Partiendo de esto, hay tres modelos principales de mapeo
Muchos a uno Muchos hilos son agrupados en
un sólo proceso. Los hilos verdes entran en este supuesto: para el sistema
operativo, hay un sólo proceso; mientras tiene la ejecución, éste se encarga de
repartir el tiempo entre sus hilos. Bajo este modelo, si bien el código escrito
es más portable entre diferentes sistemas operativos, los hilos no aprovechan
realmente al paralelismo, y todos los hilos pueden tener que bloquearse cuando
uno solo de ellos realiza una llamada bloqueante al sistema
Uno a uno Cada hilo es ejecutado como un
proceso ligero (lightweight process o LWP); podría dar la impresión de que este
esquema desperdicia la principal característica de los hilos, que es una mayor
sencillez y rapidez de inicialización que los procesos, sin embargo, la
información de estado requerida para crear un LWP es mucho menor que la de un
proceso regular y mantiene como ventaja que los hilos continúan compartiendo su
memoria, descriptores de archivos y demás estructuras. Este mecanismo permite a
los hilos aprovechar las ventajas del paralelismo, pudiendo ejecutarse cada
hilo en un procesador distinto, y como única condición, el sistema operativo
debe poder implementar los LWP
Muchos a muchos Estos mecanismos permite
que hayan hilos de ambos modelos: permite hilos unidos (bound threads), en que
cada hilo corresponde a un (y solo un) LWP, y de hilos no unidos (unbound
threads), de los cuales uno o más estarán mapeados a cada LWP. El esquema
muchos a muchos proporciona las principales características de ambos esquemas;
en caso de ejecutarse en un sistema que no soporte más que el modelo uno a
muchos, el sistema puede caer en éste como modo degradado.







