INGENIERIA INFORMATICA

lunes, 19 de septiembre de 2016

PROCESOS LIGEROS

2.3 Procesos ligeros: Hilos o Hebras


Hilos

En los sistemas operativos tradicionales, cada proceso tiene un espacio de direcciones y un solo hilo de control.

Uso de hilos

Resulta ser que hay varias razones de tener estos miniprocesos, conocidos como hilos.
La principal razón de tener hilos es que en muchas aplicaciones se desarrollan varias actividades a la vez. Un segundo argumento para tener hilos es que, como son mas ligeros que los procesos, son mas fáciles de crear (es decir, rápidos) y destruir. Una tercera razón de tener hilos es también un argumento relacionado con el argumento.

El modelo clásico del hilo

El modelo clásico de proceso se basa en dos conceptos independientes: agrupamiento de recursos y ejecución. Lo que agregan los hilos al modelo de procesos es permitir a cabo varias ejecuciones en el mismo entorno del proceso que son en gran parte independiente unas de las otras.

El termino multhilamiento también se utiliza para describir la situación de permitir varios hilos en el mismo proceso. Cuando se ejecuta un proceso con multihilamiento en un sistema con una CPU, los hilos toman turnos para ejecutarse.

Hilos en POSIX

El paquete de hilos se conoce como Pthreads. Cada uno tiene un identificador, un conjunto de registros y un conjunto de atributos, que se almacenan en una estructura.
Para crear un hilo se utiliza la llamada a Pthreadcreate.
Cuando un hilo ha terminado el trabajo que se le asigna puede terminar llamado a pthread_exit.

Implementación de hilos en el espacio de usuario

Hay dos formas principales de implementar un paquete de hilos: en espacio de usuario y en el kernel.
El primer método es colocar l paquete de hilos completamente en espacio de usuario. El kernel no sabe nada acerca de ellos. Con este método, los hilos se implementan mediante una biblioteca.

Cuando los hilos se administran en espacio de usuario, cada proceso necesita su propia tabla en ese proceso.

Implementaación de hilos en el kernel

La tabla de los hilos de kernel contiene los registros, el estado ademas información de cada hilo. Todas las llamadas que podrían bloquear un hilo se implementan como llamada al sistema, a un costo considerablemente mayor que una llamada a un procedimiento del sistema nen tiempo de ejecución.
Los hilos de kernel no requieren de nuevos llamados al sistema sin bloqueo. Los hilos de kernel resuelven solo algunos problemas.

Implementaciones hibridas

Una de estas formas es utilizar hilos de nivel de kernel y después de multiplexar los hilos de nivel de usuario con algunos o con todos los hilos de nivel kernel.
Cuando se utiliza este método, el programados puede determinar cuantos hilos de kernel va a utilizar y cuantos hilos de nivel usuario va a multiplexar en cada uno.
Con este método, el kernel esta consiente solo de los hilos de nivel kernel y los planifica.

Activaciones del planificador

Aunque los hilos de kernel son mejores que los hilos del nivel usuario en cierta forma clave, también son sin duda mas lentos.
Los objetivos del trabajo de una activación del planificado son imitar la funcionalidad de los hilos de kernel.
La eficiencia se obtiene evitando transiciones innecesarias entre los espacios de usuarios y de kernel.
Para realizar la notificación, el kernel activa el sistema en tiempo de ejecución en una dirección inicial conocida, no muy similar a una señal en Unix. A este mecanismo se le conoce como llamada ascendente (upcall)

Hilos emergentes

Los hilos se utilizan con frecuencia en los sistemas distribuidos. El método tradicional es hacer que un proceso o hilo, que esta bloqueado en una llamada al sistema recibe, espere un mensaje entrante. A dicho hilo se le conoce como hilo emergente (pop-up thread).

Conversión de código de hilado simple a multihilado

Es mucho mas dificil convertir estos programas para que utilicen multihilamiento de lo que podria parecer en un principio.
Para empezar el código de un hilo normalmente consiste de varios procedimientos, al igual que un proceso.
La primera llamada podria ser como se muestra a continuación.

No hay comentarios:

Publicar un comentario