- Estados de un proceso en Unix
- Estados de un hilo en Unix
- Estado de un hilo en Solaris
- Estados de un proceso en Linux
- Estados de un hilo en Linux
- Estados de un proceso en Windows 2000
- Estados de un hilo en Windows 2000
Estados de un proceso en Unix
- Preparado (R).- Proceso que está listo para ejecutarse. Simplemente está esperando a que el sistema operativo le asigne un tiempo de CPU.
- Ejecutando (O).- Sólo uno de los procesos preparados se está ejecutando en cada momento (monoprocesador).
- Suspendido (S).- Un proceso se encuentra suspendido si no entra en el reparto de CPU, ya que se encuentra esperando algún tipo de evento (por ejemplo, la recepción de una señal software o hardware). En cuanto dicho evento se produce, el proceso pasa a formar parte del conjunto de procesos preparados.
- Parado (T).- Un proceso parado tampoco entra en el reparto de CPU, pero no porque se encuentre suspendido esperando algún evento. En este caso, sólo pasarán a estar preparados cuando reciban una señal determinada que les permita continuar.
- Zombie (Z).- Todo proceso al finalizar avisa a su proceso padre, para que éste elimine su entrada de la tabla de procesos. En el caso de que el padre, por algún motivo, no reciba esta comunicación no lo elimina de la tabla de procesos. En este caso, el proceso hijo queda en estado zombie, no está consumiendo CPU, pero sí continua consumiendo recursos del sistema.
Un hilo puede ser en alguno de los siguientes estados:
- Listo: el hilo puede ser elegido para su ejecución.
- Standby: el hilo ha sido elegido para ser el siguiente en ejecutarse en el procesador.
- Ejecución: el hilo está siendo ejecutado.
- Espera: un hilo pasa a este estado cuando se bloquea por un suceso
- (E/S): se realiza una espera voluntaria de sincronización o alguien suspende al hilo.
- Transición: después de una espera el hilo pasa a este estado si está listo para ejecutar pero alguno de sus recursos no está disponible aún.
- Terminado: un hilo llega a este estado cuando termina normalmente cuando su proceso padre ha terminado.
El comportamiento de un hilo depende del estado en que se encuentre, este estado define su modo de operación actual, por ejemplo, si esta corriendo o no. A continuación proporcionamos la relación de estados en los que puede estar un hilo Java.
- New
- Runnable
- Blocked
- Dead
New
Un hilo esta en el estado new la primera vez que se crea y hasta que el método start es llamado. Los hilos en estado new ya han sido inicializados y están listos para empezar a trabajar, pero aún no han sido notificados para que empiecen a realizar su trabajo.
Runnable
Cuando se llama al método start de un hilo nuevo, el método run es invocado y el hilo entra en el estado runnable. Este estado podría llamarse "running" porque la ejecución del método run significa que el hilo esta corriendo. Sin embargo, debemos tener en cuenta la prioridad de los hilos. Aunque cada hilo está corriendo desde el punto de vista del usuario, en realidad todos los hilos, excepto el que en estos momentos esta utilizando la CPU, están en el estado runnable (ejecutables, listos para correr) en cualquier momento dado. Uno puede pensar conceptualmente en el estado runnable como si fuera el estado "numing", sólo tenemos que recordar que todos los hilos tienen que compartir los recursos del sistema.
Bloked
El estado not running se aplica a todos los hilos que están parados por alguna razón. Cuando un hilo está en este estado, está listo para ser usado y es capaz de volver al estado runnable en un momento dado. Los hilos pueden pasar al estado not running a través de varias vías.
A continuación se citan diferentes eventos que pueden hacer que un hilo esté parado de modo temporal.
- El método suspend ha sido llamado
- El método sleep ha sido llamado
- El método wait ha sido llamado
- El hilo esta bloqueado por YO
Dead
Un hilo entra en estado dead cuando ya no es un objeto necesario. Los hilos en estado dead no pueden ser resucitados y ejecutados de nuevo. Un hilo puede entrar en estado dead a través de dos vías:
- ..El método run termina su ejecución.
- ..El método stop es llamado.
Estados de un proceso en Linux
- Task_Running Proceso listo o en ejecución.
- Task_Interruptible: Proceso "dormido" que puede despertar por alguna señal o interrupción.
- Task_Interruptible: Similar al anterior, pero que no puede ser despertado inmediatamente, espera a una interrupción y no puede ser despertado por una señal (el proceso está suspendido)
- Task_Zombie: proceso-hijo terminando pero que no ha sido liberado por su proceso-padre
- Task_Stopped: proceso detenido, generalmente por una señal (SIGSTOP). Útil para depuración.
Linux no considera los hilos como tales. En Linux se crea un nuevo proceso copiando los atributos del proceso actual. Un nuevo proceso puede ser clonado para que comparta los recursos del actual, tales como archivos, gestores de se . nales o la memoria virtual.
Cuando dos procesos comparten la memoria, operan en efecto como hilos dentro del mismo espacio, del mismo proceso.
Sin embargo, no se manejan estructuras de datos para los hilos diferentes de las de los procesos, por lo que se puede argumentar que Linux no hace diferencias entre hilos y procesos.
Estados de un proceso en Windows 2000
En Windows 2000, la estructura original de los procesos y de los servicios que brinda el núcleo es relativamente simple y de propósito general. Las características más importantes de los procesos en W2K son las siguientes:
- Los procesos se implementan como objetos.
- Un proceso ejecutable puede tener un hilo o más.
- Los objetos proceso e hilo tienen capacidades de sincronización.
Un proceso es una entidad correspondiente a un trabajo de usuario o a una aplicación, que dispone de sus propios recursos, tales como memoria y archivos. Un hilo es una unidad de trabajo que se puede expedir para su ejecución secuencial y que es interrumpible, de forma que el procesador puede pasar de un hilo a otro.
Estados de un hilo en Windows 2000
- Ready: El hilo listo para ejecutarse
- Running: El hilo está ejecutando
- Standby: El hilo ha sido seleccionado para ser ejecutado en un procesador particular.
- Waiting: Se encuentra bloqueado esperando un evento
- Terminated: Finalización del hilo.
Tatiana Macchiavello