Hemos comentado previamente que solo puede haber 1 proceso en ejecución por núcleo, es decir: la multitarea real no existe
Sin embargo, somos capaces de oír música, a la vez, navegamos por internet, e incluso se puede estar grabando un CD o copiando una carpeta. Por todo esto, decimos que el sistema operativo es multiproceso o multitarea, se ejecutan muchos procesos o tareas a la vez. Pero si la multitarea real no existe, ¿por qué es multitarea y lo parece?
El ordenador es muy rápido, un PC a 3GHz, significa que en 1 segundo realiza la cantidad increíble de 3.000.000.000 millones de operaciones elementales.
El ordenador en ese segundo, tiene tiempo de cambiar muchísimas veces de tarea, de forma que nosotros no notemos ese cambio de tarea, nos parece que se ejecuta todo a la vez, cuando no es así.
Algoritmos de planificación de procesos
El planificador de procesos del sistema operativo, decide qué proceso de la cola de preparados pasa a estar en ejecución en cada momento. Después, puede decidir dejar el tiempo que necesite el proceso, o que ese proceso pase a preparado, pasando otro de la cola de listos a en ejecución. Estas transiciones continuas, entre procesos listos y en ejecución, es lo que da lugar a la multiprogramación, pues aunque se ejecuta un solo proceso en cada núcleo, da la sensación de que se ejecutan varios procesos a la vez o en paralelo.
Los algoritmos de planificación de procesos, sirven para decidir qué proceso pasa a estar activo. El objetivo de los algoritmos, es acabar la ejecución de los procesos cuanto antes.
Hay varios algoritmos. Los primeros son los que menos se usan actualmente (FIFO, SJF), pero aclaran para que sirven estos algoritmos. Los más utilizados en la actualidad, son los últimos (SRT, Round Robin y prioridades)
- Algoritmo FIFO. Primero en llegar, primero en salir (First Input, First Output). Es el algoritmo más sencillo, los procesos pasan al estado activo en el orden que llegaron al estado preparado. (La cola que hacemos en las tiendas siempre) En este algoritmo, cuando un proceso pasa al estado en ejecución, se ejecuta hasta el final.
- Algoritmo SJF. Primero el trabajo más corto. (Shortest Job First). De los procesos que están en estado preparado, se selecciona el que tiene menor tiempo de ejecución. Una vez que el trabajo se inicia, se ejecuta hasta el final.
- Algoritmo SRT. Tiempo restante más corto. (Shortest Remaining Time). En FIFO y SJF el proceso activo se ejecuta hasta el final. En SRT, ya no es así. El planificador utiliza el criterio SJF, pero tiene en cuenta los nuevos procesos que puedan llegar al estado preparado. Por ejemplo, si se está ejecutando un proceso A que le quedan 3 instantes, pero llega un nuevo proceso B al estado preparado que solo necesita 1 instante, el proceso A pasa al estado preparado, mientras que B pasa a ejecución por necesitar menos tiempo. Es el primer algoritmo que utiliza la multiprogramación.(Un proceso activo, se deja de ejecutar, para que se ejecute otro). También se dice que son algoritmos expropiativos (se quita el procesador al proceso activo).
Observaciones:
FIFO puede bloquear procesos muy cortos, por estar ejecutando uno muy largo.
SJF y SRT puede bloquear procesos muy largos, por ejecutarse siempre los más cortos.
FIFO y SJF dan malos resultados, pero son muy fáciles de implantar. El sistema operativo realiza pocos cálculos, por lo que no se pierde tiempo. Son los únicos algoritmos monoproceso, monotarea, no multiprogramados o no expropiativos.
SRT se utiliza bastante en los sistemas operativos actuales, pues se ha comprobado que da un tiempo medio de espera muy bueno.
Veamos 2 algoritmos más, ambos multiprogramados o expropiativos: Round Robin y prioridades.
- Algoritmo RR, Round Robin: prioridad circular. Se establece un cuanto, este cuanto es el tiempo de ejecución que se va a ejecutar cada proceso. ¿Cómo funciona? El planificador asigna el procesador al primer proceso, pasado ese tiempo cuanto, se asigna el procesador al siguiente proceso preparado. Y así sucesivamente. El proceso que estaba en ejecución pasa a la cola de preparados. De ahí, el nombre de circular, se parece cuando jugamos a las cartas y por ejemplo, todos los jugadores echan 2 cartas. Su ventaja, es que garantiza un tiempo de respuesta razonable a todos los procesos. Su desventaja, es que el tiempo que se pierde cada cuanto en cambiar de proceso, ralentiza el algoritmo. De forma, que teóricamente debería dar mejores resultados que RST, pero en la práctica tienen un rendimiento similar.
- Prioridades. Cada proceso tiene asignada una prioridad y el de mayor prioridad en el estado listo es el que pasa a estar en ejecución. El valor de prioridad puede ser asignado por el usuario o el sistema. Asimismo, el usuario puede cambiar en cualquier momento la prioridad de un proceso. Las prioridades son buenas, pero por si solas tienen el problema de que un proceso con poca prioridad no se ejecutaría nunca. Para solucionar este problema, se mejora el algoritmo utilizando prioridad por envejecimiento. Trata, de que si un proceso lleva mucho tiempo en estado preparado, se sube su prioridad, de esa forma, tiene más posibilidades de pasar a activo.
Observaciones finales:
Los algoritmos SRT, Round Robin y prioridades dan buenos resultados.
Aun así, lo habitual es utilizar varios algoritmos mezclados. De esa forma, se intenta obtener lo mejor de cada uno.
En sistemas actuales, se suelen utilizar “prioridad con SRT” y “prioridad con Round Robin”. FIFO y SJF, se utilizan como criterios de desempate final.