| 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.    
 Proceso ligero    |