domingo, 12 de octubre de 2014

2.3 PROCESOS LIGEROS: HILOS O HEBRAS.

Procesos ligeros.
     Los procesos ligeros son programas en ejecución son básicamente procesos pero a diferencia de éstos últimos que solo tienen un hilo de ejecución los primeros tienen el hilo principal más hilos secundarios o hijos, en éste caso todos los procesos hijos comparten la información del hilo principal pero además puede cada hilo tener su información privada.

Dentro de la información propia tenemos:
    ·         Contador de programa
    ·         Pila.
    ·         Registros.
    ·         Estado del proceso ligero.

Dentro de la información compartida tenemos:
    ·         Variables globales.
    ·         Archivos abiertos.
    ·         Señales.
    ·         Semáforos.
    ·         Contabilidad.

     Los hilos o procesos ligeros son una parte de código o mini programa que puede ser ejecutada independientemente, de forma que una aplicación o un applet puede tener varios hilos ejecutándose simultáneamente y efectuando distintas tareas; estos hilos se encuentran dentro de un programa y son parte de él. 

     Los hilos, a veces también llamados contextos de ejecución, pueden ser utilizados para la implementación de algoritmos paralelos o procesos concurrentes, sin ser necesario disponer de equipos con estructura de multiprocesador. En el caso de un solo procesador, los procesos ligeros incorporan mecanismos para compartirlo, estableciéndose prioridades
entre ellos y también facilidades de sincronización, cuando es necesario. 


     Multiproceso se refiere a dos programas que se ejecutan "aparentemente" a la vez, bajo el control del sistema operativo.

     Multihilo se refiere a que dos o más tareas se ejecutan "aparentemente" a la vez, dentro de un mismo programa.

     Dentro de un proceso puede haber uno o más hilos de control cada uno con:

·                      Un estado de ejecución (en ejecución, listo, bloqueado).
·                      Un contexto de procesador, que se salva cuando no esté ejecutándose.
·                      Una pila de ejecución.
·                      Algún almacenamiento estático para variables locales.
·                      Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos.

     Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se tarda menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y en hacer un cambio de contexto entre hilos de un mismo proceso. Al someter a un mismo proceso a varios flujos de ejecución se mantiene una única copia en memoria del código, y no varias.


     Un ejemplo de aplicación que podría hacer uso de los hilos es un servidor de ficheros de una red de área local. Cada vez que llega una solicitud de una operación sobre un fichero, se puede generar un nuevo hilo para su gestión. El servidor gestiona multitud de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de un mismo proceso simultáneamente y en diferentes procesadores.

No hay comentarios:

Publicar un comentario