- 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