Está en la página 1de 52

SISTEMAS OPERATIVOS

Ing. Nancy Magaly Loja 2012

HILOS

Objetivos

Presentar el concepto de hebras. Explicar el funcionamiento de las hebras en algunos sistemas operativos.

CAPTULO 5 HILOS (THREADS)

Procesos concurrentes (un solo hilo de ejecucin) Sistemas Operativos modernos--- proceso contiene ms de un hilo de ejecucin

HILOS (THREADS)

Los hilos de ejecucin que comparten los mismos recursos, son en conjunto conocidos como un proceso. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado inmediatamente.

HILOS (THREADS)

Hilo o proceso ligero, es una unidad bsica de utilizacin de la CPU. Comprende un ID, CP, conjunto de registros y una pila. Un hilo es bsicamente una tarea que puede ser ejecutada en paralelo con otra tarea.

HILOS (THREADS)

Hilo comparte con otros hilos que pertenecen al mismo proceso: cdigo, datos y otros recursos como archivos abiertos.

HILOS (THREADS)

HILOS (THREADS)

HILOS (THREADS)

El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga activo. Cuando el proceso finaliza, todos sus hilos de ejecucin tambin han terminado.

HILOS (THREADS)

Debido a que tienen varios hilos de control, el proceso puede efectuar ms de una tarea a la vez.

HILOS (THREADS)

Un ejemplo de aplicacin que podra hacer uso de los hilos es un servidor web. Cada vez que llega una solicitud de un cliente, se puede generar un nuevo hilo para su gestin.

HILOS (THREADS)

El servidor gestiona multitud de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de un mismo proceso simultneamente y en diferentes procesadores

HILOS (THREADS)
CARACTERISTICAS

Se comparten recursos. La comparticin de la memoria permite a las hebras comunicarse sin usar ningn mecanismo de comunicacin inter-proceso del SO.

HILOS (THREADS)
CARACTERISTICAS La conmutacin de contexto es ms rpida gracias al extenso compartir de recursos

No hay proteccin entre las hebras. Una hebra puede escribir en la pila de otra hebra del mismo proceso

HILOS (THREADS)

HILOS (THREADS)
VENTAJAS 1) CAPACIDAD DE RESPUESTA: El uso de mltiples hebras permite que un programa contine ejecutndose aunque parte de l este bloqueado o realizando una operacin muy larga.

HILOS (THREADS)
VENTAJAS 2) COMPARTICIN DE RECURSOS: Las hebras comparten la memoria y los recursos del proceso al que pertenecen. Una aplicacin tiene varias hebras dentro del mismo espacio de direcciones del proceso.

HILOS (THREADS)
VENTAJAS 3) ECONOMA: Dado que las hebras comparten recursos del proceso al que pertenecen, es ms econmico crear y realizar cambios de contexto entre hebras. Ejm en Solaris la computacin de contexto con procesos en 5 veces ms lento que con hebras.

HILOS (THREADS)
VENTAJAS 4) UTILIZACIN SOBRE ARQUITECTURA
MULTIPROCESADOR:

Ventajas incrementadas significativamente. Las hebras pueden ejecutarse en paralelo en los diferentes procesadores.

HILOS (THREADS)
TIPOS DE HEBRAS
1)

Hebras de Usuario Hebras del kernel

1)

HILOS (THREADS)
TIPOS DE HEBRAS 1) Hebras de Usuario

Todo el trabajo de gestin de hilos lo realiza la aplicacin y el ncleo o kernel no es consciente de la existencia de hilos.

HILOS (THREADS)
TIPOS DE HEBRAS 1) Hebras de Usuario
El modo usuario tiene una biblioteca de hilos que contiene el cdigo para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para salvar y restaurar el contexto de los hilos.

HILOS (THREADS)
TIPOS DE HEBRAS 2) Hebras del kernel
Todo el trabajo de gestin de hilos lo realiza el kernel. Windows 2000, Linux utilizan este mtodo. Si se bloquea un hilo, puede planificar otro del mismo proceso.

HILOS (THREADS)
MODELOS MULTIHEBRA
1)

Modelo muchos a uno.


Mltiples hebras del nivel de usuario a una hebra del kernel. Bibliotecas de hebras en el espacio de usuario, el proceso completo se bloquea si una hebra realiza una llamada bloqueante

HILOS (THREADS)
MODELOS MULTIHEBRA
1)

Modelo muchos a uno.


Una sola hebra accede al kernel a la vez. No pueden ejecutarse varias hebras en paralelo sobre mltiples procesadores.

HILOS (THREADS)
MODELOS MULTIHEBRA
1)

Modelo muchos a uno.

HILOS (THREADS)
MODELOS MULTIHEBRA

2) Modelo uno a uno Cada hebra de usuario tiene una hebra del kernel. Mayor concurrencia que el modelo de muchos a muchos. Solo se bloquea la hebra que hace una llamada bloqueante.

HILOS (THREADS)
MODELOS MULTIHEBRA

2) Modelo uno a uno Mltiples hebras en paralelo sobre varios procesadores. Carga administrativa al crear hebras del kernel. Ejm Linux, Windows.

HILOS (THREADS)
MODELOS MULTIHEBRA

2) Modelo uno a uno

HILOS (THREADS)
MODELOS MULTIHEBRA

3) Modelo muchos a muchos Hebras de usuario sobre un nmero menor de hebras del kernel. La cantidad de hebras de kernel depende de la aplicacin. Pueden asignarse ms hebras del kernel a una aplicacin en un sistema multiprocesador, que en uno de un solo procesador.

HILOS (THREADS)
MODELOS MULTIHEBRA

3) Modelo muchos a muchos

HILOS (THREADS)
BIBLIOTECAS DE HEBRAS

Proporciona una API para crear y gestionar hebras. Dos clases de bibliotecas de hebras 1) Bibliotecas en modo usuario. 2) Bibliotecas en nivel del kernel.

HILOS (THREADS)
BIBLIOTECAS DE HEBRAS

Proporciona una API para crear y gestionar hebras. 1) Bibliotecas para ser usadas solo en modo usuario. Llamada a una funcin local no llamada al sistema.

HILOS (THREADS)
BIBLIOTECAS DE HEBRAS

2) Bibliotecas en nivel del kernel. Soportadas directamente por el sistema operativo. Llamada al sistema

HILOS (THREADS)
BIBLIOTECAS DE HEBRAS

EJEMPLOS
1) 2) 3)

POSIX Pthreads Win 32 Java

HILOS (THREADS)
HEBRAS JAVA

Creacin y gestin de hebras. Incluso un sencillo programa Java se ejecuta en la mquina virtual Java.

HILOS (THREADS)
CREAR HEBRAS JAVA
1) 2)

Crear una nueva clase Thread y llamar al mtodo run(). Definir una clase que implemente la interfaz Runnable.

HILOS (THREADS)
CREAR HEBRAS JAVA La creacin de un objeto Thread no crea especficamente la nueva hebra sino el mtodo star() que hace dos cosas: 1) Asigna memoria e inicializa la nueva hebra. 2) Llama al mtodo run() para que se ejecute por la JVM.

HILOS (THREADS)
CONSIDERACIONES SOBRE LAS HEBRAS Llamadas al sistema fork() y exec()--Creacin Dos versiones de fork(), una que duplique todas las hebras y otra que duplique solo la hebra que invoc la llamada fork(). La llamada exec(), cambia el cdigo y afecta a todas las hebras.

HILOS (THREADS)
CONSIDERACIONES SOBRE LAS HEBRAS Cancelacin---Eliminacin Terminar una hebra antes que haya completado su ejecucin. Ejm. Tareas innecesarias, Detener una descargar de una pgina web.

HILOS (THREADS)
CONJUNTOS COMPARTIDOS DE HEBRAS Problemas con las hebras Tiempo requerido para crear la hebra que se destruir una vez completado su trabajo. Un nmero ilimitado de hebras concurrentes podra agotar los recursos del sistema.

HILOS (THREADS)
CONJUNTOS COMPARTIDOS DE HEBRAS La idea es de crear una serie de hebras al principio del proceso y colocarlas en un conjunto compartido. Las hebras estn a la espera de una tarea que hay que realizar. Cuando hay una tarea que realizar son despertadas.

HILOS (THREADS)
CONJUNTOS COMPARTIDOS DE HEBRAS Si en el conjunto no tiene hebras libres, se espera a que alguna quede libre.

HILOS (THREADS)
ACTIVACIONES DEL PLANIFICADOR Comunicacin entre el kernel y la biblioteca de hebras. Muchos sistemas que implementan el modelo de muchos a muchos colocan una estructura de datos intermedia ente las hebras de usuario y de kernel. Proceso ligero LWP

HILOS (THREADS)
ACTIVACIONES DEL PLANIFICADOR Comunicacin necesaria sobre todo en esquemas de muchos a muchos para permitir la creacin dinmica de hebras de kernel. Si la hebra de kernel se bloquea tambin los hace el LWP y su correspondiente hebra de usuario.

HILOS (THREADS)
ACTIVACIONES DEL PLANIFICADOR

EJEMPLOS DE ALGUNOS OPERATIVOS

HILOS EN SISTEMAS

WINDOWS XP

API WIN 32 Una aplicacin se ejecuta como un proceso independiente y cada proceso puede tener varios hilos. Utiliza un modelo de uno a uno. Tambin puede ofrecer funcionalidad para utilizar muchos a muchos.

WINDOWS XP

Componentes de la hebra: 1) Identificador de hebra 2) Conjunto de registros. 3) Pila de usuario 4) rea de almacenamiento privada.

LINUX

Se conocen como tareas (tasks) ms que como hebras. Linux no diferencia entre hebras y procesos. Se crean mediante la llamada al sistema clone(). Clone() permite que la nueva hebra comparta el espacio de direccionamiento del proceso padre.