Diferencia entre revisiones de «Hilos»
(El planificador tiene que trabajar entre dos procesos si sólo es un procesador) |
|||
Línea 27: | Línea 27: | ||
Con multiprocesamiento puedo ejecutar diferentes procesos a la vez. Si tengo uno solo pues lo desdoblo en hilos, usando técnicas de programacion apoyadas en APIS (como POSIX threads). | Con multiprocesamiento puedo ejecutar diferentes procesos a la vez. Si tengo uno solo pues lo desdoblo en hilos, usando técnicas de programacion apoyadas en APIS (como POSIX threads). | ||
+ | |||
+ | Las principales ventajas del uso de hilos son: | ||
+ | -Menor penalización en cuanto a conmutacion. | ||
+ | -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 linea 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. |
Revisión del 20:56 2 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 reunirse 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 traería consigo problemas de permisos 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. El buen resultado de las líneas depende del programador.
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 provoca que en el sistema operativo sea necesaria la creación de llamadas al sistema referentes a él, 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 puedo ejecutar diferentes procesos a la vez. Si tengo uno solo pues lo desdoblo en hilos, usando técnicas de programacion apoyadas en APIS (como POSIX threads).
Las principales ventajas del uso de hilos son: -Menor penalización en cuanto a conmutacion. -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 linea 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.