Sistemas operativos modernos

Cabeceras de cola Procesos ejecutables (Más alta prioridad) (Más baja prioridad) Figura 2-42. Algoritmo de calendarización con cuatro clases de prioridad. lo podía tener un proceso en la memoria. Cada conmutación implicaba intercambiar el proce­ so actual a disco y leer uno nuevo del disco. Los diseñadores de CTSS pronto se dieron cuen­ ta que era más eficiente otorgar a los procesos dedicados a la CPU un cuanto grande de vez en cuando, en lugar de darles cuantos pequeños con frecuencia (a fin de reducir el intercambio). Por otra parte, dar a todos los procesos un cuanto grande aumentaría el fiempo de respuesta, como ya vimos. Su solución fue establecer clases de prioridad. Los procesos de la clase más alta se ejecutaban durante un cuanto. Los procesos de la siguiente clase más alta se ejecutaban durante dos cuantos. Los procesos de la siguiente clase se ejecutaban durante cuatro cuantos, y así sucesivamente. Cada vez que un proceso se gastaba todos los cuantos asignados, se le ba­ jaba a la clase inmediata inferior. Por ejemplo, consideremos un proceso que necesitaba computar de manera continua du­ rante 100 cuantos. En un principio se le concedía un cuanto, después del cual se le intercam­ biaba a disco. La siguiente vez recibía dos cuantos antes de ser intercambiado a disco. En oportunidades subsiguientes recibía 4, 8 , 16, 32 y 64 cuantos, aunque sólo usaba 37 de los 64 cuantos finales para terminar su trabajo. Sólo se necesitaban siete intercambios (incluida la car­ ga inicial) en vez de los 100 que se necesitan en un algoritmo de turno circular puro. Además, a medida que el proceso bajaba de nivel en las colas de prioridad, se le ejecutaba con una fre­ cuencia cada vez menor, y la CPU podía dedicarse a procesos interactivos cortos. Se adoptó la siguiente política para evitar que un proceso que en un principio necesitaba eje­ cutarse durante un tiempo largo, pero después se volvía interactivo, fuera castigado en forma in­ definida. Cada vez que se oprimía la tecla <Enter> en una terminal, el proceso perteneciente a esa terminal se pasaba a la clase de más alta prioridad, bajo el supuesto de que estaba a punto de volverse interacfivo. Un buen día, un usuario que tenía un proceso muy dedicado a la CPU descubrió que si oprimía la tecla <Enter> de su terminal a intervalos aleatorios, cada pocos se­ gundos, su fiempo de respuesta mejoraba de manera notable. Ese usuario comunicó su descu­ brimiento a todos sus amigos. La moraleja del cuento: encontrar una solución en la prácfica es mucho más fácil que encontrarla en teoría. Se han usado muchos otros algoritmos para asignar procesos a clases de prioridad. Por ejemplo, el influyente sistema XDS 940 (Lampson, 1968), construido en Berkeley, tenía cua­ tro clases de prioridad llamadas terminal, E/S, cuanto corto y cuanto largo. Cuando un proce­ so que estaba esperando entradas de una terminal por fin despertaba, se le colocaba en la clase de más alta prioridad (terminal). Cuando un proceso que esperaba un bloque de disco pasaba

RkJQdWJsaXNoZXIy MjI4NDcx