Diferencia entre revisiones de «Hilos»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
Línea 30: Línea 30:
 
Las principales ventajas del uso de hilos son:
 
Las principales ventajas del uso de hilos son:
  
-Menor penalización en cuanto a conmutación.
+
*Menor penalización en cuanto a conmutación.
  
-Dos hilos de un mismo proceso pueden compartir memoria (pudiendo así compartir variables, aprovechando mejor los recursos y no requieren mecanismos de compartición de variables).
+
*Dos hilos de un mismo proceso pueden compartir memoria (pudiendo así compartir variables, aprovechando mejor los recursos y no requieren mecanismos de compartición de variables).
  
-Con un solo procesador es posible que una línea de proceso llame al sistema bloqueante, en este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso, ahorrando asi tiempo de espera al no ejecutar el planificador.
+
*Con un solo procesador es posible que una línea de proceso llame al sistema bloqueante, en este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso, ahorrando asi tiempo de espera al no ejecutar el planificador.

Revisión del 21:12 22 mar 2011

En un sistema basado en hilos, los procesos poseen internamente varias líneas (hilos) de ejecución, en contraposición de la visión clásica de la ejecución lineal.

Dentro de los programas, con frecuencia, aparecen ciertos sectores independientes entre sí. En un sistema con multiprogramación, podemos tomar cada sección como procesos independientes ya que la permutación en el orden de ejecución no altera el resultado final. Si alguna de estas secciones presentase algún estado de bloqueo, se sumaría al tiempo global de todo el proceso. Éste tiempo se vería reducido al encontrarnos en un sistema multiprogramado.

Ésta división en múltiples procesos provoca que en memoria se deba reservar un espacio para cada uno y que tras la consecución de cada uno, haya que reunirs todos los resultados en un único espacio de memoria. Otra opción para evitar este problema es el uso de un espacio de memoria común, pero esta solución acarrea consigo problemas de violación de privilegios y protección de memoria.

El concepto de hilo aparece para arreglar estos problemas:

Las líneas internas del proceso se desarrollan sobre el mismo espacio de memoria (la asignada al proceso original). Al ser líneas de ejecución diferentes, poseen su puntero de instrucción, sus valores para los registros de trabajo y su propia pila. No existe la protección entre las diferentes líneas de ejecución, por lo que una sola línea podría destruir el trabajo de las demás, de forma que es el programador el que tiene la responsabilidad de proteger la memoria entre los distintos hilos.

Al usar un espacio de memoria común, la comunicación entre los hilos es más directa que entre procesos independientes con su propio espacio reservado.

La implantación del concepto de hilo desemboca en la necesidad de llamadas al sistema específicas para el tratamiento de hilos, tales como: creación de hilos, destrucción de hilos, suspensión, esperas, etc.

El mismo sistema operativo usa el sistema de hilos para la programación de sus actividades.

Veamos un ejemplo diseñado para un solo procesador:

PA1 |  .---   .  .   .  
PA2 |  .   ---.  .   .
    |  .      .  .   .     
PB  |  .      .  .---.     
    |  .      .  .   . 
Pla |--.      .--.   . 
    |__.______.__.___.>t
   

Con multiprocesamiento podemos ejecutar diferentes procesos a la vez. Si tenemos uno solo podemos desdoblarlo en hilos, usando técnicas de programación apoyadas en APIS (como POSIX threads).

Las principales ventajas del uso de hilos son:

  • Menor penalización en cuanto a conmutación.
  • Dos hilos de un mismo proceso pueden compartir memoria (pudiendo así compartir variables, aprovechando mejor los recursos y no requieren mecanismos de compartición de variables).
  • Con un solo procesador es posible que una línea de proceso llame al sistema bloqueante, en este caso se puede llamar a otro hilo del mismo proceso en lugar de conmutar a otro proceso, ahorrando asi tiempo de espera al no ejecutar el planificador.