Sistemas operativos modernos
El tercer enfoque es contar en tics, pero hacerlo con relación al momento en que se puso en marcha el sistema, no a un momento externo fijo. Cuando se lee el reloj de respaldo o el usuario introduce el tiempo real, se calcula el tiempo de arranque del sistema a partir del valor actual de hora del día y se almacena en la memoria en alguna forma conveniente. Después, cuando se solicite dicha hora, se sumará la hora del día almacenada al contador para obtener la hora del día actual. Los tres enfoques se muestran en la figura 5-32. 64 bits • 32 bits 32 bits Hora del día en tics — Hora del día en segundos Contador en tics Número de tics en el segundo actual Tiempo de arranque del sistema en segundos (a) (b) (c) Figura 5-32. Tres formas de mantener la hora del día. La segunda función del reloj es evitar que los procesos se ejecuten durante demasiado tiem po. Cada vez que se inicia un proceso, el calendarizador asigna a un contador el valor del cuan to de ese proceso en tics de reloj. En cada interrupción de reloj, el controlador del reloj decrementa en uno el contador del cuanto. Cuando este contador llega a cero, el controlador de reloj invoca al calendarizador para que prepare otro proceso. La tercera función de reloj es llevar la contabilidad de la CPU. La forma más precisa de ha cerlo es iniciar un segundo temporizados distinto del temporizador principal del sistema, cada vez que se inicia un proceso. Cuando ese proceso se suspenda, podrá determinarse durante cuán to tiempo se ejecutó leyendo el temporizador. Para hacer las cosas en forma correcta, deberá guardarse el segundo temporizador cuando se presente una interrupción, y restaurarse después. Una forma menos precisa de llevar la contabilidad, pero mucho más sencilla, es mantener en una variable global un apuntador a la entrada de la tabla de procesos correspondiente al pro ceso en ejecución. En cada tic del reloj, se incrementa un campo en la entrada del proceso ac tual. Así, cada tic del reloj se “carga” al proceso que se estaba ejecutando cuando se emitió el tic. Un problema menor de tal estrategia es que si se presentan muchas interrupciones durante la ejecución de un proceso, de todos modos se le cargará un tic entero, aunque no haya logra do realizar mucho trabajo. La contabilización correcta de la CPU durante las interrupciones es demasiado costosa y casi nunca se hace. En muchos sistemas, un proceso puede solicitar que el sistema operativo le avise cuando haya transcurrido cierto intervalo. El aviso suele ser una señal, interrupción, mensaje o algo si milar. Una aplicación que requiere tales avisos es el trabajo con redes, en el que si no .se acu sa recibo de un paquete en un plazo dado, debe retransmitirse. Otra aplicación es la enseñanza asistida por computadora, donde si un estudiante no proporciona la respuesta en un plazo da do, se exhibe ia respuesta correcta en la pantalla. Si el controlador de reloj tuviera suficientes relojes, podría establecer uno para cada soli citud. Como no es así, el controlador tiene que simular múltiples relojes virtuales con un solo
RkJQdWJsaXNoZXIy MjI4NDcx