domingo, 17 de febrero de 2019

1.4 Multiprocesamiento (Multihilos) en Multinúcleo

La programación multihilo se basa en que, dentro del desarrollo de la aplicación, hemos definido diversas tareas para que se ejecuten a la vez. Todas estas tareas forman parte de un mismo proceso.
Para nuestro sistema operativo tendremos un solo proceso con diversas tareas a ejecutar. En este sentido el planificador se encarga de que cuando le toque ejecutarse a nuestro proceso, las tareas del mismo se vayan alternando, con la diferencia que, al ser de un mismo proceso, no se libera espacio de memoria ni procesador, como si se haría en el caso de alternar procesos.
Esto agiliza por lo tanto la ejecución de nuestro proceso que además puede simular paralelizar la ejecución de varias tareas a la vez.
Para realizar una programación multihilo, deberemos indicar en el código de programación mediante el comando correspondiente que queremos lanzar diversas tareas en diferentes hilos.
El hecho de usar programación multihilo no implica que siempre vamos a tener una mejora de rendimiento y es potestad del programador el decidir cuándo conviene usar este tipo de programación. En líneas generales, si la aplicación que hemos desarrollado es muy simple no tiene sentido plantearse este tipo de programación.
Tampoco puede que sea buena idea emplear el multihilo para aplicaciones excesivamente complejas pues provocará excesiva sobrecarga y sea más un problema que una ventaja.
Entonces la pregunta clave es ver cuñando va a ser ventajoso usar la programación multihilo que nos permitirá paralelizar la ejecución de varios procesos y de esta forma mejorar el rendimiento de nuestra aplicación.
Por regla general, se considera que una aplicación es candidata a ser programa en multihilo cuando cumple las siguientes premisas:
  1. La aplicación va a requerir se realizar diversas tareas claramente diferenciadas con un alto coste computacional que sea mayor al que se genera en un cambio de contexto, es decir, de liberación del espacio de memoria asignado.
  2. El resultado de las tareas que se ejecuten en diferentes hilos no debe depender del resultado de otras tareas, ya que, de lo contrario, las tareas se estarían esperando unas a otras y al final el rendimiento sería menor del esperado.
  3. Se prevea que pueda haber tareas retenidas o bloqueadas por estar esperando a una lectura de disco, por ejemplo. En estos casos, esta tarea se bloquea y otra entra en acción, aprovechando de esta forma la programación multihilo.


No hay comentarios:

Publicar un comentario