RELÓGIO (TIMER), HARDWARE TEMPORIZADORES SÃO ESSENCIAIS PARA MULTIPROGRAMAÇÃO; HÁ UM DRIVER PARA O TIMER; ALIMENTADO EM 110 OU 220 V, CAUSAVA UMA INTERRUPÇÃO A CADA CICLO DE VOLTAGEM, A UM FREQUÊNCIA DE 50 OU 60 Hz (MAIS SIMPLES E NÃO MAIS EMPREGADO). RELÓGIO (TIMER), HARDWARE CONSTITUÍDO POR UM OSCILADOR DE CRISTAL, UM CONTADOR E UM REGISTRADOR DE APOIO; UM PULSO A CADA CICLO DA VOLTAGEM E UMA INTERRUPÇÃO, APÓS UM DETERMINADO NÚMERO DE PULSOS; UM FRAGMENTO DE CRISTAL DE QUARTZO, MONTADO SOB TENSÃO, GERA UM SINAL PERIÓDICO DE ALTÍSSIMA PRECISÃO, NA FAIXA DE CENTENAS DE MHz; ESSE SINAL BÁSICO, UMA VEZ PERCEBIDO, PODE SER MULTIPLICADO UM NÚMERO PEQUENO DE VEZES PARA OBTER FREQUÊNCIAS DE ATÉ 1 GHz OU MAIORES; FORNECE UM SINAL DE SINCRONIZAÇÃO PARA VÁRIOS CIRCUITOS DA PLACA MÃE. RELÓGIO (TIMER), HARDWARE O SINAL FAZ O CONTADOR DECREMENTAR A CADA PULSO DO CRISTAL; QUANDO O CONTADOR CHEGA A ZERO, OCORRE UMA INTERUPÇÃO;
O REGISTRADOR SERVE PARA INICIALIZAR O CONTADOR E ISTO PODE ACONTECER DE MANEIRA: DÍSPARO ÚNICO (EXPLÍCITA) - MODO ONE-SHOT ONDA QUADRADA (AUTOMÁTICA) - MODO SQUARE WAVE (REPETITIVO) AS INTERRUPÇÕES PERÍODICAS SÃO CHAMADAS DE TIQUES DO RELÓGIO. RELÓGIO (TIMER), HARDWARE COM UM CRISTAL DE 500 MHz, OCORRE UM PULSO A CADA 2 nanoseg; COM UM REGISTRADOR DE 32 BITS (SEM SINAL), AS INTERRUPÇÕES PODEM SER PROGRAMADAS EM INTERVALOS QUE VÃO DE 2 nanoseg A 4,3 seg; RELÓGIO (TIMER), HARDWARE CHIPS DE RELÓGIOS, EM GERAL, TÊM DOIS OU MAIS RELÓGIOS PROGRAMÁVEIS; PERMITEM A INIBIÇÃO PROGRAMADA DE INTERRUPÇÃO; TRABALHAM COM CONTAGEM PROGRESSIVA E, PARA NÃO PERDER O VALOR QUANDO O COMPUTADOR ESTÁ DESLIGADO, ESTE É ARMAZENADO EM REGISTRADORES ESPECIAIS ALIMENTADOS POR BATERIA (PILHA); O RELÓGIO COM BATERIA PODE SER LIDO NA INICIALIZAÇÃO; SE ESTE NÃO EXISTE, PODE-SE PERGUNTAR AO USUÁRIO A HORA ATUAL OU OBTER A HORA DE UM SERVIDOR REMOTO;
RELÓGIO (TIMER), HARDWARE COORDENADA UNIVERSAL DE TEMPO (UTC OU MEIO DIA DE GREENWICH 12 HORAS DE 1/1/1971); PARA O WINDOWS, 1/1/1980; A CADA TIQUE DO RELÓGIO, O TEMPO REAL É INCREMENTADO DE 1; OS DEMAIS ASPECTOS ENVOLVENDO TEMPO DEVEM SER TRATADOS PELO SOFTWARE (DRIVER) - EXECUTADO VÁRIAS VEZES POR SEGUNDO. DRIVER DE RELÓGIO: MANUTENÇÃO DA DATA E HORA, EM RELÓGIOS LÓGICOS; PREVENÇÃO DA EXECUÇÃO DE PROCESSOS ALÉM DO ESTABELECIDO (DEADLINE); CONTABILIDADE DE USO DA CPU; TRATAR CHAMADAS ALARM FEITAS PELOS PROCESSOS DO USUÁRIO (SLEEP); FORNECER TEMPORIZADORES WATCH-DOG PARA PARTES DO PRÓPRIO SISTEMA; GERAR PERFIS DE EXECUÇÃO, REALIZAR MONITORAMENTOS E COLETAR ESTATÍSTICAS.
MANUTENÇÃO DA DATA E HORA NÃO PODEM SER MANTIDAS APENAS EM UM REGISTRADOR QUE É LIMITADO - UM REGISTRADOR DE 16 BITS SENDO ATUALIZADO A INTERRUPÇÕES DE 1 µs PODE CONTABILIZAR ATÉ 65.535 ms (POUCO MAIS DE 1 MINUTO); AUMENTAR O REGISTRADOR (A MANUTENÇÃO DO CONTADOR É MUITO DISPENDIOSA); MANTER O TEMPO EM SEGUNDOS EM VEZ DE TIQUES (CONTAM-SE TIQUES ATÉ TER UM SEGUNDO 2 32 SEGUNDOS EXCEDEM 132 ANOS, FUNCIONARÁ ATÉ XXII); CONTAGEM RELATIVA A HORA E DATA FORNECIDAS. EVITAR QUE OS PROCESSOS EXECUTEM POR MUITO TEMPO: O ESCALONADOR INICIALIZA O CONTADOR COM O VALOR DE TIME SLICE DO PROCESSO EM TIQUES DE RELÓGIO; EM CADA INTERRUPÇÃO DO RELÓGIO, O DRIVER DECREMENTA O CONTADOR DE TIME SLICE DE 1; QUANDO O CONTADOR ATINGE ZERO, O DRIVER CHAMA O ESCALONADOR PARA SELECIONAR OUTRO PROCESSO.
CONTABILIDADE DE USO DA CPU: RELÓGIO PRÓPRIO, DISPARADO QUANDO O PROCESSO É ESCALONADO; QUANDO O PROCESSO É INTERROMPIDO, O TEMPORIZADOR PODE SER LIDO, PERMITINDO SABER POR QUANTO TEMPO O PROCESSO ESTEVE EM EXECUÇÃO; SALVA-SE O VALOR DO TEMPORIZADOR E O RESTAURA APÓS O TRATAMENTO DA INTERRUPÇÃO E NOVO ESCALONAMENTO (ÁREA DO PCB). CONTABILIDADE DE USO DA CPU: MANTER UM PONTEIRO PARA A ENTRADA DA TABELA DE PROCESSOS RELATIVA AO PROCESSO, EM UMA VARIÁVEL GLOBAL; A CADA TIQUE DE RELÓGIO, UM CAMPO NA ENTRADA DO PROCESSO ATUAL SOFRE UM INCREMENTO; SE MUITAS INTERRUPÇÕES OCORREREM DURANTE A EXECUÇÃO DE UM PROCESSO, AINDA ASSIM ELE SERÁ CONTABILIZADO COM UM TIQUE COMPLETO, EMBORA NÃO TENHA SIDO EXECUTADO MUITO; A CONTABILIDADE CORRETA PARA A CPU DURANTE AS INTERRUPÇÕES É BASTANTE DISPENDIOSA E RARAMENTE É FEITA.
TIMERS PARA O S.O. E PROGRAMAS: APÓS UM CERTO INTERVALO DE TEMPO, O PROCESSO DEVE RECEBER UM SINAL, UMA INTERRUPÇÃO, UMA MENSAGEM OU ALGO SIMILAR; NA COMUNICAÇÃO EM REDE, UM PACOTE NÃO CONFIRMADO DENTRO DE UM CERTO INTERVALO DE TEMPO DEVE SER RETRANSMITIDO; CAI (COMPUTER AIDED INSTRUCTION) - APÓS UM TEMPO A RESPOSTA É DADA. TIMERS PARA O S.O. E PROGRAMAS: SE UM DRIVER GERENCIA RELÓGIOS SUFICIENTES, PODE USAR UM RELÓGIO PARA CADA REQUISIÇÃO; SE NÃO É O CASO, DEVERÁ SIMULAR VÁRIOS RELÓGIOS VIRTUAIS COM UM RELÓGIO FÍSICO; TRABALHAR COM UMA TABELA ONDE SÃO MANTIDOS OS RELÓGIOS VIRTUAIS PENDENTES E COM UMA VARIÁVEL QUE FORNECE O TEMPO DO SINAL SEGUINTE; SEMPRE QUE A HORA DO DIA É ATUALIZADA, O DRIVER VERIFICA SE O TEMPO DO SINAL MAIS PRÓXIMO JÁ DECORREU; EM CASO AFIRMATIVO, A TABELA É PESQUISADA PARA ENCONTRAR O PRÓXIMO SINAL A OCORRER.
TIMERS PARA O S.O. E PROGRAMAS: SE MUITOS SINAIS SÃO ESPERADOS, É MAIS EFICIENTE SIMULAR VÁRIOS RELÓGIOS POR MEIO DO ENCADEAMENTO DE TODAS AS REQUISIÇÕES DOS RELÓGIOS PENDENTES JUNTAS, ORDENADAS NO TEMPO, NOTAR QUE APÓS UMA INTERRUPÇÃO DE RELÓGIO, O DRIVER TEM VÁRIAS TAREFAS A REALIZAR: INCREMENTAR O TEMPO REAL; DECREMENTAR QUANTUM; CONTABILIZAR USO DE CPU; DECREMENTAR CONTADORES DE ALARME (TIMERS); PARTES DO S.O. TAMBÉM PRECISAM AJUSTAR TEMPORIZADORES (WATCH-DOGS).
NECESSIDADE DE WATCH-DOG PARA MOTOR DE DISQUETE, QUE NECESSITA SER INICIALIZADO (AGUARDAR ATÉ ATINGIR A VELOCIDADE ADEQUADA); NO CASO DE WATCH-DOGS, EM VEZ DO DRIVER CAUSAR UM SINAL, ELE CHAMA UM PROCEDIMENTO DO S.O. FORNECIDO PELO CHAMADOR; DENTRO DO NÚCLEO AS INTERRUPÇÕES SÃO INCONVENIENTES E NÃO SE USAM SINAIS; O DRIVER E O PROCEDIMENTO ESTÃO NO MESMO ESPAÇO DE ENDEREÇAMENTO. PERFIL DE EXECUÇÃO: O S.O. FORNECE UM MECANISMO PELO QUAL UM PROGRAMA DO USUÁRIO PODE OBTER UM HISTOGRAMA DE SEU PC, DE MODO QUE SE POSSA VER EM QUAIS TRECHOS DO PROGRAMA O SEU TEMPO FOI GASTO; A CADA TIQUE DE RELÓGIO, O DRIVER VERIFICA SE O PERFIL DE EXECUÇÃO DO PROCESSO ATUAL ESTÁ SENDO OBTIDO E, EM CASO AFIRMATIVO, SOMA UM AO INTERVALO (UMA FAIXA DE ENDEREÇOS) EM QUE O VALOR DO PC SE ENCONTRA.
TEMPORIZADORES POR SOFTWARE A MAIOR PARTE DOS COMPUTADORES TEM UM SEGUNDO RELÓGIO, QUE PODE SER PROGRAMADO; SE AS APLICAÇÕES REQUEREM INTERRUPÇÕES MUITO FREQUENTEMENTE, HÁ MUITA INTERFERÊNCIA; POR EXEMPLO, UMA REDE ETHERNET GIGABIT PODE MANIPULAR UM PACOTE DE DADOS A CADA 12 µsegundos; PODE-SE CAUSAR UMA INTERRUPÇÃO COM ESSA FREQUÊNCIA ATRAVÉS DE UM TEMPORIZADOR, QUE CAUSA A NECESSIDADE DE 4,45 µsegundos PARA SEU TRATAMENTO (PENTIUM II DE 300 MHz) TEMPORIZADORES POR SOFTWARE EM OPERAÇÕES DE E/S, NAS CPUs ATUAIS, AS INTERRUPÇÕES CAUSAM UMA SOBRECARGA QUATRO CICLOS DE BARRAMENTO PARA EMPILHAR PC E PSW E PARA FAZER A TROCA POR NOVOS VALORES; ALÉM DISSO, NA TROCA DE CONTEXTO, HÁ NECESSIDADE DE TROCAR PIPELINE, MEMORY MANAGEMENT UNIT (MMU TABELA DE PÁGINAS), TRANSLATION LOOK ASIDE BUFFER (TLB É UMA CACHE DE ENDEREÇOS FÍSICOS JÁ CALCULADOS) E CACHE; DUAS SOLUÇÕES SÃO PROPOSTAS: USO DE POLLING PELA APLICAÇÃO; OU TEMPORIZADOR POR SOFTWARE.
POLLING VERIFICAÇÃO SE O EVENTO OCORREU, SEGUINDO UMA CERTA FREQUÊNCIA; SE OCORRER UM ATRASO SUBSTANCIAL, O EVENTO PODE OCORRER IMEDIATAMENTE APÓS A VERIFICAÇÃO, A APLICAÇÃO TERÁ QUE ESPERAR MAIS UM INTERVALO DE POLLING; O ATRASO, NA MÉDIA, É METADE DO INTERVALO DE POLLING. TEMPORIZADORES POR SOFTWARE SEMPRE QUE O NÚCLEO ESTÁ EXECUTANDO, ANTES DE RETORNAR AO MODO USUÁRIO, VERIFICA O RELÓGIO DE TEMPO REAL PARA AVERIGUAR SE UM TEMPORIZADOR POR SOFTWARE EXPIROU; SE EXPIROU, O EVENTO ESCALONADO É EXECUTADO; APÓS O TRABALHO SER EXECUTADO, O TEMPORIZADOR POR SOFTWARE É DE NOVO INICIALIZADO; ENTRADAS NO NÚCLEO SÃO CAUSADAS POR: CHAMADAS AO SISTEMA; FALTAS NA TLB; FALTAS DE PÁGINAS; INTERRUPÇOES DE E/S; CPU OCIOSA; ENTRE OUTRAS.
TEMPORIZADORES POR SOFTWARE MEDIÇÕES COM VÁRIAS CARGAS NA CPU, A FREQUÊNCIA MÉDIA VARIOU DE 2 µsegundos A 18 µsegundos; UM ATRASO DE 10 µsegundos DE TEMPOS EM TEMPOS É MELHOR QUE O CONSUMO DE 35% DO TEMPO DE CPU PARA TRATAR INTERRUPÇÕES; HAVERÁ PERÍODOS EM QUE NÃO HAVERÁ ENTRADAS NO NÚCLEO. PARA COLOCAR UM LIMITE SUPERIOR NESSES INTERVALOS, O SEGUNDO RELÓGIO DE HARDWARE PODE SER AJUSTADO PARA REINICIALIZAR A CADA 1 msegundos; A COMBINAÇÃO DE TEMPORIZADOR POR SOFTWARE E POR HARDWARE (DE BAIXA FREQUÊNCIA) PODE SER MELHOR QUE E/S ORIENTADA SOMENTE POR INTERRUPÇÕES. Exercícios 1. Exercícios do livro de 28 a 31. 2. Suponha que um dispositivo de relógio funciona decrementando seu contador na freqüência de 5Mhz (cada hz equivale a 1/seg). Qual o valor de um tique (tempo entre duas interrupções) desse dispositivo, se este opera em modo automático (square-wave) com o contador projetado para ser inicializado com o valor 100? 3. Qual deve ser o modo de operação de um dispositivo de relógio que deve ser usado para controle de um escalonamento baseado em time-slice? Resgate as estratégias de escalonamento antes de responder. 4. Um relógio real em um SO é um contador de ticks gerados por um dispositivo de relógio. Supondo que esse dispositivo gere uma interrupção a cada micro-segundo, se esse relógio marca a hora desde 01/01/70 em unidades de segundos e milisegundos, explicar como um SO consegue mantê-lo atualizado.
5. Explicar a causa do bug do milênio, aquele problema em que, na passagem de 1999 para o ano 2000, fez com que várias aplicações tivessem a sua lógica afetada. 6. Haverá a possibilidade de um problema similar ao bug do milênio vir a se repetir? Justificar sua resposta. 7. Explique o que é e como funciona um temporizador por software. 8. Qual é a diferença entre um timmer e um watch-dog? 9. O que é o perfil de execução?