Sistemas operativos modernos

crea un proceso, pues hay que decidir si se ejecutará el proceso padre o el hijo. Puesto que am­ bos están en el estado listo, se trata de una decisión de calendarización normal y se podría escoger cualquiera de las dos opciones; es decir, el calendarizador está en su derecho de esco­ ger al padre o al hijo para ejecutar a continuación. La segunda situación se presenta cuando un proceso termina, pues se debe tomar una decisión de calendarización. Ese proceso ya no puede ejecutarse (pues ha dejado de existir), así que se deberá escoger otro del conjunto de procesos listos. Si ningún proceso está listo, lo nor­ mal es que se ejecute un proceso inactivo suministrado por el sistema. La tercera situación es cuando un proceso se bloquea por E/S, un semáforo o algún otro motivo, y es preciso escoger otro proceso que se ejecute. En ocasiones, el motivo del bloqueo puede afectar la decisión. Por ejemplo, si A es un proceso importante y está esperando a que B salga de su región crítica, permitir que B se ejecute a continuación lo hará salir de la región crí­ tica y dejar que A continúe. El problema es que el calendarizador por lo general no cuenta con la información necesaria para tomar en cuenta esta dependencia. Cuando se presenta una interrupción de E/S, también hay que tomar una decisión de ca­ lendarización. Si la interrupción provino de un dispositivo de E/S que acaba de terminar su tra­ bajo, de seguro algún proceso que estaba bloqueado esperando la E/S ahora estará listo para ejecutarse. El calendarizador tiene que decidir si debe ejecutarse ese proceso o el que se esta­ ba ejecutando cuando se recibió la interrupción, o bien, un tercer proceso. Si un reloj de hardware genera interrupciones periódicas a 50 o 60 Hz, o alguna otra fre­ cuencia, puede tomarse una decisión de calendarización en cada interrupción de reloj o en ca­ da k-ésima interrupción de reloj. Los algoritmos de calendarización pueden dividirse en dos categorías, dependiendo de la forma en que se manejan las interrupciones de reloj. Un algorit­ mo de calendarización no expropiatívo (o no preferente) escoge el proceso que se ejecutará, y luego simplemente le permite ejecutarse hasta que se bloquee (sea por E/S o en espera de otro proceso), o hasta que ceda la CPU en forma voluntaria. Aunque ese proceso se ejecute duran­ te horas, no se le suspenderá por la fuerza. En este caso no se toman decisiones de calendari­ zación durante las interrupciones de reloj. Luego que la interrupción termina de procesarse, siempre se reanuda el proceso que se estaba ejecutando antes de ella. En contraste, un algoritmo de calendarización expropiatívo (o preferente) escoge un pro­ ceso y le permite ejecutarse durante un tiempo establecido. Si al término de ese tiempo el proceso continúa en ejecución, se le suspende y el calendarizador escoge otro proceso para que se ejecute (si hay uno disponible). La calendarización expropiativa requiere que haya una interrupción de reloj al término del intervalo de tiempo para que el calendarizador pueda re­ cuperar el control de la CPU. Si no hay reloj, la calendarización no expropiativa es la única opción. Categorías de algoritmos de calendarización No es sorprendente que el algoritmo de calendarización requerido dependa del entorno en que se usará. Esto se debe a que las diferentes áreas de aplicación (y los distintos tipos de sistemas

RkJQdWJsaXNoZXIy MjI4NDcx