Los relojes generan pulsos eléctricos a intervalos constantes que controlan la ejecución de las instrucciones por parte de la CPU. Los relojes programables utilizan un cristal de cuarzo para generar una señal periódica muy precisa que controla el ritmo de interrupciones. El software del sistema operativo usa estas interrupciones para tareas como mantener la hora, cambiar procesos cada cierto tiempo cuanto y medir el uso de la CPU.
2.
Los relojes (también conocidos como temporizadores) son
esenciales para la operación de cualquier sistema de
multiprogramación, cumpliendo las siguientes funciones:
3.
El procesador (denominado CPU, por Central Processing Unit) es
un circuito electrónico que funciona a la velocidad de un reloj
interno, gracias a un cristal de cuarzo que, sometido a una
corriente eléctrica, envía pulsos, denominados "picos".
La velocidad de reloj (también denominada ciclo), corresponde al
número de pulsos por segundo, expresados en Hertz (Hz). De
este modo, un ordenador de 200 MHz posee un reloj que envía
200.000.000 pulsos por segundo. Por lo general, la frecuencia de
reloj es un múltiplo de la frecuencia del sistema (FSB, Front-Side
Buso Bus de la Parte Frontal), es decir, un múltiplo de la
frecuencia de la placa madre.
Funcionamiento
4. Con cada pico de reloj, el procesador ejecuta una
acción que corresponde a su vez a una instrucción o
bien a una parte de ella. La medida CPI (Cycles Per
Instruction o Ciclos por Instrucción) representa el
número promedio de ciclos de reloj necesarios para
que el microprocesador ejecute una instrucción. En
consecuencia, la potencia del microprocesador puede
caracterizarse por el número de instrucciones por
segundo que es capaz de procesar. Los MIPS (millions
of instructions per second o millones de instrucciones
por segundo) son las unidades que se utilizan, y
corresponden a la frecuencia del procesador dividida
por el número de CPI.
5.
6. El reloj es la parte de la CPU que proporciona una sucesión
de impulsos eléctricos (llamados ciclos) a intervalos
constantes. Cada sucesión marca el instante que debe
comenzar un paso de una instrucción.
La frecuencia de reloj es la velocidad en ciclos por segundo
(medidas en Hertz) con que una computadora realiza las
operaciones más básicas. Diferentes chips en la placa
madre pueden tener diferentes frecuencias de reloj. En
general, en computación, cuando se habla de "la frecuencia
de reloj", se está haciendo referencia a la velocidad del CPU
(el microprocesador).
La velocidad de reloj se mide normalmente en gigahercios
(GHz) o miles de millones de ciclos por segundo.
7.
8.
9. La señal de reloj puede ser combinada con un controlador de
señal que se encarga de permitir o no la señal de reloj para
ciertas partes de un circuito. Esta técnica es especialmente
utilizada para ahorrar energía, apagando porciones de un
circuito digital que no están en uso.
Muchas microcomputadoras utilizan un multiplicador de reloj,
que multiplica una señal de reloj externa más baja que la del
microprocesador, para adecuarla a la señal de éste. Esto
permite al CPU operar a mucha más alta frecuencia que el
resto de los componentes de la computadora, permitiéndole
al CPU no esperar un factor externo (por ejemplo, una
entrada/salida de memoria).
10.
11. El sistema operativo gestiona un reloj de interrupciones que genera
interrupciones cada cierto tiempo. Un proceso mantiene el control de
la CPU hasta que la libera voluntariamente (acaba su ejecución, o se
bloquea), hasta que el reloj interrumpe o hasta que alguna otra
interrupción desvía la atención de la CPU. Si el usuario se encuentra
en ejecución y el reloj interrumpe, el sistema operativo entra en
ejecución para comprobar, por ejemplo, si ha pasado el cuanto de
tiempo del proceso que estaba en ejecución.
El reloj de interrupciones asegura que ningún proceso acapare la
utilización del procesador. El sistema operativo, apoyándose en él,
intenta distribuir el tiempo de CPU entre los distintos procesos ya sean
de E/S o de cálculo. Por tanto, ayuda a garantizar tiempos de
respuesta para los usuarios interactivos, evitando que el sistema
quede bloqueado en un ciclo infinito de algún usuario y permite que
los procesos respondan a eventos dependientes de tiempo. Los
procesos que deben ejecutarse periódicamente dependen del reloj de
interrupciones.
Reloj de interrupciones
12.
Hay dos tipos de relojes:
Los relojes más simples están enlazados a la línea de energía de 110
o 220 voltios y producen una interrupción en cada ciclo de voltaje, a
50 o 60 Hz. Estos relojes solían dominar el mercado, pero ahora son
raros.
Los Relojes programables, formados por tres componentes: Un
oscilador de cristal, un contador y un registro. Cuando una pieza de
cristal de cuarzo se corta en forma apropiada y se monta bajo tensión,
puede generar una señal periódica de muy alta precisión,
generalmente entre 5 y 100 mhz. La señal se alimenta en el contador
para que cuente en forma descendente hasta cero. Cuando el
contador llega a cero, provoca una interrupción de la CPU.
Hardware de reloj
13. Modo de una instancia:
Cuando el reloj se inicializa, copia el valor del registro en el contador.
Decrementa el contador en cada pulso del cristal.
Cuando el contador llega a cero provoca una interrupción y se detiene
hasta ser nuevamente inicializado por el software.
Modo de onda cuadrada:
Luego de llegar a cero y provocar la interrupción, el registro se copia de
manera automática en el contador.
Todo el programa se repite en forma indefinida.
Las interrupciones periódicas se llaman marcas del reloj.
La ventaja del reloj programable es que su frecuencia de interrupción
puede ser controlada por el software.
Los relojes programables tienen
varios modos de operación:
14. Todo lo que hace el hardware del reloj es generar interrupciones a
intervalos conocidos. Todo lo demás que se relacione con el tiempo debe
ser realizado por el software controlador del reloj. Las tareas exactas del
controlador del reloj varían de un sistema operativo a otro, pero por lo
general
incluyen la mayoría de las siguientes tareas:
Mantener la hora del día.
Evitar que los procesos se ejecuten por más tiempo del que tienen
permitido.
Contabilizar el uso de la CPU.
Proveer temporizadores guardianes (watchdogs) para ciertas partes del
mismo sistema.
Realizar perfilamiento, supervisión y recopilación de estadísticas.
Software de reloj
15. Mantener la hora del día (también conocida como tiempo real):
Sólo requiere incrementar un contador en cada pulso de reloj.
Evitar que los procesos se ejecuten en demasiado tiempo. Cada
vez que se inicia un proceso, el planificador inicializa un
contador para el valor del quantum de ese proceso, en pulsos de
reloj. En cada interrupción del reloj, el software controlador del
mismo decrementa el contador del quantum en 1. Cuando llega
a cero, el software controlador del reloj llama al planificador para
establecer otro proceso.
Contabilizar el uso de la CPU. La forma más precisa de hacerlo
es iniciar un segundo temporizador, distinto del temporizador
principal del sistema, cada vez que se inicia un proceso. Cuando
ese proceso se detiene, el temporizador se puede leer para
saber cuánto tiempo se ha ejecutado el proceso. Para hacer lo
correcto, el segundo temporizador se debe guardar cuando
ocurre una interrupción y se debe restaurar cuando ésta termine.
16. Hay partes del sistema operativo que también necesitan establecer
temporizadores. A éstos se les conoce como temporizadores guardianes
(watchdogs). Por ejemplo, los discos flexibles no giran cuando no están en
uso, para evitar desgaste en el medio y la cabeza del disco. Cuando se
necesitan datos de un disco flexible, primero se debe iniciar el motor. Sólo
cuando el disco flexible está girando a toda velocidad se puede iniciar la
operación de E/S. Cuando un proceso intenta leer de un disco flexible
inactivo, el software controlador del mismo inicia el motor y después
establece un temporizador guardián para que produzca una interrupción
cuando haya pasado un intervalo de tiempo suficientemente extenso
(debido a que no hay un interruptor de máxima velocidad en el disco
flexible).
Perfilamiento. Algunos sistemas operativos proporcionan un mecanismo
mediante el cual un programa de usuario puede hacer que el sistema
construya un histograma de su contador del programa, para poder ver en
dónde pasa su tiempo. Cuando el perfilamiento es una posibilidad, en
cada pulso el controlador comprueba si se está perfilando el proceso
actual y, de ser así, calcula el número de receptáculo (un rango de
direcciones) que corresponde al contador del programa actual. Después
incrementa ese receptáculo en uno. Este mecanismo también se puede
utilizar para perfilar al mismo sistema.