Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouGiovanna Cano Alterado mais de 10 anos atrás
1
1 Disciplina: Sistemas Operacionais (COS 773) Data: 16/11/ 2005 Professor: Vitor Costa Trabalho de Lúcia C. L. Ferreira Timers e Gerenciamento de tempo pelo Kernel
2
2 Roteiro Introdução Conceitos Gerenciando o tempo Tratando interrupções de tempo Utilizando Timers
3
3 Introdução O controle de tempo pelo Kernel é muito importante, pois várias de suas funções são dirigidas pelo evento passagem do tempo. Exemplo: –Refresh de tela –Desligar o motor do floppy drive após um período de inatividade
4
4 Conceitos Timer ou temporizador: hw utilizado pelo Kernel para controlar a passagem do tempo; Tick rate: freqüência de operação do timer (HZ); Ex: i386 HZ=1000 hertz Tick: tempo discorrido entre duas interrupções de tempo sucessivas (período de 1/HZ segundos);
5
5 Conceitos Jiffies: variável global que armazena o número de ticks que ocorreram desde o boot do sistema; 1seg = HZ jiffies Timer interrupt handler: trata as interrupções relacionadas à passagem de tempo;
6
6 Como o Kernel gerencia o tempo Para gerenciar o tempo o Kernel utiliza dois componentes de hw: Real-Time Clock (RTC): Utilizado para atualizar o tempo real (wall time / time of day); xtime: variável que recebe o valor do RTC no momento do boot ;
7
7 Como o Kernel gerencia o tempo System Timer: relógio eletrônico que oscila a uma determinada freqüência (tick-rate: HZ); Controla as interrupções de tempo
8
8 Como o Kernel trata as interrupções de tempo Timer Interrupt Handler Rotina dependente da arquitetura : responsável por tratar as interrupções geradas pelo System Timer;
9
9 Como o Kernel trata as interrupções de tempo Timer Interrupt Handler Funções comumente executadas: – Obter o xtime-lock (jiffies, xtime) – Atualiza a RTC (RTC xtime); – Chama a rotina que independe da arquitetura
10
10 Como o Kernel trata as interrupções de tempo Timer Interrupt Handler Rotina independente da arquitetura : do-timer() – Incrementa o valor da variável jiffies; – Atualiza o tempo recursos/processos em execução; – Atualiza o wall-time (time of day); – Executa o scheduler_tick();
11
11 Freqüência do Timer Interrupt ArquiteturaFrequência (Hertz) Alpha1024 i3861000 Mips100 Mips64100 ou 1000 Sparc100 Sparc641000 x86-641000
12
12 Time of Day Wall-time Definida na estrutura Struct timespec { time_t tv_sec; /* segundos */ long tv_nsec; /* nanosegundos */ };
13
13 Utilizando Timers Dynamic Timers ou Kernel Timers Mecanismo para atrasar a execução de determinadas tarefas por um tempo específico;
14
14 Utilizando Timers Passos: Setup inicial; Definir tempo de expiração; Definir função a ser executada; Ativar o timer;
15
15 Utilizando Timers Estrutura: struct timer_list { struct list_head entry; /* entrada lista encadeada de timers */ unsigned long expires; /* valor expiração, jiffies */ spinlock_t lock; /* lock */ void (*function)(unsigned long); /* função a ser executada*/ unsigned long data; /* argumento para o handler */ struct tvec_t_base_s *base; /* campo interno – Não Mexer * };
16
16 Utilizando Timers Exemplo struct timer_list my_timer; init_timer(&my_timer); my_timer.expires = jiffies + delay; my_timer.data = 0; my_timer.function = my_function; add_timer(&my_timer);
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.