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.
- Señales
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