Diferencia entre revisiones de «Hilos»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Página nueva: 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 ...)
 
Línea 14: Línea 14:
  
 
El mismo sistema operativo usa el sistema de hilos para la programación de sus actividades.
 
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).

Revisión del 14:43 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).