Sunteți pe pagina 1din 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.
HILOS
 Cada proceso ligero tiene información propia:
 Contador de Programa
 Registros
 Pila
 Estado del proceso ligero (ejecutando, 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
Representación de Procesos e Hilos
Ventajas del uso de Hilos
 Respuesta
Respuesta: Si un hilo se bloquea el resto de los hilos puede
seguir ejecutándose normalmente.
 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. Resulta mas económico crear
hilos nuevos y alternarlos en el procesador que hacer lo mismo
con procesos.
 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.
Estados de un Hilo
 Los principales estados de un hilo son Ejecución,
Listo y Bloqueado.
 La planificación se lleva a cabo con los hilos, 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.
 Existen varias acciones que afectan a todos los hilos
de un proceso:
 La suspensión de un proceso, 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 terminación del proceso implica la terminación de
todos los hilos de dicho proceso.
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, aunque
posteriormente un hilo de un proceso puede crear otros hilos
dentro del mismo proceso. El nuevo hilo tendrá su propio
contexto y su propio espacio de pila, pasando a la cola de
listos.
 Bloqueo
Bloqueo: cuando un hilo necesita esperar por un suceso se
bloquea (salvando sus registros de usuario, el contador de
programa y los punteros de pila). El procesador podrá pasar
a ejecutar otro hilo que esté listo.
 Desbloqueo
Desbloqueo: cuando se produce el suceso por el que el hilo
se bloqueó el hilo pasa a la cola de listos.
 Terminación
Terminación: cuando un hilo finaliza se libera su contexto y
sus pilas.
Estados de un Hilo
Aplicación de Multihilos – Uso 1
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. A fin de mejorar el rendimiento,
el servidor mantiene un caché de archivos
recientemente usados en la memoria,
leyendo del caché y escribiendo en él
siempre que es posible.
Aplicación de Multihilos – Uso 2
 Si el servidor utiliza varios hilos. Cuando
llega una solicitud, se le entrega a un hilo
para que la procese. Si ese hilo se bloquea
esperando una transferencia de disco, los
demás hilos pueden ejecutarse y atender
nuevas solicitudes.
Aplicación de Multihilos – Uso 3
 Los navegadores de internet, utilizan varios
hilos para descargar cada una de las
imágenes que se encuentran en una misma
página web. De esta manera se acelera el
rendimiento.
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, todo el trabajo de gestión de hilos lo
realiza la aplicación mientras que el núcleo no es consciente de
ello. Resulta posible programar cualquier aplicación como
multihilo mediante una biblioteca de hilos. Esta contiene el
código para crear, 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.
Ejemplos de bibliotecas de hilos pueden ser la MV Java, POSIX
Pthreads, Mach C-threads y Solaris threads y Win32.
 Desde el punto de vista del núcleo, la aplicación se ejecuta bajo
la forma de un sólo proceso, 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)
Hilos a Nivel de Usuario
Hilos a Nivel de Usuario - Ventajas

 El intercambio entre dos hilos no necesita los


privilegios del núcleo, lo que evita la
sobrecarga de los cambios de modo de
ejecución.
 Se puede realizar una planificación a medida
de la aplicación sin afectar a la planificación
subyacente del sistema operativo.
 Los HU se pueden ejecutar sobre cualquier
sistema operativo.
Hilos a Nivel de Usuario - Desventajas

 Como la mayoría de las llamadas al sistema


producen bloqueo en el proceso que las
invoca, la llamada al sistema de un hilo
puede bloquear a todos los demás hilos del
proceso.
 No puede aprovechar las ventajas de un
entorno multiprocesador, ya que el proceso
está asignado a un único procesador.
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. Un ejemplo de este caso
es el sistemas operativo W2000.
 El núcleo mantiene la información de contexto del proceso
como un todo y la de cada hilo dentro del proceso. El núcleo
realiza la planificación en función de los hilos.
 Se pueden planificar simultáneamente múltiples hilos del mismo
proceso en un entorno multiprocesador. Además, si se bloquea
un hilo del proceso los demás siguen pudiendo ejecutarse. Otra
ventaja es que las mismas funciones del núcleo pueden ser
multihilo.
 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. Eso sugiere que aunque el enfoque
HN sea mas rápido que el basado en monohilo, todavía resulte
más lento que el HU.
Combinaciones
 Algunos sistemas operativos como Solaris combinan
los enfoques HU y HN.
 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. Los
múltiples HU se pueden asociar con varios HN a
través de los llamados procesos ligeros o lightweight
process (LWP). Así, los hilos de una aplicación se
pueden ejecutar en paralelo en un entorno
multiprocesador, y las llamadas al sistema
bloqueadoras no bloquearan todo el proceso.
 Con una buena configuración entre HU y HN, este
enfoque puede combinar las ventajas de ambos
modos minimizando sus inconvenientes.
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.
N 1 Un proceso define un espacio de Windows
direcciones y unos recursos dinámicos NT/2000,
propios que pueden ser utilizados por Solaris, OS/2,
varios hilos. Mach
1 M Un hilo puede emigrar del entorno de un Ra (Clouds),
proceso a otro. Esto permite que un hilo Emerald
se pueda mover fácilmente entre
sistemas distintos.
n M Combina los atributos de los dos últimos TRIX
casos.
Aldus PageMaker
 Aldus PageMaker, se ejecuta para OS/2. Es
una herramienta de composición, diseño y
producción de publicaciones. La estructura
de hilos, optimiza el grado de respuesta de la
aplicación.
 Siempre hay tres hilos activos:
 un hilo de gestión de sucesos,
 un hilo para el dibujo de la pantalla, y
 un hilo de servicio.
Aldus PageMaker

S-ar putea să vă placă și