Sistemas operativos modernos
selecciona el proceso con más alta prioridad. A, como se muestra en la figura 8 - 12b. Después, la CPU 12 se queda sin trabajo y escoge el proceso B, como se ilustra en la figura 8-12c. Mientras no haya relación alguna entre los procesos, calendarizar de este modo es una opción razonable. 0 1 Z I 0 I 1 ] 0 0 0 0 vCPU 0 0 0 0 [Í 1 1 0 0 0 Prioridad 7 6 5 4 3 2 1 O :-<gKD Z -© --QKS) La CPU 4 se queda sin trabajo Prioridad 7 6 5 4 3 2 1 O 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 i-d>© i-<§><D Z-© --(SKg) 0 0 0 0 0 0 0 0 ;e q u e d a ^ 0 0 0 0 0 0 0 0 La CPU 12 s sin Prioridad 7 6 5 4 3 2 1 O I - © z-<§Xi) Z-® - - ^ hbkd --<3><g) --(EH0KS) (a) (b) (c) Figura 8-12. Empleo de una sola estructura de datos para calendarizar un multipro cesador. Al haber una sola estructura de datos de calendarización que usan todas las CPUs, su fiem po se reparte de forma parecida a como se haría en un sistema uniprocesador. Asimismo, la carga se balancea en forma automática porque nunca puede suceder que una CPU esté inacfiva mien tras otras están sobrecargadas. Dos desventajas de este enfoque son la posible competencia por usar la estrucmra de datos de calendarización a medida que aumenta el número de procesadores, y la sobrecarga usual por efectuar un cambio de contexto cuando un proceso se bloquea por E/S. También es posible que se efectúe un cambio de contexto cuando expire el cuanto de un proceso. En un multiprocesador, eso fiene ciertas características que no están presentes en un uniprocesador. Supongamos que el proceso tiene un bloqueo giratorio, lo cual no es inusi tado en los mulfiprocesadores, como ya vimos. Otras CPUs que están esperando el bloqueo tan sólo perderán el tiempo dando vueltas hasta que ese proceso se calendarice otra vez y libere el bloqueo. En un uniprocesador casi no se usan bloqueos giratorios, así que si un proceso se sus pende mientras fiene un mutex, y otro proceso inicia y trata de adquirir el mutex, se bloqueará de inmediato, por lo que no se pierde mucho tiempo. Para resolver esta anomalía, algunos sistemas ufilizan calendarización inteligente, en la que un proceso que obtiene un bloqueo giratorio establece un indicador, visible para todos los procesos, para indicar que tiene actualmente un bloqueo giratorio (Zahorjan et a i, 1991). Cuan do el proceso libera el bloqueo, borra el indicador. Entonces el calendarizador no defiene al pro ceso que tiene el bloqueo, sino que le da un poco más de fiempo para que salga de su región crítica y libere el bloqueo. Otro aspecto importante en lo que respecta a calendarización es el hecho de que, si bien to das las CPUs son iguales, algunas son más iguales que otras. En particular, si el proceso A se ha ejecutado durante algún tiempo en la CPU k, el caché de la CPU k estará lleno de los bloques de
RkJQdWJsaXNoZXIy MjI4NDcx