Gestión de procesos en Unix
Estados de un proceso en Unix
Dado que Unix es un sistema que soporta la multiprogramación, varios procesos pueden ejecutarse “al mismo tiempo”, por lo que es importante manejarla adecuadamente.
- User running: Ejecución en el modo usuario
- Kernel running: Ejecución en el núcleo
- Ready To Run, in Memory: El proceso está listo para ejecutarse tan pronto el núcleo lo decida
- Asleep in Memory: El proceso es incapaz de ejecutarse hasta que un evento ocurra; se encuentra en memoria principal (estado bloqueado)
- Ready to Run: El proceso está listo para ejecutarse, pero debe trasladarse a la memoria principal antes de que el núcleo pueda programarlo para ejecutar.
- Sleeping, Swapped: El proceso está esperando por un evento y ha sido movido a la memoria secundaria (estado bloqueado)
- Preempted (Adelantado): El proceso vuelve del núcleo al modo usuario, pero el núcleo se le adelanta y pasa a ejecución a otro proceso.
- Created: El proceso está recién creado y aún no está listo para ejecutarse.
- Zombie: El proceso no existe más, pero deja un registro de su proceso principal para recolectar.
Diagrama de transición de estados de los procesos de UNIX
Multiusuario y multitarea
Algoritmo de planificación
Las prioridades de los procesos se cambian dinámicamente y se utiliza un algoritmo de planificación de tipo round robin para los procesos con la misma prioridad:
A cada proceso se le asigna un cuantum (tiempo de ejecución máximo), se cambia de proceso cada que el que esté utilizando la CPU se termina su cuantum, permitiendo que otro proceso ocupe la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU.
Además utiliza una tabla de parámetro de distribución para controlar las prioridades de los procesos y sus cuantums, de tal forma que el cuantum dado a un proceso depende de su prioridad de planificación, y la tabla de parámetros define el cuantum para cada prioridad. Por defecto, cuanto es menor la prioridad de un proceso mayor es su cuantum, lo que puede parecer una contradicción pero su explicación es que puesto que los procesos de baja prioridad no se ejecutan muy a menudo es justo darles un cuantum mayor cuando son ejecutados.
Solución a problemas de concurrencia.
Dado que Unix es un sistema que soporta la multiprogramación, varios procesos pueden ejecutarse “al mismo tiempo”, por lo que es importante manejarla adecuadamente.
Los mecanismos que utiliza Unix son:
-Pipes (Tuberías): Es una cadena de procesos conectados de forma tal que la salida de cada elemento de la cadena es la entrada del próximo. Se basa en la interacción productor/ consumidor.
-Mensajes: Es la forma como los procesos se comunican y relacionan entre ellos.
-Semáforos: Es una estructura diseñada para sincronizar dos o más procesos de modo que su ejecución se realice de forma ordenada y sin conflicto entre ellos.
-Señales: Es una forma limitada de comunicación, la cual consiste en una notificación asíncrona enviada por un proceso para notificar un evento.
API de Unix
API de Unix
Comentarios
Publicar un comentario