SISTEMAS OPERATIVOSIng. Nancy Magaly Loja 2014
HILOS
ObjetivosPresentar el concepto de hebras.Explicar el funcionamiento de las hebras en algunos sistemas operativos.
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 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)
HILOS (THREADS)
HILOS (THREADS)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)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. El servidor gestiona multitud de solicitudes. Mejora si el servidor es un multiprocesador
HILOS (THREADS)
HILOS (THREADS)CARACTERISTICASSe comparten recursos, sin usar ningn mecanismo de comunicacin inter-proceso del SO.La conmutacin de contexto es ms rpida. No hay proteccin entre las hebras.
HILOS (THREADS)
HILOS (THREADS)VENTAJAS1) 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)VENTAJAS2) 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)VENTAJAS3) ECONOMA: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)VENTAJAS4) UTILIZACIN SOBRE ARQUITECTURA MULTIPROCESADOR:Las hebras pueden ejecutarse en paralelo en los diferentes procesadores.
HILOS (THREADS)TIPOS DE HEBRAS
Hebras de Usuario
Hebras del kernel
HILOS (THREADS)TIPOS DE HEBRASHebras de UsuarioTodo 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 HEBRASHebras de UsuarioEl 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 HEBRASHebras del kernelTodo el trabajo de gestin de hilos lo realiza el kernel.Si se bloquea un hilo, el kernel puede planificar otro.
HILOS (THREADS)MODELOS MULTIHEBRAModelo muchos a uno.Modelo uno a unoModelo uno a muchos
HILOS (THREADS)MODELOS MULTIHEBRAModelo muchos a uno.
HILOS (THREADS)MODELOS MULTIHEBRAModelo muchos a uno.
HILOS (THREADS)MODELOS MULTIHEBRA
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
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 MULTIHEBRA2) Modelo uno a uno
HILOS (THREADS)MODELOS MULTIHEBRA2) Modelo uno a unoCada 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 MULTIHEBRA2) Modelo uno a unoMltiples hebras en paralelo sobre varios procesadores. Carga administrativa al crear hebras del kernel.Ejm Linux, Windows, Solaris.
HILOS (THREADS)MODELOS MULTIHEBRA3) Modelo muchos a muchos
HILOS (THREADS)MODELOS MULTIHEBRA3) Modelo muchos a muchosHebras 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.
HILOS (THREADS)
BIBLIOTECAS DE HEBRAS
HILOS (THREADS)BIBLIOTECAS DE HEBRASProporciona una API para crear y gestionar hebras. Dos clases de bibliotecas de hebrasBibliotecas en modo usuario.Bibliotecas en nivel del kernel.
HILOS (THREADS)BIBLIOTECAS DE HEBRAS1) Bibliotecas en modo usuario.Llamada a una funcin local no llamada al sistema.No existe intervencin del kernel.
HILOS (THREADS)BIBLIOTECAS DE HEBRAS2) Bibliotecas en modo kernel.
Soportadas directamente por el sistema operativo.Llamadas al sistema
HILOS (THREADS)BIBLIOTECAS DE HEBRASEJEMPLOS POSIX PthreadsWin 32Java
HILOS (THREADS)HEBRAS JAVA
Todos los programas en java tienen un hilo o una hebra de control. Incluso un sencillo programa Java ejecuta una hebra en la mquina virtual Java.
HILOS (THREADS)CREAR HEBRAS JAVA
Crear una nueva clase Thread y llamar al mtodo run().Definir una clase que implemente la interfaz Runnable, y luego se define un mtodo run().
HILOS (THREADS)CREAR HEBRAS JAVAEl cdigo que implementa el mtodo run, corre como una hebra separada.
HILOS (THREADS)CREAR HEBRAS JAVALa creacin de un objeto Thread no crea especficamente la nueva hebra sino el mtodo start() que hace dos cosas:Asigna memoria e inicializa la nueva hebra.Llama al mtodo run() para que se ejecute por la JVM.
HILOS (THREADS)CONSIDERACIONES SOBRE LAS HEBRAS Llamadas al sistema fork() y exec()--CreacinDos 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---EliminacinTerminar una hebra antes que haya completado su ejecucin.Ejm. Tareas innecesarias, Detener una descargar de una pgina web.
HILOS (THREADS)Problemas con las hebrasTiempo 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 HEBRASLa idea es 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.
HILOS (THREADS)CONJUNTOS COMPARTIDOS DE HEBRASCuando hay una tarea que realizar son despertadas. Si en el conjunto no tiene hebras libres, se espera a que alguna quede libre.
HILOS (THREADS)CONJUNTOS COMPARTIDOS DE HEBRASEl nmero de hebras del conjunto depende del nmero de procesadores, de la cantidad de memoria fsica y del nmero esperado de solicitudes.
HILOS (THREADS)ACTIVACIONES DEL PLANIFICADOREn los programas multihebras, se debe considerar los mecanismos de 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 entre las hebras de usuario y las de kernel.
HILOS (THREADS)ACTIVACIONES DEL PLANIFICADOREsa estructura se denomina: Proceso ligero o LWP. Cada LWP se asocia a una hebra del kernel
HILOS (THREADS)ACTIVACIONES DEL PLANIFICADORComunicacin 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 HebrasHebras en LINUXLinux no diferencia entre procesos e hebras.Una llamada al sistema que tambin se utiliza es clone().Clone() permite mayor comparticin de recursos que fork().
Ejemplos de Hebras
Ejemplos de HebrasSi no se le pasan parmetros o indicadores a clone(); esta funciona como un fork().