Gestión de procesos

De Documentacion NexuN

S.O. Gestión de procesos

Hay que tener cuidado de no confundir entre los programas y los procesos, un proceso es la ejecución de un programa.

Los procesos puede encontrarse en tres estados

Esquema de procesos

Práctica: ¿Qué realizan los siguientes comandos?

ps, pstree, kill(-20 > 19), nice, renice, nohup, fg, bg, ctrol+c, top, qstat, etc ....

   ejemplo:
   ps -ef
   ps -ef | grep bash
   sleep 1h &
   sleep 1h (Ctrol + C)
   jobs
   sleep 1h (Ctrol + Z)
   jobsd
   kill -9  ....


Multiprogramación: Es la técnica que permite que dos o mas programas ocupen la misma unidad de memoria principal y que sean ejecutados al mismo tiempo.

Cuando el S.O. entrega a la CPU un nuevo proceso, tiene que guardar el estado del proceso que estaba ejecutando y cargar el nuevo proceso, esto es un cambio de contexto.

Cuando tenemos un cambio de contexto tenemos que decidir que proceso de la cola de procesos listos vamos a empezar o a continuar ejecutando. Depende de como lo elijamos tendremos diferentes resultados, por ejemplo, tenemos 2 procesos

 Proceso 1 = P1 (ocupa 2)
 Proceso 2 = P2 (ocupa 4)

Si ejecutamos primero P1 y después P2 tendremos: (2,4)

Tiempo de espera medio = (0+2)/2 = 1


Si ejecutamos primero P2 y después P1 tendremos: (4,2)

Tiempo de espera medio = (0+4)/2 = 2

Notar que si priorizamos siempre los procesos más cortos obtendremos tiempos de espera medios más pequeños sin embargo ¿Qué problema encontramos?

Para elegir el siguiente proceso podemos utilizar diferentes algoritmos, por cierto ¿Qué es un algoritmo?

Diferentes algoritmos para organizar los procesos:

FCFS (First-come, first-served), el primero en llegar es el primero en ser servido.

SJN (Shortest-job-nest). El siguiente es el proceso más corto.

RR (Round-robin) Utiliza el algoritmo FCFS con la variante de que un proceso no puede estar utlizando la CPU por más de un quantum

  [1]

¿Pueden bloquearse los procesos?