Académique Documents
Professionnel Documents
Culture Documents
Cuando hay más de un proceso ejecutable, el sistema operativo debe decidir cual ejecutara primero. La parte
del sistema operativo que toma esta decisión se denomina planificador; el algoritmo que usa se denomina algoritmo
de planificación.
En la época de los sistemas por lote, el algoritmo planificador era sencillo, simplemente se ejecutaba el
trabajo en la cinta. En los sistemas de tiempo compartido, el algoritmo de planificación es más complejo, pues es
comunique haya varios procesos iniciados por el usuario compartiendo la CPU.
Antes de examinar los algoritmos, debemos pesar en que está tratando de lograr. Algunos criterios son:
1. Equitativita. Cada proceso recibe una parte justa del tiempo de CPU.
2. Eficiencia. Mantener la CPU ocupada todo el tiempo.
3. Tiempo de respuesta. Minimizar el tiempo de respuesta para usuarios.
4. Retorno. Minimizar el tiempo de espera por salidas.
5. Volumen de producción. Maximizar el número de trabajos.
Puede ser que estos criterios sean un poco contradictorios. Sin embargo después de todo, la cantidad de
tiempo que dispone la CPU es finita. Para darle más a un usuario tenemos que darle menos a otro.
Una complicación que enfrentan los planificadores es que cada proceso es único e impredecible. Algunos
dedican el tiempo a esperar entrada-salida de archivos, mientras otros usarían la CPU durante horas si se les
permitiera, pero nunca se sabe con certeza cuando tiempo pasara antes de terminar y ejecutar un proceso.
Para asegurarse que ningún proceso se ejecute durante mucho tiempo, casi todas las computadoras tienen
incorporado un cronometro o reloj electrónico que genera interrupciones periódicamente. Es común que la frecuencia
sea de 50 o 60 interrupciones por segundo (50 o 60 Hertz-Hz). Esta estrategia se denomina planificación
expropiativa y contrasta con el método de ejecución hasta terminar de los primeros sistemas por lotes. La ejecución
hasta terminar también se denomina planificación no expropiativa. [BO]
Colas múltiples.
Uno de los primeros planificadores por prioridad se incluyó en CTSS (Compatible Time-Sharing System,
fue uno de los primeros sistemas operativos de tiempo compartido), El cual tenía el problema de que la conmutación
de procesos era muy lenta porque la 7094 solo podía contener un proceso en la memoria. Los diseñadores de CTSS
se dieron cuenta que resultaba más eficiente dar a los procesos limitados por CPU un cuanto largo de vez en cuando
en lugar de darles cuantos pequeños muy a menudo. Dar a los procesos un cuanto largo implicaría u tiempo de
respuesta deficiente. Su solución consistió en establecer clase e prioridad. Los procesos de la clase más alta se
ejecutaban durante un cuento. Los de la siguiente se ejecutaban durante cuatro cuanto y así sucesivamente. Cada que
un proceso agotaba todos los cuantos asignados, se le degradaba una clase.
Se adoptó la siguiente política para evitar que un proceso que en el momento de iniciarse necesita ejecutarse
durante un tiempo largo paro posteriormente se vuelve interactivo fuera castigado indefinidamente. Cada vez que en
una terminal se pulsaba el retorno de carro, el procedimiento perteneciente a esa terminal se pasaba a la clase de más
alta prioridad, bajo el supuesto de que estaba a punto de volverse inactivo.
Se han utilizado muchos otros algoritmos para signar procesos a clases de prioridad, por ejemplo el sistema
XDS 940, el cual tenía cuatro clases de prioridad llamadas terminal, E/S, cuanto corto y cuanto largo. Cuando un
proceso que estaba esperando entradas de la terminal finalmente se despertaba, pasaba a la clase de prioridad más
alta (Terminal). Cuando un proceso que estaba esperando un bloque de disco quedaba listo, pasaba a la segunda
clase, etc. Muchos otros sistemas usan algo similar para dar preferencia a los usuarios y procesos interactivos por
encima de los de segundo plano. [BO]