Nome Departamento de Engenharia Informática Licenciatura em Engenharia Informática e de Computadores Aplicações para Sistemas Embebidos 2006/2007 1º Exame, 6 de Janeiro de 2007 Número Ano / Ramo E-mail Duração: 1h15 + 15m de tolerância. Prova sem consulta. Identifique todas as folhas. Em questões com escolha múltipla: Preencha as respostas na matriz seguinte. Só serão cotadas as respostas legíveis lançadas nesta matriz. Cada resposta errada é cotada negativamente com Cotação (N 1), onde N é o número de opções da pergunta. Em todas as perguntas utilize as zonas reservadas para a resolução. Matriz de respostas: Pergunta Cotação Resposta I.a) 1,5 I.b) 0,75 II.a) 1 II.b) 1,5 III.a) 1,75 III.b) 1 III.c) 1 Resposta no local III.d) 1,75 III.e) 1,75 IV.a) 1 IV.b) 1 IV.c) 1,5 V. 1,5 VI. 1,5 VII. 1,5 Respostas: DCB.CDE, Não, CD.BED.BCC. 1 / 8.
I. O programa seguinte executa-se num sistema com uma sentinela (watchdog). O período de alarme da sentinela situa-se entre 90 ms e 110 ms. 1 keep_alive () /* Reinicializa a sentinela */ 2 { 3 Bloco K /* 0,05 ms */ 4 return (); 5 6 int Real_Time_Clock () /* Período da interrupção = 100 ms */ 7 { 8 Bloco I /* 0,1 ms */ 9 return_from_interrupt (); 10 11 /* Programa principal */ 12 while (ON) { 13 Bloco A /* 85 ms */ 14 if (n > 0) 15 Bloco B /* 70 ms */ 16 else 17 switch (p); 18 case (1): 19 Bloco C /* 10 ms */ 20 break; 21 case (2): 22 Bloco D /* 95 ms */ 23 break; 24 default: 25 Bloco E /* 30 ms */ 26 break; 27 I.a) Indique entre que linhas do programa se devem inserir as chamadas à função de reinicialização da sentinela keep_alive () para, em condições normais, evitar o disparo da sentinela, minimizando o número de chamadas à função. A: Entre 3 e 4. B: Entre 8 e 9. C: Entre 13 e 14, entre 15 e 16, entre 19 e 20, entre 22 e 23, entre 25 e 26. D: Entre 13 e 14, entre 15 e 16, entre 22 e 23, entre 25 e 26. E: Entre 8 e 9, entre 13 e 14. F: Entre 13 e 14. I.b) O sistema dispõe de um temporizador com um contador de 16 bits com um prescaler que oferece as seguintes opções: f, f/10, f/100. A frequência do relógio de entrada do temporizador é 20 MHz. Indique a configuração do temporizador que permite medir um intervalo de 100 ms para disparo do alarme da sentinela. A: Saída f, divisão por 2 10 6 no contador. B: Saída f/10, divisão por 200.000 no contador. C: Saída f/100, divisão por 20.000 no contador. D: Nenhuma das saídas satisfaz o pretendido. 2 / 8
II. O programa seguinte faz conversão analógica-digital recorrendo somente a um conversor D/A e a um comparador: #define MAX 256 int i; /* Início da conversão */ for (i = 0; i < MAX; i = i+1) { output_to_dac (i); wait (DA_conversion_time); if (input_from_comparator () 0) break; /* Resultado em i */ II.a) Qual é o tempo máximo de conversão? A: 127 iterações. B: 256 iterações. C: 128 iterações. D: 255 iterações. II.b) Sem aumentar a complexidade do hardware há alguma forma de optimizar o tempo de conversão? Em caso afirmativo qual seria o tempo de conversão optimizado? A: Se o valor inicial do ciclo de conversão for i = MAX/2, sem mais alterações ao programa, o tempo de conversão máximo reduz-se para metade. B: Se o valor inicial do ciclo de conversão for o resultado anterior, sem mais alterações ao programa, o tempo de conversão máximo mantém-se mas o tempo médio reduz-se significativamente. C: Se o programa for alterado de modo a o passo da aproximação variar em potências de 2, definindo primeiro o valor do bit de maior peso e prosseguindo para os bits de menor peso, o tempo de conversão será 8 iterações. D: Só se consegue reduzir o tempo de conversão utilizando um conversor D/A mais rápido de modo a reduzir o tempo de espera por ciclo wait (DA_conversion_time). E: Nenhuma das afirmações anteriores está correcta. 3 / 8
III. Uma aplicação com arquitectura round-robin com interrupções é constituída por 3 módulos funcionais A, B e C cada um dos quais serve um pedido específico activado em resultado de uma interrupção. O sistema apresenta as seguintes características, medidas em unidades de tempo T: Módulo Tempo de execução Período de repetição do pedido de serviço (Rotina de interrupção + Tarefa) A 1 + 1 8 B 1 + 2 12 C 1 + 4 12 Considere que a sobrecarga com o ciclo de chamada dos módulos é desprezável, e que os pedidos consideram-se atendidos no fim da execução das tarefas que os servem. As tarefas são chamadas de A a C. Admita que em t = 0 são activados os 3 pedidos de serviço. Os 10 primeiros estados do diagrama de execução deste sistema estão representados na tabela seguinte. (R = rotina de interrupção, T = tarefa) A R T R B R T T C R T T T 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 III.a) Qual é a ocupação útil média do processador, sendo considerado útil só o tempo de execução dos módulos funcionais (rotina de interrupção + tarefa)? A: 50% B: 99% C: 76% D: 91,7% E: 100% F: 87,5% III.b) Qual é a taxa de ocupação efectiva (real) do processador? A: 50% B: 99% C: 76% D: 91,7% E: 100% F: 87,5% III.c) Este sistema é preemptivo? (Justifique sucintamente.) 4 / 8
III.d) Até que valor pode ser reduzido o período de repetição do pedido associado ao componente A sem ocorrer perda de pedidos? A: 4T B: 5T C: 6T D: 7T E: 8T A R B C R R 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 III.e) Mantendo a arquitectura round-robin com interrupções sugira uma solução alternativa para uma situação em que o tempo de serviço associado a C não exceda 8T, mantendose as restantes condições da alínea a). A: BOOL frequesta = FALSE; BOOL frequestb = FALSE; BOOL frequestc = FALSE; B: BOOL frequesta = FALSE; BOOL frequestb = FALSE; BOOL frequestc = FALSE; void main (void) { while (TRUE) { if (frequesta) { frequesta = FALSE; Handle Request A fdeviceb = FALSE; if (frequestc) { fdevicec = FALSE; Handle Request C void main (void) { while (TRUE) { if (frequestc) { fdevicec = FALSE; Handle Request C fdeviceb = FALSE; if (frequesta) { frequesta = FALSE; Handle Request A 5 / 8
C: BOOL frequesta = FALSE; BOOL frequestb = FALSE; BOOL frequestc = FALSE; BOOL fstepc2 = FALSE; Void Handle Request C (void) { Handle Request C1; Handle Request C2 void main (void) { while (TRUE) { if (frequesta) { frequesta = FALSE; Handle Request A frequestb = FALSE; if (frequestc) { if (fstep2) { Handle Request C2; frequestc = FALSE; fstep2 = FALSE else { Handle Request C1; fstepc2 = TRUE D: BOOL frequesta = FALSE; BOOL frequestb = FALSE; BOOL frequestc = FALSE; void main (void) { while (TRUE) { frequestb = FALSE; if (frequesta) { frequesta = FALSE; Handle Request A frequestb = FALSE; if (frequestc) { frequestc = FALSE; Handle Request C 6 / 8
IV. Um sistema de monitorização ecológica é constituído por uma rede sensores fixados em animais, que medem periodicamente a sua localização e outros parâmetros associados ao comportamento dos portadores. Os dados recolhidos são transmitidos para uma estação de base de uma rede celular. Mediram-se as características de consumo de cada sensor. O modo local refere-se a comunicações dentro da célula, retransmitindo a estação de base da célula para a estação central; o modo global refere-se a comunicações directamente do sensor para a estação de coordenação central. (U unidade de energia) Duração relativa Modo local Modo global (em modo local) Standby 97 % 1 U Transmissão de dados 1 % 1.600 U 160.000 U Recepção de dados 300 U Ligação à estação de base 1 % 400 U 40.000 U Medição dos sensores e processamento 1 % 200 U IV.a) Qual é o consumo de um ciclo de recolha e transmissão de dados em modo local? A: 12 U B: 23 U C: 33 U D: 50 U E: 100 U F: 150 U IV.b) Considerando que a autonomia do equipamento é cerca de 2 anos (comunicações locais) qual seria, aproximadamente, a autonomia só com comunicações globais mas mantendo o protocolo de ligação entre o sensor e a estação de base/estação central? A: 1 ano B: 3 dias C: 120 dias D: 60 dias E: 8 dias F: 232 dias IV.c) Uma vez que não é possível instalar estações de base fixas permanentes há duas alternativas para a transmissão dos dados recolhidos para a estação central: A Transmissão directa para a estação central (comunicações globais). B Difusão. Transmissão local para outros sensores presentes na célula que, por sua vez a retransmitem. Deste modo, estando os sensores espalhados uniformemente pelo território, a informação há-de chegar à estação central. (Toda a comunicação é local.) O protocolo evita repetições de transmissões de dados desnecessárias (por exemplo, o nó A emite para B que, por sua vez, retransmite, recebendo A o que acabou de enviar). Do ponto de vista da autonomia dos sensores, abaixo de que número de sensores é que o protocolo B é preferível? 7 / 8
A: É sempre preferível A. B: 100 sensores. C: 12 sensores. D: 87 sensores. E: 49 sensores. F: É sempre preferível B. Em cada grupo assinale uma afirmação correcta. V. Do ponto de vista aplicacional a principal vantagem de uma rede de sensores é... A:... a elevada largura de banda na comunicação, uma vez que o elevado número de nós permite um grande paralelismo na transferência de dados. B:... a existência de uma infraestrutura de rede sem fios e com muitos nós com alguma capacidade de processamento e medida, o que dá acessibilidade a pontos de outra forma inatingíveis. C:... o baixo consumo dos nós. D:... a capacidade de programação remota de funções de monitorização. E: Nenhuma das afirmações anteriores está correcta. VI. Actualmente a principal razão para a inclusão de microprocessadores em cartões (chip cards)... A:... é o maior poder de cálculo face às alternativas (cartões de memória ou cartões à medida ), o que permite inclusivamente instalar máquinas virtuais poderosas. B:... é a maior flexibilidade na gestão da memória interna do cartão, permitindo gerir zonas para RAM, EEPROM e ROM. C:... é a possibilidade de dar acesso controlado (seguro) à informação no cartão. D:... é a possibilidade de processar transacionalmente a informação no cartão. E: Nenhuma das afirmações anteriores está correcta. VII. A: Nas arquitecturas round-robin com interrupções e com escalonamento por fila de funções nunca é possível construir sistemas de tempo-real. B: Para construir sistemas de tempo-real em arquitecturas round-robin com interrupções e com escalonamento por fila de funções é necessário atribuir prioridades às tarefas. As prioridades devem ser ordenadas na ordem inversa dos períodos de repetição dos pedidos de interrupção. C: Nas arquitecturas round-robin com interrupções e com escalonamento por fila de funções é possível construir sistemas de tempo-real em determinadas condições (limitação do número de tarefas, optimização do código tendo em conta as cartacterísticas temporais das tarefas e das interrupções, etc.). D: Só com escalonamento rate monotonic é possível construir sistemas de tempo-real. E: Nenhuma das afirmações anteriores está correcta. 8 / 8