Procesos y Planificación de Trabajos en los Sistemas Operativos

Todos los programas, cuya ejecución solicitan los usuarios, se ejecutan en forma de procesos, de ahí la importancia para el informático de conocerlos con detalle.

Estados de un Proceso

La misión principal del procesador es ejecutar las instrucciones de la máquina que residen en la memoria principal. Estas instrucciones se dan en forma de programas que contienen secuencias de instrucciones. De este modo, desde el punto de vista del procesador, este ejecutará instrucciones de entre un repertorio en una secuencia dictada por los valores cambiantes de un registro conocido como el contador de programa (PC, Program Counter) o puntero a las instrucciones. A lo largo del tiempo, este contador puede apuntar a código de programas diferentes que son parte de diferentes aplicaciones. Desde el punto de vista de un programa individual, su ejecución involucra una secuencia de instrucciones del programa. La ejecución de un programa individual se conoce como proceso o tarea. El comportamiento de un proceso individual puede caracterizarse por el listado de la secuencia de instrucciones que se ejecutan para dicho proceso. Dicho listado se llama traza del proceso.

Modelo de Procesos con Dos Estados

La responsabilidad principal del sistema operativo es el control de la ejecución de los procesos; esto incluye la determinación de las pautas de intercalado que se van a seguir y la asignación de recursos a los procesos. Para poder diseñar el sistema operativo de una forma efectiva, se necesita tener un modelo claro del comportamiento de un proceso. El primer paso para diseñar un programa que controle los procesos es describir el comportamiento que se querría que presenten los procesos. El modelo más sencillo que puede construirse tiene en cuenta que, en un momento dado, un proceso puede estar ejecutándose en el procesador o no. Así pues, un proceso puede estar en uno de dos estados: Ejecución o No Ejecución. Cuando el sistema operativo crea un nuevo proceso, este entra en el sistema en estado de No Ejecución. De este modo, el proceso existe, es conocido por el sistema operativo y está esperando la oportunidad de ejecutarse. De cuando en cuando, el proceso que está ejecutando será interrumpido y el programa distribuidor del sistema operativo seleccionará un nuevo proceso para que se ejecute. El proceso anterior pasa del estado de Ejecución al estado de No Ejecución y uno de los demás procesos pasará al estado de Ejecución.

Modelo de Cinco Estados

Una forma más natural de afrontar esta situación es dividir el estado de No Ejecución en dos estados: Listo y Bloqueado. Se han incorporado dos estados más que se mostrarán de utilidad. Los cinco estados de este nuevo diagrama son los siguientes:

  • Ejecución: El proceso que está actualmente en ejecución. En este capítulo se suponen computadores con un único procesador, de forma que solo un proceso, a lo sumo, puede estar en este estado en un instante dado.
  • Listo: Proceso que está preparado para ejecutar, en cuanto se le dé la oportunidad.
  • Bloqueado: Proceso que no puede ejecutar hasta que se produzca cierto suceso, como la terminación de una operación de E/S.
  • Nuevo: Proceso que se acaba de crear, pero que aún no ha sido admitido por el sistema operativo en el grupo de procesos ejecutables.
  • Terminado: Un proceso que ha sido excluido por el sistema operativo del grupo de procesos ejecutables, bien porque se detuvo o porque fue abandonado por alguna razón.

Transiciones entre Estados

Se verán cada una de las posibilidades por turnos:

  • Nulo → Nuevo: Se crea un nuevo proceso para ejecutar un programa.
  • Nuevo → Listo: El sistema operativo pasará un proceso del estado Nuevo al estado Listo cuando esté preparado para aceptar un proceso más.
  • Listo → Ejecución: Cuando es hora de seleccionar un nuevo proceso para ejecutar, el sistema operativo elige a uno de los procesos del estado Listo.
  • Ejecución → Terminado: El proceso que se está ejecutando es finalizado por el sistema operativo si indica que terminó o si se abandona.
  • Ejecución → Listo: La razón más común de esta transición es que el proceso que está en ejecución ha alcanzado el tiempo máximo permitido de ejecución interrumpida; casi todos los sistemas operativos con multiprogramación imponen este tipo de norma de tiempo.
  • Ejecución → Bloqueado: Un proceso se pone en el estado Bloqueado si solicita algo por lo que debe esperar. Las solicitudes al sistema operativo suelen ser en forma de llamadas a servicios del sistema, es decir, llamadas desde el programa que está ejecutándose a un procedimiento que forma parte del código del sistema operativo.
  • Bloqueado → Listo: Un proceso que está en el estado Bloqueado pasará al estado Listo cuando se produzca el suceso que estaba esperando.
  • Listo → Terminado: En algunos sistemas, un padre puede terminar con un proceso hijo en cualquier momento. Además, si el padre termina, todos los procesos hijos asociados con él pueden ser finalizados.
  • Bloqueado → Terminado: Se aplica el mismo comentario que en el caso anterior.

Descripción de Procesos

Estructuras de Control del Sistema Operativo

Si el sistema operativo va a administrar los procesos y los recursos, entonces tiene que disponer de información sobre el estado actual de cada proceso y de cada recurso. El S.O. construye y mantiene tablas de información sobre cada entidad que esté administrando. Hay cuatro tipos de tablas diferentes mantenidas por el sistema operativo: de memoria, de E/S, de archivos y de procesos.

Las tablas de memoria deben incluir la siguiente información:
  • La asignación de memoria principal a los procesos
  • La asignación de memoria secundaria a los procesos
  • Atributos de protección de segmentos de memoria, tales como qué procesos pueden acceder a ciertas regiones compartidas de memoria
  • Cualquier información necesaria para gestionar la memoria virtual
Las tablas de E/S son utilizadas por el sistema operativo para administrar los dispositivos y canales de E/S del sistema informático.
Las tablas de archivos ofrecen información sobre la existencia de los archivos, su posición en la memoria secundaria, su estado actual y otros atributos.

Finalmente, el sistema operativo debe mantener tablas de procesos para administrarlos.

Todas estas tablas deben estar enlazadas o disponer de referencias cruzadas de alguna manera. La memoria, E/S y los archivos son administrados en nombre de los procesos, por lo que debe haber alguna referencia directa o indirecta a estos recursos en las tablas de procesos.