En un sistema informático multitarea , los procesos pueden ocupar una variedad de estados . Es posible que el núcleo del sistema operativo no reconozca estos distintos estados como tales . Sin embargo, son una abstracción útil para la comprensión de los procesos.
En sistemas informáticos de todo tipo son posibles los siguientes estados de proceso típicos. En la mayoría de estos estados, los procesos se "almacenan" en la memoria principal .
Cuando un proceso se crea por primera vez, ocupa el estado " creado " o " nuevo ". En este estado, el proceso espera la admisión al estado "listo". La admisión será aprobada o retrasada por un programador de admisión a largo plazo . Normalmente, en la mayoría de los sistemas informáticos de escritorio , esta admisión se aprobará automáticamente. Sin embargo, para los sistemas operativos en tiempo real esta admisión puede retrasarse. En un sistema en tiempo real, admitir demasiados procesos en el estado "listo" puede provocar una sobresaturación y una contención excesiva de los recursos del sistema, lo que provocará la incapacidad de cumplir con los plazos de los procesos.
Un proceso "listo" o "en espera" se ha cargado en la memoria principal y está esperando su ejecución en una CPU (para que el despachador o el programador a corto plazo cambie el contexto a la CPU). Puede haber muchos procesos "listos" en cualquier punto de la ejecución del sistema; por ejemplo, en un sistema de un solo procesador, sólo se puede ejecutar un proceso a la vez y todos los demás procesos "que se ejecutan simultáneamente" estarán esperando. ejecución.
En la programación informática se utiliza una cola lista o una cola de ejecución . Las computadoras modernas son capaces de ejecutar muchos programas o procesos diferentes al mismo tiempo. Sin embargo, la CPU sólo es capaz de manejar un proceso a la vez. Los procesos que están listos para la CPU se mantienen en una cola de procesos "listos". Otros procesos que están esperando que ocurra un evento, como cargar información desde un disco duro o esperar una conexión a Internet, no están en la cola listos.
Un proceso pasa al estado de ejecución cuando se elige para su ejecución. Las instrucciones del proceso son ejecutadas por una de las CPU (o núcleos) del sistema. Hay como máximo un proceso en ejecución por CPU o núcleo. Un proceso puede ejecutarse en cualquiera de los dos modos, es decir, modo kernel o modo usuario . [1] [2]
Un proceso pasa a un estado bloqueado cuando no puede continuar sin que ocurra un cambio externo de estado o evento. Por ejemplo, un proceso puede bloquearse en una llamada a un dispositivo de E/S, como una impresora, si la impresora no está disponible. Los procesos también suelen bloquearse cuando requieren la entrada del usuario o requieren acceso a una sección crítica que debe ejecutarse de forma atómica. Estas secciones críticas se protegen mediante un objeto de sincronización como un semáforo o un mutex.
Un proceso puede terminarse , ya sea desde el estado "en ejecución", completando su ejecución o matándolo explícitamente. En cualquiera de estos casos, el proceso pasa al estado "terminado". El programa subyacente ya no se ejecuta, pero el proceso permanece en la tabla de procesos como un proceso zombie hasta que su proceso padre llama a la wait
llamada al sistema para leer su estado de salida , momento en el que el proceso se elimina de la tabla de procesos y finalmente finaliza la ejecución del proceso. vida. Si el padre no llama wait
, esto continúa consumiendo la entrada de la tabla de procesos (concretamente el identificador de proceso o PID) y provoca una fuga de recursos .
Hay dos estados adicionales disponibles para procesos en sistemas que admiten memoria virtual . En ambos estados, los procesos se "almacenan" en la memoria secundaria (normalmente un disco duro ).
(También llamado suspendido y en espera ). En sistemas que admiten memoria virtual, el programador puede intercambiar un proceso, es decir, eliminarlo de la memoria principal y colocarlo en un almacenamiento externo. Desde aquí, el proceso puede volver al estado de espera.
(También llamado suspendido y bloqueado ). Los procesos que están bloqueados también pueden intercambiarse. En este caso, el proceso se intercambia y se bloquea, y se puede volver a iniciar en las mismas circunstancias que un proceso intercambiado y en espera (aunque en este caso, el proceso pasará al estado bloqueado y es posible que aún esté esperando). para que un recurso esté disponible).