You are on page 1of 23

UNIDAD 2

HILOS (Procesos Ligeros)

HILOS 
Una hebra es un hilo de control dentro de un
proceso. 
Un proceso puede contener un solo flujo de
ejecución (procesos clásicos) o más de un
flujo de ejecución (procesos ligeros). 
Desde el punto de vista de la programación,
cada proceso ligero se define como una
función cuya ejecución se puede lanzar en
paralelo con otras.

listo o bloqueado)  y comparte con los demás hilos  El espacio de memoria  Variables globales  Archivos abiertos  Procesos hijos  Temporizadores  Señales  Semáforos  Contabilidad .HILOS  Cada proceso ligero tiene información propia:  Contador de Programa  Registros  Pila  Estado del proceso ligero (ejecutando.

Representación de Procesos e Hilos .

 Utilización de arquitecturas multiprocesador: multiprocesador Los procesos multihilo pueden aprovechar fácilmente una arquitectura multiprocesador ya que cada hilo podría ejecutarse en un procesador distinto.Ventajas del uso de Hilos  Respuesta Respuesta: Si un hilo se bloquea el resto de los hilos puede seguir ejecutándose normalmente. Resulta mas económico crear hilos nuevos y alternarlos en el procesador que hacer lo mismo con procesos.  Compartición de recursos: recursos Los hilos por defecto comparten la memoria y otros recursos del proceso al que pertenecen por lo que no hay que utilizar ningún mecanismo especial de comparticion entre procesos. .  Economía Economía: Reservar memoria y recursos en la creación de los procesos es una tarea costosa.

Estados de un Hilo  Los principales estados de un hilo son Ejecución. implica la descarga de todo el espacio de direcciones del proceso y todos los hilos de un proceso deben pasar al estado de suspendidos al mismo tiempo.  La planificación se lleva a cabo con los hilos. .  Existen varias acciones que afectan a todos los hilos de un proceso:  La suspensión de un proceso.  La terminación del proceso implica la terminación de todos los hilos de dicho proceso. Listo y Bloqueado. por lo que la mayor parte de la información sobre el estado de ejecución se mantiene en las estructuras de datos de los hilos.

Estados de un Hilo  Hay cuatro operaciones básicas relacionadas con el cambio de estado de los hilos:  Creación Creación: cuando se crea un nuevo proceso normalmente también se crea un hilo para ese proceso.  Bloqueo Bloqueo: cuando un hilo necesita esperar por un suceso se bloquea (salvando sus registros de usuario. . El nuevo hilo tendrá su propio contexto y su propio espacio de pila. aunque posteriormente un hilo de un proceso puede crear otros hilos dentro del mismo proceso. pasando a la cola de listos.  Terminación Terminación: cuando un hilo finaliza se libera su contexto y sus pilas. El procesador podrá pasar a ejecutar otro hilo que esté listo. el contador de programa y los punteros de pila).  Desbloqueo Desbloqueo: cuando se produce el suceso por el que el hilo se bloqueó el hilo pasa a la cola de listos.

Estados de un Hilo .

Aplicación de Multihilos – Uso 1 .

. leyendo del caché y escribiendo en él siempre que es posible.Aplicación de Multihilos – Uso 2  Un proceso servidor de archivos recibe solicitudes para leer y escribir archivos y devuelve los datos solicitados o acepta datos actualizados. el servidor mantiene un caché de archivos recientemente usados en la memoria. A fin de mejorar el rendimiento.

Si ese hilo se bloquea esperando una transferencia de disco. Cuando llega una solicitud.Aplicación de Multihilos – Uso 2  Si el servidor utiliza varios hilos. los demás hilos pueden ejecutarse y atender nuevas solicitudes. . se le entrega a un hilo para que la procese.

.Aplicación de Multihilos – Uso 3  Los navegadores de internet. De esta manera se acelera el rendimiento. utilizan varios hilos para descargar cada una de las imágenes que se encuentran en una misma página web.

.Implementación de Hilos  Existen dos grandes categorías para la implementación de los hilos:  Hilos a nivel de usuario (HU)  Hilos a nivel del núcleo (HN).

Hilos a Nivel de Usuario  En una aplicación HU pura.  Desde el punto de vista del núcleo. Mach C-threads y Solaris threads y Win32. POSIX Pthreads. destruir y sincronizar hilos. para intercambiar mensajes y datos entre hilos y para planificar la ejecución de los hilos salvando y restaurando el contexto de los mismos. Esta contiene el código para crear. la aplicación se ejecuta bajo la forma de un sólo proceso. Resulta posible programar cualquier aplicación como multihilo mediante una biblioteca de hilos. pero la biblioteca de hilos crea y planifica los hilos en el tiempo de ejecución que le toque al proceso subyacente (Ver Figura Siguiente) . Ejemplos de bibliotecas de hilos pueden ser la MV Java. todo el trabajo de gestión de hilos lo realiza la aplicación mientras que el núcleo no es consciente de ello.

Hilos a Nivel de Usuario .

 Se puede realizar una planificación a medida de la aplicación sin afectar a la planificación subyacente del sistema operativo. . lo que evita la sobrecarga de los cambios de modo de ejecución.Hilos a Nivel de Usuario .  Los HU se pueden ejecutar sobre cualquier sistema operativo.Ventajas  El intercambio entre dos hilos no necesita los privilegios del núcleo.

la llamada al sistema de un hilo puede bloquear a todos los demás hilos del proceso.Hilos a Nivel de Usuario .Desventajas  Como la mayoría de las llamadas al sistema producen bloqueo en el proceso que las invoca. ya que el proceso está asignado a un único procesador.  No puede aprovechar las ventajas de un entorno multiprocesador. .

 El núcleo mantiene la información de contexto del proceso como un todo y la de cada hilo dentro del proceso. todavía resulte más lento que el HU. Además.  Se pueden planificar simultáneamente múltiples hilos del mismo proceso en un entorno multiprocesador. El núcleo realiza la planificación en función de los hilos. Un ejemplo de este caso es el sistemas operativo W2000.  La principal desventaja es que el paso del control de un hilo a otro dentro del mismo proceso necesita un cambio de modo de ejecución a modo núcleo.Hilos a Nivel del Núcleo  En una aplicación con hilos a nivel de núcleo todo el trabajo de gestión de hilos lo realiza el núcleo. . Eso sugiere que aunque el enfoque HN sea mas rápido que el basado en monohilo. Otra ventaja es que las mismas funciones del núcleo pueden ser multihilo. si se bloquea un hilo del proceso los demás siguen pudiendo ejecutarse.

 La creación de hilos así como la mayor parte de la planificación y sincronización de los hilos de una aplicación se realiza en el espacio del usuario. este enfoque puede combinar las ventajas de ambos modos minimizando sus inconvenientes. los hilos de una aplicación se pueden ejecutar en paralelo en un entorno multiprocesador.  Con una buena configuración entre HU y HN.Combinaciones  Algunos sistemas operativos como Solaris combinan los enfoques HU y HN. Los múltiples HU se pueden asociar con varios HN a través de los llamados procesos ligeros o lightweight process (LWP). Así. . y las llamadas al sistema bloqueadoras no bloquearan todo el proceso.

N 1 Un proceso define un espacio de Windows direcciones y unos recursos dinámicos NT/2000. n M Combina los atributos de los dos últimos TRIX casos. proceso a otro. varios hilos. Mach 1 M Un hilo puede emigrar del entorno de un Ra (Clouds). OS/2.Relación entre Hilos y Procesos H P Descripción Ejemplos 1 1 Cada hilo de ejecución es un proceso Implementacio con sus propios recursos y espacio de nes UNIX direcciones. clásicas. Esto permite que un hilo Emerald se pueda mover fácilmente entre sistemas distintos. propios que pueden ser utilizados por Solaris. .

Es una herramienta de composición. se ejecuta para OS/2. La estructura de hilos. . diseño y producción de publicaciones. y  un hilo de servicio. optimiza el grado de respuesta de la aplicación.Aldus PageMaker  Aldus PageMaker.  Siempre hay tres hilos activos:  un hilo de gestión de sucesos.  un hilo para el dibujo de la pantalla.

Aldus PageMaker .