En un sistema informático multitarea , los procesos pueden ocupar distintos estados . Es posible que el núcleo del sistema operativo no reconozca estos estados distintos como tales . Sin embargo, son una abstracción útil para comprender los procesos.
Los siguientes estados de proceso típicos son posibles en sistemas informáticos de todo tipo. En la mayoría de estos estados, los procesos se "almacenan" en la memoria principal .
Cuando se crea un proceso 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 o de largo plazo . Por lo general, en la mayoría de los sistemas informáticos de escritorio , esta admisión se aprobará automáticamente. Sin embargo, en los sistemas operativos de tiempo real , esta admisión puede retrasarse. En un sistema de 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 conduce a una incapacidad para cumplir con los plazos de los procesos.
Se ha cargado un proceso "listo" o "en espera" en la memoria principal y está esperando su ejecución en una CPU (para que el despachador o el planificador a corto plazo lo cambie de contexto a la CPU). Puede haber muchos procesos "listos" en cualquier punto de la ejecución del sistema; por ejemplo, en un sistema con un solo procesador, solo se puede ejecutar un proceso en cualquier momento, y todos los demás procesos "que se estén ejecutando simultáneamente" estarán esperando su ejecución.
En la programación informática se utiliza una cola de procesos listos o una cola de ejecución . Las computadoras modernas pueden ejecutar muchos programas o procesos diferentes al mismo tiempo. Sin embargo, la CPU solo puede manejar un proceso a la vez. Los procesos que están listos para la CPU se mantienen en una cola para 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 de procesos listos.
Un proceso pasa al estado de ejecución cuando se lo 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 se produzca un cambio de estado externo o un evento. Por ejemplo, un proceso puede bloquearse ante 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 intervención del usuario o cuando necesitan acceder a una sección crítica que debe ejecutarse de forma atómica. Dichas secciones críticas se protegen mediante un objeto de sincronización, como un semáforo o un mutex.
Un proceso puede ser terminado , 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 está ejecutando, pero el proceso permanece en la tabla de procesos como un proceso zombi hasta que su proceso padre llama a la wait
llamada del sistema para leer su estado de salida , momento en el que el proceso se elimina de la tabla de procesos, terminando finalmente la vida útil del proceso. Si el padre no llama a wait
, esto continúa consumiendo la entrada de la tabla de procesos (concretamente el identificador de proceso o PID) y provoca una pérdida de recursos .
Hay dos estados adicionales disponibles para los 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 cambiar un proceso, es decir, quitarlo 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 ser intercambiados. En este caso, el proceso es intercambiado y bloqueado, y puede ser intercambiado nuevamente en las mismas circunstancias que un proceso intercambiado y en espera (aunque en este caso, el proceso pasará al estado bloqueado y puede seguir esperando que un recurso esté disponible).