martes, 28 de noviembre de 2017

Estados de procesos

El tiempo de vida de un proceso se puede dividir en un conjunto de estados, cada uno con unas características determinadas. Es decir, que un proceso no permanece siempre en un mismo estado, sino que está continuamente cambiando de acuerdo con unas reglas bien definidas.

Estos estados vienen impuestos por la competencia que existe entre los procesos para compartir un recurso tan escaso como es la CPU. En UNIX, un proceso puede estar en cualquiera de los siguientes estados:

·        Creado:
o   Este estado es el estado inicial para todos los procesos excepto el swapper (proceso de intercambio, se crea cuando el sistema bootea).
o   El proceso acaba de ser creado y está en un estado de transición; el proceso existe, pero ni está preparado para ejecutarse, ni está durmiendo.

·        Ejecutándose en modo usuario:
o   Transición al estado “ejecutándose en modo kernel”.

·        Ejecutándose en modo kernel:
o   Gestión de interrupciones y llamadas al sistema, planificación, etc. Esta transición se debe a eventos que solo el kernel puede controlar y que no pueden pasar a otro estado de tránsito. [Evento=interrupción/volver de interrupción].
o   Cuando el proceso termine de ejecutarse en modo kernel, regresa a ejecutarse en modo usuario.

·        Listo para ejecutarse en memoria o en el área swap de memoria secundaria:
o   Listo para ejecutarse en memoria: El proceso no se está ejecutando, pero está listo para ejecutarse tan pronto como el scheduler (parte del sistema operativo que inicia y termina las tareas) lo ordene. Puede haber varios procesos simultáneamente en este estado.
o    Listo para ejecutarse en el área swap, en memoria secundaria: No hay memoria principal suficiente para todos los procesos. El proceso está listo para ejecutarse, pero el swapper debe cargar el proceso en memoria secundaria (swap out) antes de que el kernel pueda ordenar que pase a ejecutarse.

·        Durmiendo cargando en memoria o en el área swap en memoria secundaria:
o   El proceso está durmiendo cargando en memoria principal: Un proceso entra a este estado cuando no puede proseguir su ejecución porque está esperando a que se complete una operación de entrada/salida.
o   El proceso está durmiendo y el swapper ha descargado el proceso en memoria secundaria (en el área swap) para crear el espacio en memoria principal para poder cargar otros procesos. Una vez que el proceso ha estado durmiendo en memoria secundaria, según un evento despertar, puede pasar al estado “listo para ejecutarse en memoria secundaria (área swap)”.
  
·        Requisado, expulsado o apropiado:
o   El proceso está volviendo del modo kernel al modo usuario, pero el kernel se apropia de él y hace un cambio de contexto, pasando otro proceso a ejecutarse en modo usuario.
o    Desde este estado el proceso puede pasar al estado de “ejecutándose en modo usuario” tras un evento de volver al modo usuario.

·        Estado Zombie:
o   Fin de la ejecución de un proceso, pero sigue siendo referencia en el sistema; tras un evento de llamada al sistema exit, se pasa al estado Zombie. El proceso ya no existe, pero deja para su proceso padre un registro que contiene el código de salida y algunos datos estadísticos tales como el tiempo de ejecución. El estado Zombie es el estado final de un proceso.

No hay comentarios:

Publicar un comentario