Un proceso ligero, o thread, es un programa en ejecucion (flujo de
ejecucion) 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 ejecucion, como ocurre en los procesos clasicos, o mas de un flujo de
ejecucion (procesos ligeros).
Desde el punto de vista de la programacion, un proceso ligero se define
como una funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo
de ejecucion primario, o proceso ligero primario, corresponde a la funcion
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 ejecucion, pudiendose 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 informacion
del mismo. En concreto, comparten:
- Espacio de memoria.
- Variables globales.
- Archivos abiertos.
- Procesos hijos.
- Temporizadores.
- Senales y semaforos.
- Contabilidad.
Es importante destacar que todos los procesos ligeros de un mismo
proceso comparten el mismo espacio de direcciones de memoria, que incluye el
codigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que
no exista proteccion 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 esquematica la estructura de un proceso de Windows
NT con sus procesos ligeros.
No hay comentarios:
Publicar un comentario