Beruflich Dokumente
Kultur Dokumente
Threads
Threads
En los sistemas operativos tradicionales, cada proceso tiene su propio espacio de direcciones y un nico flujo (hilo) de control. Sin embargo, frecuentemente hay situaciones en las que es deseable contar con mltiples hilos de control (threads) en el mismo espacio de direcciones ejecutndose cuasi-paralelamente, como si fueran procesos separados (excepto que comparten el mismo espacio de direcciones).
Thread interactivo
Thread formateo
Implementacin de los threads threads se en el Los ejecutan en lo alto de espacio del usuario un sistema en tiempo
de ejecucin Todas estas implementaciones tienen la (runtime system), misma estructura general, que que esilustra a se una coleccin de procedimientos continuacin: que gestiona threads. los
El ncleo mantiene una tabla de threads que sigue la pista de todos los threads en el sistema. Cuando un thread desea crear un nuevo thread o destruir uno que ya existe, hace una llamada al ncleo, que es el que se encarga efectivamente de su creacin o destruccin actualizando la tabla de threads del sistema.
Implementacin de los Threads en el Ncleo La tabla de threads del ncleo guarda los registros de cada thread, su estado y otra informacin. La informacin es la misma que con threads a nivel de usuario, pero ahora esa informacin est en el ncleo en vez de en el espacio de usuario. Esta informacin es un subconjunto de la informacin que los ncleos tradicionales mantienen sobre cada uno de sus procesos con un solo thread, esto es, el estado del proceso.
Implementacin de los Threads en el Ncleo La tabla de threads del ncleo guarda los registros de cada thread, su estado y otra informacin. La informacin es la misma que con threads a nivel de usuario, pero ahora esa informacin est en el ncleo en vez de en el espacio de usuario. Esta informacin es un subconjunto de la informacin que los ncleos tradicionales mantienen sobre cada uno de sus procesos con un solo thread, esto es, el estado del proceso.
Implementacin de los Threads en el Ncleo Todas las llamadas que puedan bloquear a un thread se implementan como llamadas al sistema, a un coste considerablemente ms alto que una llamada a un procedimiento del sistema en tiempo de ejecucin. Cuando se bloquea un thread, el ncleo tiene la opcin de decidir si pasa a ejecutar otro thread del mismo proceso (si es que hay alguno preparado), o pasa a ejecutar un thread de un proceso diferente.
Implementaciones Hbridas
Se han investigado varias lneas que intentan combinar las ventajas de los threads a nivel de usuario con las ventajas de los threads a nivel del ncleo. Una lnea consiste en utilizar threads a nivel del ncleo y multiplexar threads a nivel de usuario sobre algunos o todos los threads a nivel del ncleo.
Implementaciones Hbridas
En este diseo el ncleo slo tiene conocimiento de los threads a nivel del ncleo, ocupndose de su planificacin. Algunos de estos threads pueden tener multiplexados sobre ellos mltiples threads a nivel de usuario. Estos threads a nivel de usuario se crean, se destruyen y se planifican de la misma manera que los threads a nivel de usuario de un proceso que se ejecuta sobre un sistema operativo sin capacidad multihilo. En este modelo, cada thread a nivel de ncleo tiene algn conjunto de threads a nivel de usuario que lo utilizan por turnos
Implementaciones Hbridas
Multiplexacin de los threads a nivel de usuario sobre los threads a nivel del ncleo.
Threads Emergentes
Frecuentemente los threads son muy tiles en sistemas distribuidos. Un ejemplo importante es cmo se tratan los mensajes de entrada, por ejemplo peticiones de servicio. El enfoque tradicional es tener un proceso o thread que est bloqueado en una llamada al sistema receive esperando a que llegue un mensaje de entrada.
Threads Emergentes
Cuando llega un mensaje, ese proceso o thread acepta el mensaje y lo procesa. Sin embargo, es posible un enfoque completamente diferente, en el cual la llegada de un mensaje provoca que el sistema cree un nuevo thread para tratar el mensaje.
Threads Emergentes
Cuando llega un mensaje, ese proceso o thread acepta el mensaje y lo procesa. Sin embargo, es posible un enfoque completamente diferente, en el cual la llegada de un mensaje provoca que el sistema cree un nuevo thread para tratar el mensaje.
Threads Emergentes
Un tal thread se denomina un thread emergente (pop-up thread) y se ilustra a continuacin. Una ventaja clave de los threads emergentes es que ya que son trigo nuevo, no tienen ninguna historia registros, pila, etc. que deba restaurarse. Cada uno comienza limpio y cada uno es idntico a todos los dems.
Threads Emergentes
Esto hace posible crear muy rpidamente tales threads. Al nuevo thread se le da el mensaje de entrada a procesar. El resultado de utilizar los threads emergentes es que la latencia entre la llegada del mensaje y el comienzo del procesamiento puede hacerse muy pequea.
Threads Emergentes
Creacin de un nuevo thread cuando llega un mensaje. (a) Antes de que llegue el mensaje. (b) (b) Despus de que llegue el mensaje.