hilos2014

Upload: rous-illescas

Post on 14-Oct-2015

31 views

Category:

Documents


0 download

TRANSCRIPT

  • 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().