Definición


Los estados de un Thread son

Init


Un Thread se encuentra en estado INIT mientras se está inicializando el estado per-thread y se está reservando el espacio de Memoria necesario para estas estructuras. Una vez que esto se ha realizado el estado del thread se setea en READY. Además se lo pone en una lista llamada ready list en la cual están esperando todos los thread listos para ser ejecutados por el procesador

Ready


Un Thread en este estado está listo para ser ejecutado pero no está siendo ejecutado en ese instante. La TCB esta en la ready list y los valores de los registros está en la TCB.

En cualquier momento el Thread scheduler puede transicional al estado RUNNING

Running


Un Thread en este estado está siendo ejecutado en este mismo instante por el procesador. En este mismo instante los valores de los registros están en el procesador. En este estado un RUNNING THREAD puede pasar a READY de dos formas

  1. El scheduler puede pasar un thread de su estado RUNNING a READ mediante el desalojo o preemption del mismo mediante el guardado de los valores de los registros y cambiando el thread que se está ejecutando por el próximo de la lista
  2. Voluntariamente un thread puede solicitar abandonar la ejecución mediante la utilización de thead_yield, por ejemplo

Waiting


En este estado el Thread está esperando que algún determinado evento suceda. Dado que un thread en WAITING no puede pasar a RUNNING directamente, estos thread se almacenan en la lista llamada waiting list. Una vez que el evento ocurre el scheduler se encarga de pasar el thread del estado WAITING a RUNNING, moviendo la TCB desde el waiting list a la ready list

Finished


Un Thread que se encuentra en estado FINISHED nunca más podrá volver a ser ejecutado. Existe una lista llamada finished list en la que se encuentran las TCB de los threads que han terminado.