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