Descargar

Hebras – Procesos (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

Quién crea/maneja hebras? Opción 2: Creadas y manejadas en nivel usuario, dentro de un proceso Una biblioteca linkeada con el programa que usa hebras Operaciones de creación, destrucción, etc sobre hebras son llamadas a procedimientos (no llamadas a sistema) Descritas como muchas to una Muchas hebras mapeadas a un proceso/hebra del kernel Biblioteca posee planificador de hebras creadas por proceso proceso Hebra kernel

edu.red

Ilustración hebras de kernel Espacio Direccionamiento hebra Mach, NT, Linux, . kernel Operaciones sobre hebras mediante llamadas a sistema al kernel CPU

edu.red

Hebras nivel usuario Espacio de direccionamiento hebra Mach, NT, Linux, . kernel Kernel crea maneja hebras de kernel CPU (Gp:) Biblioteca hebras nivel usuario (Gp:) Operaciones sobre hebras

Hebras de kernel

edu.red

Manejando mejor hebras nivel usuario Espacio de direccionamiento hebra Mach, NT, Linux, . kernel (Gp:) Biblioteca hebras Nivel usuario (Gp:) Operaciones sobre hebras

Manejo hebras kernel CPU Hebras kernel

edu.red

Implementación de hebras nivel usuario Kernel ve a proceso como cualquier otro Hebras de nivel usuario invisibles al SO Pero proceso incluye funcionalidad proporcionada por biblioteca de hebras la cual tiene su propio planificador Planificador de biblioteca decide que hebra del proceso se ejecuta a determinado tiempo SO provee de llamadas a sistema no bloqueantes, de manera que si una hebra de usuario hace E/S biblioteca de hebras sabe que puede hacer cambio de contexto en hebras de usuario

edu.red

Hebras de nivel usuario POSIX Threads API En biblioteca libpthreads.so en linux t = pthread_create(attributes, start_procedure) Crea hebra de control, que comienza ejecución en procedimiento dado Puede especificar creación de hebras nivel kernel en attributes pthread_cond_wait(condition_variable) Hebra se bloquea hasta que condición se cumple pthread_signal(condition_variable) Señaliza a hebra que espera por condicion pthread_exit() Termina la hebra pthread_join(t) Espera por hebra t hasta que termine

edu.red

Resumen Hebras de kernel son más eficientes que procesos Hebras de nivel usuario son más rápidas que las de kernel Operaciones no pasan a través de SO Si hebras de nivel usuario residen en un proceso representado por sólo una hebra de kernel No puede proporcionar paralelismo si solo una hebra de kernel asociada a proceso Si una hebra de proceso de usuario se bloquea en E/S entonces todo el proceso se bloquea (asumiendo que solo una hebra de kernel está asociada a proceso) Normalmente biblioteca maneja llamadas a sistema no bloqueantes por hebras de usuario de manera que pueda utilizar hebra de kernel para otra hebra de usuario

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente