2.2. Estados y Transiciones de los Procesos

El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Estas instrucciones se encuentran en forma de programas. Para que un programa pueda ser ejecutado, el sistema operativo crea un nuevo proceso, y el procesador ejecuta una tras otra las instrucciones del mismo. En un entorno de multiprogramación, el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso. Aunque cada proceso se una entidad independiente, con su propio contador de programa y estado interno, los procesos a menudo necesitan interactuar con otros procesos. Un proceso podría generar ciertas salidas que otro proceso utilizan como entradas, en el comando de Shell. 

Cuando un proceso se bloquea, lo que hace porque le es imposible continuar lógicamente, casi siempre porque está separando entradas que todavía no están disponibles, también puede ser que un programa que conceptualmente está listo y en condiciones de ejecutarse sea detenido porque el sistema operativo ha decidido asignar la CPU a otro proceso durante un tiempo. Estas dos condiciones son totalmente distintas, en el primer caso, la suspensión es inherente al problema. En el segundo caso, se trata de un tecnicismo del sistema (no hay suficiente: CPU para darle a cada proceso su propio procesador privado). 

  •  Ejecutándose (usando realmente la CPU en este instante). 
  •  Listo (se puede ejecutar, pero se suspendió temporalmente para dejar que otro               proceso se ejecute). 
  •  Bloqueo (no puede ejecutarse en tanto no ocurra algún evento externo).
  •  Puede haber cuánto transiciones entre estos tres estados, como se muestra. 

La transacción 1 ocurre cuando un proceso descubre que no puede continuar. En algunos sistemas el proceso debe ejecutar una llamada al sistema, block, para pasar al estado bloqueado. En otros sistemas, incluido MINIX, cuando un proceso  lee de un conducto o de un archivo especial y no hay entradas disponibles, se bloquea automáticamente. 

  • Las transiciones 2 y 3 son causadas por el planificador de procesos, un parte del sistema operativo, sin que el proceso se entere siquiera de ellas. 
  • La transición 2 ocurre cuando el planificador decide que el proceso en ejecución ya se ejecutó durante suficiente tiempo y es ahora de dejar que otros procesos tengan algo de tiempo de CPU. 
  •  La transacción 3 ocurre cuando todos los demás procesos han disfrutado de una porción justa y es hora de que el primer proceso reciba otra vez la CPU para ejecutarse. La transacción 4 ocurre cuando acontece el suceso externo que un proceso estaba esperando (como la llegada de entrada). Sin ningún otro proceso se está ejecutando en ese instante, se dispara de inmediato la transacción 3 y el proceso comienza a ejecutarse. En caso contrario, el proceso tal vez tenga que esperar en el estado listo durante cierto tiempo hasta que la CPU esté disponible. Usando el modelo de procesos, es mucho más fácil visualizar lo que está sucediendo dentro del sistema.

Estado de los Procesos

Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario.



Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.

1.- Estados activos

Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:

  • Ejecución: Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
  • Preparado: Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
  • Bloqueado: Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida). 

2.- Estados inactivos

Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio.

Son de dos tipos:

  • Suspendido bloqueado: Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.
  • Suspendido programado: Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.

  Información asociada con cada proceso:

  • Estado del proceso.
  • Program counter.
  • Registros del CPU.
  • Información de planificación del CPU.
  • Memoria.
  • Información para administración.
  • Información de estatus de E/S.

Creación de Procesos

  • Crear un proceso implica operaciones como:
  • Dar un nombre a un proceso.
  • Insertarlo en la lista de procesos conocidos del sistema (o tabla de procesos)
  • Determinar la prioridad inicial de proceso.
  • Crear el bloque de control de proceso.
  • Asignar los recursos iniciales al proceso.

 Un proceso puede crear un nuevo proceso. Si lo hace el proceso creador se denomina proceso padre, y el proceso creado, proceso hijo. Sólo se necesita un padre para crear un hijo. Tal creación origina una estructura jerárquica de procesos. No se puede destruir un proceso cuando este ha creado otros procesos.

 Destruir un proceso implica eliminarlo del sistema. Se le remueve de la tabla o listas del sistema, sus recursos se devuelven al sistema y su bloque de control de proceso se borra (es decir, el espacio de memoria ocupado por su PCB se devuelve al espacio de memoria disponible.

Comentarios