Un proceso ligero, o thread, es
un programa en ejecución (flujo de ejecución) que comparte la imagen de memoria
y otras informaciones con otros procesos ligeros. Como muestra la Figura, un
proceso puede contener un solo flujo de ejecución, como ocurre en los procesos
clásicos, o más de un flujo de ejecución (procesos ligeros).
Desde el punto de vista de la
programación, un proceso ligero se define como una función cuya ejecución se
puede lanzar en paralelo con otras. El hilo de ejecución primario, o proceso
ligero primario, corresponde a la función main.
Cada proceso ligero tiene informaciones
que le son propias y que no comparte con otros procesos ligeros. Las
informaciones propias se refieren fundamentalmente al contexto de ejecución,
pudiéndose destacar las siguientes:
Contador de programa.
Pila.
Registros.
Estado del proceso ligero (ejecutando,
listo o bloqueado).
Todos los procesos ligeros de un mismo
proceso comparten la información del mismo. En concreto, comparten:
Espacio de memoria.
Variables globales.
Archivos abiertos.
Procesos hijos.
Temporizadores.
Señales y semáforos.
Contabilidad.
Es importante destacar que todos los
procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones
de memoria, que incluye el código, los datos y las pilas de los diferentes
procesos ligeros. Esto hace que no exista protección de memoria entre los
procesos ligeros de un mismo proceso, algo que si ocurre con los procesos
convencionales.
El proceso ligero constituye la unidad
ejecutable en Windows NT. La Figura representa de forma esquemática la
estructura de un proceso de Windows NT con sus procesos ligeros.
Procesos ligeros (Hilos o hebras).
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 miniprograma 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 mas tareas se ejecutan "aparentemente" a la vez,
dentro de un mismo programa.
No hay comentarios:
Publicar un comentario