Estados de un proceso
En cualquier sistema operativo, es básico conocer el comportamiento que exhibirán los distintos procesos y el conjunto de estados que pueden atravesar.
Modelo de dos estados
El modelo más sencillo que puede construirse tiene en cuenta que 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 (Véase la figura 2.1).
Figura 2.1: Esquema de un diagrama de dos estados
Cuando el SO crea un nuevo proceso, éste entra en el sistema en el estado de No ejecución. De este modo, el proceso existe, es conocido por el SO y está esperando la oportunidad de ejecutarse. En un momento dado, el sistema operativo decide otorgar
http://alqua.org/libredoc/SSOO 192 Gestión de procesos el procesador a un proceso determinado con lo que dicho proceso pasará de estado No ejecución a Ejecución.
Cada cierto tiempo, el proceso en ejecución es interrumpido y el sistema operativo seleccionará un nuevo proceso para que tome el control del procesador. El proceso interrumpido pasa del estado de Ejecución al de No ejecución mientras que el proceso elegido realiza la transición inversa.
Incluso en este modelo tan simple, se aprecian ya algunos de los elementos importantes en el diseño de SSOO. Cada proceso debe representarse de forma que el sistema operativo tenga conocimiento de su estado actual y de su posición en memoria. Aquellos procesos que no estén en estado de ejecución deberán almacenarse en algún tipo de estructura de datos mientras esperan que el sistema operativo les otorgue el control sobre el procesador.
La siguiente figura 2.2 propone una estructura basada en una cola de procesos.
Dicha cola consiste en una lista enlazada de bloques en la que cada uno de estos bloques representa a un proceso. Cada bloque consistirá en un puntero a la estructura de datos donde el SO guarda toda la información relativa al proceso. El comportamiento del SO en este caso es similar al de un gestor de colas. Así, cada vez que el SO cree un nuevo proceso se introducirá el correspondiente bloque al final de la cola, acción que también se llevar´a a cabo cuando un proceso sea expropiado del procesador en favor de otro o cuando se bloquee en espera de que se complete una operación de E/S. Cuando un proceso termine su ejecución, será descartado del sistema. Si todos los procesos estuvieran siempre listos para ejecutar, la disciplina de comportamiento de cola presentada seria eficaz. El modelo de cola sigue un comportamiento FIFO y el procesador opera siguiendo un turno rotatorio con los procesos disponibles. De esta forma, a cada proceso de la cola se le otorga una cierta cantidad de tiempo para ejecutar. Si no se presentan bloqueos y transcurrido éste volver´a a la cola para optar de nuevo a tener control sobre el procesador. Sin embargo, esta implementación no es adecuada debido a que algunos procesos en estado de no ejecución estarán listos para ejecutar mientras que otros se encontraran a la espera de obtener algún recurso solicitado o a que se complete una operación de E/S. Así pues, el SO puede no entregar el procesador al proceso que se encuentre al frente de la cola. Si ´este está bloqueado, tendrá que recorrer la cola buscando el primer proceso que no lo este y que lleve más tiempo en espera.
Una forma más natural de afrontar esta situación es dividir el estado de no ejecución en dos; los estados listo y bloqueado. Además se añadirán dos nuevos estados al sistema.
Estos estados son: nuevo y terminado, que resultan de utilidad para las labores de gestión de procesos. Así se dará lugar al modelo de 5 estados.
Modelo de 5 estados
En este modelo un proceso puede encontrarse en cualquiera de los siguientes 5 estados.
1. Estado Nuevo: esta estado corresponderá a procesos que acaban de ser definidos pero que aún no han sido admitidos por el sistema operativo como procesos ejecutables.
Para estos procesos se habrán realizado ciertas tareas de gestión interna como la asignación de un identificador y la creación de algunas estructuras de control.
La principal motivación para la existencia de este estado es la limitación por parte del SO del número total de procesos activos por razones de rendimiento o por las restricciones impuestas por la capacidad de la memoria.
2. Estado Listo o Preparado: En este estado se encontraran aquellos procesos que dispongan de todos los recursos necesarios para comenzar o proseguir su ejecución
y se encuentran a la espera de que se les conceda el control del procesador.
3. Estado de Ejecución: En este estado se encuentra el proceso que tiene el control del procesador. Dado que se consideraran arquitecturas que disponen de un único procesador, en un instante determinado solo un proceso puede encontrarse en este estado.
4. Estado Bloqueado: En este estado se encuentran aquellos procesos que carecen de algún recurso necesario para su ejecución siendo este recurso distinto del procesador o bien se encuentran a la espera de que tenga lugar un determinado evento.
5. Estado Terminado: A este estado pertenecen aquellos procesos excluidos por el SO del grupo de procesos ejecutables. Un proceso alcanza este estado cuando llega al punto normal de terminación, cuando se abandona debido a un error irrecuperable o cuando un proceso con la debida autoridad hace que termine su ejecución. En este punto, el proceso ya no es susceptible de ser elegido para ejecutarse. Sin embargo, el SO conserva cierta información asociada con ´el para su posible utilización, bien por otras aplicaciones como programas de utilidad para el análisis de la historia y rendimiento del proceso o bien por parte del SO con fines estadísticos. Una vez extraída esta información, el SO ya no necesita mantener más datos relativos al proceso y éstos se borran del sistema.
En la figura 2.3 presentamos el diagrama de transiciones entre estados
Transición a Nuevo: Se crea un nuevo proceso para ejecutar un programa
Transición Nuevo-Preparado: Esta transición tiene lugar cuando el SO está preparado para aceptar o admitir un proceso más. Se tendrán en cuenta las restricciones derivadas de la capacidad de la memoria y que no haya tantos procesos activos como para degradar el rendimiento.
Transición Preparado-Ejecución: Esta transición se produce cuando el SO selecciona un nuevo proceso para ejecutar en función de su política de planificación.
Transición Ejecución-Preparado: La razón más común para esta transición es que el proceso que está en ejecución ha alcanzado el tiempo máximo permitido de ejecución ininterrumpida. Hay otras causas alternativas que no están implementadas en todos los SSOO como la expropiación de un proceso en favor de otro más prioritario.
Otra situación, muy extraordinaria, que origina esta transición es que un proceso ceda voluntariamente el control del procesador.
Transición Ejecución-Bloqueo: Un proceso realiza esta transición cuando queda a la espera por la concesión de un determinado recurso o por la ocurrencia de un determinado suceso.
Transición Bloqueado-Preparado: Tiene lugar si a un proceso bloqueado se le concede el recurso solicitado u ocurre el suceso por el que estaba esperando.
Transición Preparado-Terminado: Puede ocurrir si, por ejemplo, un proceso padre decide en un momento determinado finalizar la ejecución de sus procesos hijos. Si alguno de dichos procesos se encontraba en estado preparado realizará esta transición. Otra razón puede ser debida a un requisito de memoria que es denegado.
Transición Bloqueado-Terminado: Un proceso hijo puede realizar esta transición por la misma razón que la anterior. Otra causa puede ser que el proceso supere el tiempo máximo de espera por un recurso y el sistema operativo decida entonces terminarlo
(Es la razón más habitual).
Este modelo de 5 estados puede implementarse igualmente mediante estructuras de tipo cola siguiendo un esquema como el se muestra en la figura 2.4.
Ahora se dispone de dos colas, una para los procesos en situación de preparado y otra para los bloqueados. A medida que se admiten procesos nuevos en el sistema, éstos se sitúan en la cola de preparados. Cuando el SO tiene que escoger un proceso para ejecutar, lo hace sacando uno de dicha cola. En ausencia de prioridades, la referida cola puede gestionarse mediante un algoritmo FIFO. Cuando un proceso es expropiado del procesador, puede ser porque ha terminado su ejecución, porque ha excedido el tiempo máximo de posesión del procesador y entonces es devuelto a la cola de preparados o porque ha quedado bloqueado a la espera de un determinado suceso con lo que se introducirá en la cola de bloqueados. Cuando tiene lugar un determinado suceso, todos los procesos que esperaban por ´el son pasados desde la cola de bloqueados a la de preparados.
Esta última medida significa que cuando se produce un suceso, el SO debe recorrer toda la cola de bloqueados buscando aquellos procesos que esperen por el suceso. En un SO grande puede haber una gran cantidad de procesos en la cola de bloqueados, por tanto, resultará más eficiente disponer de un conjunto de colas, una para cada suceso. En tal caso, cuando se produzca un evento, la lista entera de procesos en la cola correspondiente a ese suceso podrá pasarse a estado preparado.
Si la planificación de procesos se realiza mediante un esquema basado en prioridades, entonces es conveniente tener un cierto número de colas de procesos listos, una para cada prioridad.
Trabajo realizado por:
Elmo Vasquez Espinoza estudiante del 2do año de Ingenieria de Sistemas.
No hay comentarios:
Publicar un comentario