Resumen de Hilos de Control

4
HILOS DE CONTROL En los sistemas operativos, un hilo de ejecución, hebra o subproceso es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo. Hilos de Kernel y de Usuario. Hilos de Usuario (ULT) Administración de hilos realizado por biblioteca en nivel de usuario. En una aplicación ULT, todo el trabajo de gestión de hilos lo realiza la aplicación y el kernel no es consciente de la existencia de hilos. Es posible programar una aplicación como multihilo mediante una biblioteca de hilos. La misma contiene el código para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para planificar la ejecución de hilos y para salvar y restaurar el contexto de los hilos. Hilos de Kernel o Núcleo (KLT) Hilos soportados directamente por el kernel. En una aplicación KLT, todo el trabajo de gestión de hilos lo realiza el kernel. En el área de la aplicación no hay código de gestión de hilos, únicamente un API para la gestión de hilos en el núcleo. Windows 2000, Linux y OS/2 utilizan este método. Linux utiliza un método muy particular en el que no hace diferencia entre procesos e hilos. Para Linux, si varios procesos creados con la llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales, el sistema operativo los trata como hilos, y lógicamente son manejados por el kernel. Ejemplo de los hilos de kernel: Windows XP/2000, Solaris, Linux, Tru64 UNIX, Mac OS X. Modelos multi-hilo Mapeo de hilos de usuario a kernel: Muchos a uno, uno a uno y muchos a muchos. Muchos a uno: Muchos hilos de usuario mapeados a un único hilo de kernel.

Transcript of Resumen de Hilos de Control

Page 1: Resumen de Hilos de Control

HILOS DE CONTROL

En los sistemas operativos, un hilo de ejecución, hebra o subproceso es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.

Hilos de Kernel y de Usuario.

Hilos de Usuario (ULT)Administración de hilos realizado por biblioteca en nivel de usuario. En una aplicación ULT, todo el trabajo de gestión de hilos lo realiza la aplicación y el kernel no es consciente de la existencia de hilos. Es posible programar una aplicación como multihilo mediante una biblioteca de hilos. La misma contiene el código para crear y destruir hilos, intercambiar mensajes y datos entre hilos, para planificar la ejecución de hilos y para salvar y restaurar el contexto de los hilos.

Hilos de Kernel o Núcleo (KLT)Hilos soportados directamente por el kernel. En una aplicación KLT, todo el trabajo de gestión de hilos lo realiza el kernel. En el área de la aplicación no hay código de gestión de hilos, únicamente un API para la gestión de hilos en el núcleo. Windows 2000, Linux y OS/2 utilizan este método. Linux utiliza un método muy particular en el que no hace diferencia entre procesos e hilos. Para Linux, si varios procesos creados con la llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales, el sistema operativo los trata como hilos, y lógicamente son manejados por el kernel. Ejemplo de los hilos de kernel: Windows XP/2000, Solaris, Linux, Tru64 UNIX, Mac OS X.

Modelos multi-hiloMapeo de hilos de usuario a kernel: Muchos a uno, uno a uno y muchos a muchos.

Muchos a uno: Muchos hilos de usuario mapeados a un único hilo de kernel. Uno a uno: Los hilos de usuario se mapea a un hilo de kernel. Muchos a muchos: Es el mapeo de muchos hilos de usuario a muchos hilos de

kernel o de nucleo. Esto permite al sistema operativo crear un número adecuado de hilos.

Modelo de hilos de dos nivelesEsto es similar a M:M, excepto que permite asociar un hilo de usuario a uno de kernel (núcleo).

Diferencia entre hilos y procesosLos hilos se distinguen de los procesos en que los procesos son generalmente independientes, los procesos llevan mucha información de estados, e interactúan solos a través de mecanismos de comunicación dados por el sistema. Por otro lado los hilos generalmente comparten otros recursos de forma directa

Page 2: Resumen de Hilos de Control

Funcionalidad de los hilosLos hilos poseen un estado de ejecución y pueden sincronizarse entre ellos para poder evitar problemas de compartimiento de recursos. Generalmente cada hilo tiene una tarea específica y determinada.

Estados de un hiloLos estados principales de los hilos son: Ejecucion, Listo y bloqueado. Los cambios de estados de los hilos son: Creación, cuando se crea un proceso se crea un hilo para ese proceso. Bloqueo, cuando un hilo necesita esperar por un suceso, se bloquea. Desbloqueo, cuando el suceso por el que el hilo se bloqueó se produce, el mismo pasa al final de los listos. Terminación, cuando un hilo finaliza se libera tanto su contexto como sus columnas.

Semántica de Fork() y termino y cancelación de hilos Esto duplica el hilo en ejecución que hace la llamada o todos los hilos.Algunas opciones para terminar un hilo en ejecución:

Cancelación Asíncrona: esta opción termina la ejecución del hilo de manera inmediata.

Cancelación Diferida: esta opción permite al hilo objetivo verificar periódicamente si debe ser cancelado.

Contenedores de hilos (pools)Creación de un número de hilos en un contenedor donde esperan trabajo.Ventajas de los contenedores de hilos:

Usualmente atienden una solicitud más rápido, ya que no hay que crear el hilo. Permite limitar el número de hilos en una aplicación al tamaño del contenedor.

Datos específicos de cada hiloPermitir que cada hilo tenga una copia de sus datos. Útil cuando no se tiene control sobre el proceso de creación de hilos (v.gr. cuando utilizamos un contenedor de hilos).

Activación de hilos Tanto en el modelo M:M como en el modelo de dos niveles requieren una comunicación para poder mantener el numero apropiado de hilos de kernel asignado a una aplicación. Las activaciones en planificador proveen upcalls es un mecanismo de comunicación del kernel-biblioteca hilos. Esta comunicación permite mantener el numero correcto de hilos de Nucleo o kernel.

Page 3: Resumen de Hilos de Control

El estándar API POSIX es para la creación y sincronización de hilos tanto de usuario como de kernel.API: especifica el comportamiento de una biblioteca de hilos. Típico encontrarla en sistemas UNIX (Solaris, Linux, Mac OS X).

Hilos en Windows XPLos hilos en Windows XP implementan el mapeo de hilos uno a uno.Cada hilo contiene: un id del hilo, conjunto de registros, distintos stacks para kernel y usuario y una área de almacenamiento privada. El conjunto de stack y área de almacenamiento son el contexto de los hilos.

Hilos en LinuxEl sistema Linux se refiere a los hilos como tareas. La creación de hilos se realiza con la llamada al sistema clone(). Clone() permite que una tarea comparta el espacio de direcciones con el proceso.