viernes, 16 de octubre de 2015

RELOJ

Los relojes (también conocidos como temporizadores) son esenciales para la operación de cualquier sistema de multiprogramación, cumpliendo las siguientes funciones:





FUNCIONAMIENTO:
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. 


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.








RELOJ DE INTERRUPCIONES
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.
HARDWARE DEL RELOJ
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.

SOFTWARE DEL RELOJ
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.
  • 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.
  • 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.











No hay comentarios:

Publicar un comentario