1.5. Gestion Del Tiempo Real

download 1.5. Gestion Del Tiempo Real

of 11

Transcript of 1.5. Gestion Del Tiempo Real

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    1/11

    1

    1.5. Gestión del TiempoReal en Sistemas

    Empotrados

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    2/11

    2

    Gestión de tiempos ytemporización

    • El tiempo es un recurso peculiar.

    • La gestión del tiempo es un componente

    básico en cualquier sistema empotrado o detiempo real.

    • Vamos a estudiar:– Tipos de relojes

    – Rutinas de servicio de la interrupción del reloj

    – Gestión de temporizadores

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    3/11

    3

    Gestión de tiempos y temporizaciónRelojes

    • Reloj de tiempo real (RTC)– Siempre en funcionamiento. Requiere

    alimentación propia.

    • Reloj Hardware– Se inicializa con el RTC en la inicialización.

    – Produce las interrupciones de reloj.

    – Suele ser programable (PIT, p. ej., Intel 8253).

    – Puede tener otras funciones (p. ej., refresco de laDRAM).

    • Reloj del sistema– Es un reloj software implementado por la ISR del

    PIT.

    – Cuenta interrupciones y las expresa en unidadesde tiempo.

    (ISR: Manejadores de interrupción)

    (PIT: Temporizador programable de intervalos)

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    4/11

    4

    El tiempo en Linux

    •Comando para consultar el reloj del sistema:– date

    •Ajuste del reloj:– adjtimex (sólo puede ejecutarla root super usuario)

    •Cronómetro de alta resolución:– gettimeofday()

    #include

    struct timeval t0, t1;

    gettimeofday(&t0, NULL);…

    gettimeofday(&t1, NULL);printf("Duracion: %d,%d segundos\n",

    t1.tv_sec-t0.tv_sec, t1.tv_usec-t0.tv_usec);

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    5/11

    5

    Gestión de tiempos y temporizaciónRutina de servicio de la interrupción del reloj

    • Funciones:– Soporte del reloj software (contador de unidades

    de tiempo, p. ej., segundos)

    • Para el tiempo del sistema

    • Para implementar temporizadores

    – Gestión del tiempo compartido (expulsión por finde quantum).

    – Contabilidad del uso de recursos temporales (p.ej., tiempo de CPU).

    • Genera eventos periódicos

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    6/11

    6

    Gestión de tiempos y temporizaciónRutina de servicio de la interrupción del reloj

    Ejemplo

    ISR_del_reloj (){

    ...ticks_por_segundo−−;intervalo_CPU++;

    if (ticks_por_segundo== 0) {

    actualiza_tiempo_del_sistema();señalar_evento(EVENTO_SEGUNDO);ticks_por_segundo= UN_SEGUNDO;

    }

    if (intervalo_CPU == quantum) {incrementa_gasto_CPU_del_proceso(intervalo_CPU);intervalo_CPU= 0;goto cambio_de_contexto;

    }...eoi();reti();

    cambio_de_contexto:expulsar_proceso();dispatcher (scheduler());

    }

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    7/117

    Gestión de tiempos y temporizaciónGestión de temporizadores

    • El sistema proporciona un servicio de temporización:

    – Un proceso se duerme durante n unidades de tiempo.

    – El sistema gestiona cuándo despertar a cada procesodormido.

    • Hay que definir la resolución del temporizador:– A mayor resolución más carga para el sistema.

    • Modelo:

    – Los procesos ponen su petición de temporización(usando un IORB: Input Output Request Block)).

    – Un gestor de tiempos (manejador), activado cadaunidad de tiempo por la ISR del reloj, despacha laspeticiones a medida que se cumplen, despertando alproceso correspondiente.

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    8/118

    Peticionestemporización

    Gestión de tiempos y temporizaciónImplementación

    13 EVENTO_P

    ISR

    Gestorde

    tiempos

    P EVENTO_SEGUNDO

    EVENTO_P

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    9/119

    Gestión de tiempos y temporizaciónImplementación

    13

    23

    23

    12

    Ordenar

    12

    13

    23

    23

    Relativoa la

    anterior

    12

    1

    10

    0

    Sólo hay queconsultar la

    primera

    Sólo hay quedecrementar la

    primera

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    10/1110

    Gestión de tiempos y temporizaciónImplementación

    Gestor_tiempos (){

    ...while (TRUE) {

    esperar_evento(EVENTO_SEGUNDO);while (primero(peticiones_tiempo).plazo == 0)

    señalar_evento(primero(peticiones_tiempo).evento;eliminar(primero(peticiones_tiempo));

    }primero(peticiones_tiempo).plazo−−;

    }}

  • 8/18/2019 1.5. Gestion Del Tiempo Real

    11/11

    Ejemplo:uso de temporizadores en Unix

    #include

    #include

    #include

    void fnula() {return;}

    unsigned esperar_tiempo (unsigned seg) {

    unsigned s;

    s= alarm(seg);

    pause();

    return(s);

    }

    int main (int argc, const char * argv[]) {

    int i;

    unsigned t;

    signal(SIGALRM, fnula);

    for (i=1; i