Cuando un subproceso se mueve a través del sistema, siempre se encuentra en uno de los cinco estados:
(1) Ready (2) Running (3) Waiting (4) Delayed (5) Blocked
Excluyendo CREACIÓN y estado FINALIZADO.
- Cuando se va a procesar una aplicación, se crea un subproceso.
- Luego se le asignan los recursos requeridos (como una red) y se encuentra en la cola LISTO .
- Cuando el programador de subprocesos (como un programador de procesos) asigna el subproceso con el procesador, viene en la cola EN EJECUCIÓN .
- Cuando el proceso necesita que se active algún otro evento, que está fuera de su control (como otro proceso para completarse), pasa de la cola EN EJECUCIÓN a la cola EN ESPERA .
- Cuando la aplicación tiene la capacidad de retrasar el procesamiento del subproceso, cuando sea necesario puede retrasar el subproceso y ponerlo en suspensión durante un período de tiempo específico. Luego, el subproceso pasa de la cola EN EJECUCIÓN a DEMORADA .
Un ejemplo de retraso de un hilo es la repetición de una alarma. Después de que suena por primera vez y el usuario no lo apaga, vuelve a sonar después de un período de tiempo específico. Durante ese tiempo, el subproceso se pone a dormir.
- Cuando el subproceso genera una solicitud de E/S y no puede avanzar más hasta que finaliza, pasa de la cola EN EJECUCIÓN a la cola BLOQUEADA .
- Una vez que se completa el proceso, el subproceso pasa de RUNNING a FINISHED .
La diferencia entre la transición EN ESPERA y BLOQUEADA es que en ESPERA el subproceso espera la señal de otro subproceso o espera que se complete otro proceso, lo que significa que el tiempo de ráfaga es específico. Mientras que, en estado BLOQUEADO, no hay un tiempo especificado (depende del usuario cuándo dar una entrada).
Para ejecutar todos los procesos con éxito, el procesador necesita mantener la información sobre cada subproceso a través de Thread Control Blocks (TCB) .
Publicación traducida automáticamente
Artículo escrito por Tarun_Singhal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA