Sistemas Tempo-Real
Universidade de Aveiro
Disciplina opcional do 5º ano dos Mestrados Integrados em:
-    Engª de Electrónica e Telecomunicações
 -    Engª de Computadores e Telemática 
 
Índice:
- Novidades
 - Docentes
 - Enquadramento, objectivos e organização
 - Tópicos, planificação e slides das aulas teóricas
 - Regras de avaliação
 - Avaliação das aulas práticas
 - Bibliografia (livros e artigos)
 - Temas / artigos para discussão nas aulas teóricas
 - Materiais para as aulas práticas
 - Mini-projectos
 - Indicações para a apresentação do trabalho e relatório
 - STR nos anos lectivos anteriores
 
Novidades
-  [12-Nov-2009] Aviso importante:
						Amanhã, Sexta-feira, 13 de Novembro, não poderei leccionar a aula de STR, em virtude da
						realização das provas de Doutoramneto do Ricardo Marau, de quem sou orientador. 
Entretanto convido-vos a assistirem às provas, pois o trabalho do Ricardo encontra-se intimamente relaccionado com os temas abordados em STR.
As provas irão decorrer na Sexta, a partir das 14H30, na Sala de Actos Académicos (Ed. Reitoria)
A aula será substituída na próxima Quarta-feira, entre as 15H00 e as 18H00, Sala 320. - [17-Nov-2009] Avaliação contínua: trabalhos pesquisa / trabalhos práticos
 -  [19-Nov-2009] Indicações adicionais para o trabalho 3 / RTAI 
(Secção aulas práticas) - [22-Dez-2009] Avaliação contínua (actualização): trabalhos pesquisa / trabalhos práticos
 - [8-Jan-2010] Sessão de apresentações Segunda-feira, dia 11/Janeiro, 16H00-18H00, Sala 320.
 -  [8-Jan-2010] Indicações para o exame:
						
-  O exame é com consulta, mas apenas são permitidos materiais de consulta em papel. 
Em particular não será permitido o uso de computadores pessoais, telemóveis ou quaisquer outros dispositivos que permitam comunicação. - Não será permitida a partilha de materiais de consulta.
 - Os alunos devem fazer-se acompanhar de uma máquina de calcular
 
 -  O exame é com consulta, mas apenas são permitidos materiais de consulta em papel. 
 - [12-Jan-2010] Atendimento Quarta-feira, 13/Jan, 16H00-18H00, Gabinete 321 ou Lab. 319.
 - [14-Jan-2010] Nova sessão de atendimento Sexta-feira, 15/Jan, 11H00-12H00, Gabinete 321 ou Lab. 319.
 - [14-Jan-2010] Avaliação global
 - 
						[20-Jan-2010]  Avaliação global após exame 
Consulta dos exames: Quinta-feira, 21/Jan/2010, 17H00-18H00, Gab. 321 - [21-Jan-2010] Avaliação global após exame (update)
 - [26-Jan-2010] Enunciado do exame da época normal
 
Docente
Horário
- Aulas teórico-práticas - Sala 320, 6a.s 13h-16h
 - Atendimento: Quartas-feiras, 17H00-18H00, Gab. 321 (DETI)
 
Enquadramento, objectivos e organização
Os sistemas de tempo-real desempenham um papel crucial nas sociedades modernas, suportando áreas aplicacionais tais como controlo de centrais nucleares, controlo de indústrias químicas, sistemas aviónicos, sistemas de controlo de tracção, motor e travagem em automóveis, controlo de tráfego aéreo, marítimo, ferroviário e rodoviário, sistemas de telecomunicações, automação industrial, robótica, sistemas de defesa militar, missões espaciais, etc..
Embora o leque de aplicações seja vasto, muitas das quais são aplicações críticas em termos de segurança, as abordagens tipicamente usadas no desenvolvimento de sistemas de tempo-real baseiam-se em técnicas de programação empíricas e de baixo nível, sem o suporte de uma metodologia científica precisa. A consequência desse facto é uma menor fiabilidade que, em tais aplicações críticas, pode causar sérios danos a equipamento, ambiente e até mesmo a vidas humanas.
Por outro lado, a recente grande difusão de aplicações interactivas, como os sistemas de realidade virtual ou genericamente os sistemas multimedia, veio alargar substancialmente o leque de aplicabilidade dos sistemas de tempo-real. Emboras estas aplicações não sejam críticas em termos de segurança, o cumprimento das respectivas restrições temporais tem um impacto directo no respectivo desempenho.
Esta proliferação de aplicações com restrições temporais veio aumentar significativamente o interesse nos sistemas operativos de tempo-real, sendo hoje comum encontrar referências por exemplo a sistemas como Real-Time Linux.
A disciplina que se propõe foca quatro aspectos essenciais:
- a origem e caracterização das restrições impostas pelo ambiente ao comportamento temporal do sistema computacional;
 - a forma como o sistema computacional mantém o conhecimento do estado do ambiente que o rodeia;
 - a teoria de escalonamento de actividades concorrentes associadas a processos de tempo-real;
 - e a constituição e construção de sistemas operativos / executivos de tempo-real.
 
A organização proposta está baseada em duas componentes, teórica e prática. A primeira será essencialmente expositiva mas recorrendo a exemplos práticos e momentos de discussão. A segunda fará uso de vários sistemas operativos e/ou executivos tempo-real de domínio público ou disponíveis para ensino (e.g. RT-Linux, RTAI, KURT, RT-Mach, SHaRK, SMX, ReTMiK) bem como de um conjunto de plataformas para sistemas embutidos (baseadas no uC 80C188, 68HC11, 80C51, PIC16F876 e PIC18F258) e incluirá uma primeira série de trabalhos práticos essencialmente ilustrativos, sendo seguida pelo desenvolvimento de um pequeno projecto.
Tópicos, planificação e slides das aulas teóricas
- Aula 0: Apresentação. Funcionamento da disciplina. Outras informações. (slides/pdf)
 - 
						 Aula 1: Restrições temporais: origem e caracterização 
						(slides/pdf)
  						
- 1.1- O conceito de tempo-real e a origem das restrições temporais
 - 1.2- Caracterização de restrições temporais
 - 1.3- Requisitos dos sistemas de tempo-real
 
 - 
						 Aula 2: Modelos computacionais 
						(slides/pdf)
						
- 2.1- Modelos de tarefas com restrições temporais explícitas
 - 2.2- Questões de implementação
 - 2.3- Controlo lógico versus controlo temporal
 - 2.4- Caracterização dos paradigmas de controlo por eventos (ET) e por tempo (TT)
 
 - 
   					 Aula 3: Executivos de tempo-real 
   					(slides/pdf)
  						
- 3.1- Os estados de uma tarefa
 - 3.2- Arquitectura genérica de um executivo (kernel) de tempo-real
 - 3.3- Estruturas e funções típicas do executivo
 
 - 
						 Aula 4: Conceitos básicos de escalonamento  
						(slides/pdf)
						
- 4.1- Escalonamento de tarefas, taxonomia básica
 - 4.2- Alguns métodos básicos de escalonamento
 - 4.3- Escalonamento estático cíclico
 
 - 
						 Aula 5: Escalonamento de tarefas periódicas  
						(slides/pdf)
						
- 5.1- Escalonamento baseado em prioridades fixas (RM, DM, outros)
 - 5.2- Análises de escalonabilidade baseadas em utilização e tempo de resposta
 
 -  
						 Aula 6: Escalonamento de tarefas periódicas, cont.  
						(slides/pdf)
						
- 6.1- Escalonamento baseado em prioridades dinâmicas (EDF, LSF, outros)
 - 6.2- Análises de escalonabilidade baseadas em utilização e carga de CPU
 - 6.3- Comparação entre prioridades fixas e dinâmicas
 
 - 
						 Aula 7: Acesso a recursos partilhados  
						(slides/pdf)
						
- 7.1- O problema da inversão de prioridades
 - 7.2- Herança de prioridades
 - 7.3- Protocolo de tecto de prioridades (Priority-Ceiling Protocol)
 - 7.4- Protocolo de pilha de recursos (Stack Resource Protocol)
 
 - 
						 Aula 8: Processamento de tarefas aperiódicas  
						(slides/pdf)
						
- 8.1- Servidores de prioridades fixas
 - 8.2- Servidores de prioridades dinĂ¢micas
 
 - 
						 Aula 9: Outras aspectos do escalonamento tempo-real  
							(slides/pdf)
						
- 9.1- Escalonamento sem preempção
 - 9.2- Aspectos de implementação prática
 
 - 
						 Aula 10: Optimizações
						(slides/pdf)
						Código exemplo (sample.c))
						
- 10.1 - Técnicas de optimização
 - 10.1 - Profiling
 - 10.1 - Ferramentas
 
 - Aula 11: Perspectivas de investigação actual sobre sistemas de tempo-real
 
Regras de avaliação
- Época normal
						
- téorica: 50% (40% teste único, 10% participação nas sessões de discussão (5% docente, 5% pares))
 - prática: 50% (projecto: 25% relatório, 5% livro de registo, 10% apresentação, 10% trabalho adicional aos tutoriais)
 - Exames dos anos anteriores:
 
 
- téorica: 50% (exame)
 - prática: 50% (nota correspondente da época normal ou exame prático)
 
Avaliação das aulas práticas
- Relatório
 - Deverá ser entregue até ao dia 8 de Janeiro de 2010
 - O respectivo formato deverá obedecer às seguintes indicações: folha de capa com nome da disciplina, do docente, do ano lectivo, do trabalho e dos autores; corpo até quatro páginas; texto em coluna simples, espaçamento simples entre linhas, tipo de letra TimesNewRoman tamanho 11 ou 12, margens laterais de 2,5cm; indicação do número de página no rodapé.
 - Quando se justificar poderão existir anexos técnicos (e.g. esquemáticos, notas sobre questões de instalação, etc.)
 - Pacote a entregar : conjuntamente com a versão impressa do relatório deverá também ser entregue um ficheiro compactado (formatos zip ou tgz) com: apresentação em pdf; relatório em pdf; código fonte do software; anexos (esquemáticos, etc)
 
Bibliografia
(Todos estes livros existem na biblioteca da UA)
referências preferenciais:
- Buttazzo, G.C. (2004). Hard Real-Time Computing Systems (2nd ed.). Springer.
 - Buttazzo, G.C. (1997). Hard Real-Time Computing Systems: Predictable Scheduling Algorithms and Applications. Kluwer Academic Publishers.
 - Kopetz, H. (1997). Real-Time Systems Design Principles for Distributed Embedded Applications. Kluwer Academic Publishers.
 
outras referências:
- Veríssimo, P. and L. Rodrigues (2001). Distributed Systems for System Architects. Kluwer Academic Publishers.
 - Liu, J.W.S. (2000). Real-Time Systems. Prentice Hall.
 - Briand, L. and D.M. Roy (1999). Meeting Deadlines in Hard Real-Time Systems: the Rate-Monotonic Approach . IEEE Computer Society Press, Los Alamitos (CA), USA.
 - Stankovic, J. et al. (1998). Deadline Scheduling for Real-Time Systems: EDF and Related Algorithms. Kluwer Academic Publishers.
 - Krishna, C.M. and K. Shin (1997). Real-Time Systems. McGraw-Hill.
 - 
    					Laplante, P.A. (1997). Real-Time Systems Design and Analysis - An Engineer’s Handbook (2nd ed.).
    					IEEE Press.
 - Nissanke, N. (1997). Real-Time Systems. Prentice Hall.
 - Welling, A. and A. Burns (1996). Real-Time Systems and Their Programming Languages (2nd ed.). Int. Computer Science Series, Addison-Wesley.
 - Motus, L. and M.G. Rodd (1994). Timing Analysis of Real-Time Software. IEEE Press.
 - Klein, M. et al. (1993). A Practitioner’s Handbook for Real-Time Analysis: Guide to Rate-Monotonic Analysis for Real-Time Systems. Kluwer Academic Publishers.
 
artigos do grupo, relevantes para os mini-projectos
- 
						
						Secção Especial sobre STR (ano lectivo 2003/2004)
Luís Almeida, Paulo Pedreiras (eds)
Electrónica e Telecomunicações, Vol. 4, No. 2, DETUA, Abril 2004.- Ensaio sobre os Sistemas de Tempo-Real (em português), material essencialmente retirado do livro de Buttazzo (1997); Arnaldo Oliveira, Luis Almeida (integra a Secção Especial)
 - OReK: Um Executivo de Tempo-Real Orientado por Objectos (em português), Arnaldo Oliveira, Luis Almeida, Valery Sklyarov (integra a Secção Especial)
 
 - 
						Sistemas Operativos de Tempo-Real: Utilização em aplicações móveis
por: Jorge Caetano, Marco Gaspar e João Coimbra (NEC-Portugal, Aveiro)
(mais info, slides) - 
						
						Using a Real-Time Kernel to Simulate the Micro-Rato Robotics Contest
J. Capucho, L. Almeida, G. Buttazzo
ROBOTICA 2001, APCA Encontro Científico do Fest. Nac. de Robótica Móvel, Guimarães, Portugal, Abril 2001.
Software (Shark v1.4) - sources e executável
Seleccionado para publicação:- 
          					Simulating the Micro-Rato Robotics Contest with a Real-Time Kernel
J. Capucho, L. Almeida, G. Buttazzo
Robótica, no.44, Publindústria, Portugal. Jul-Sept 2001. 
 - 
          					Simulating the Micro-Rato Robotics Contest with a Real-Time Kernel
 - 
						
						Modelização de Pequenos Robots Autónomos: Um Exemplo
Luís Almeida
Electrónica e Telecomunicações, Vol. 2, No. 1, DETUA, Setembro 1997. 
Temas / artigos para discussão nas aulas teóricas
-  "POSIX in Real-Time"   (Slides) 
Link -  "Ecalonamento em Linux" 
Link -  "O SHaRK OS"  (Slides) 
Link -  "O FreeRTOS OS"  (Slides) 
Link -  "The Arduino project" 
Link -  "Xenomai: Real-Time Framework for Linux"  (Slides) 
Link -  "A Real Time Scheduler/Dispatcher" 
Link -  "The Mars Pathfinder incident"  (Slides) 
Link
Link 2 -  "Real-Time Vision frameworks"  (Slides)  
Link 
Materiais para as aulas práticas
- Serviços tempo-real no GPOS Linux
 - Tutorial RTKPIC: Utilização do kernel RTKPIC18
 - O kernel RTAI
 - Guia da aula
 - Código fonte
 - Slides introdução ao RTAI
 - Exemplo do uso de "shared memory" (do RTAI showroom)
 -  Tarefas esporádicas:
								
- Activação efectuada por "rt_task_resume()"
 - Terminação efectuada por "rt_task_suspend()"
 - Reduzir a carga computacional das tarefas em "app_defs.h" (e.g. 100ms cada) 
Se tal não for feito o CPU fica em overload e o PC aparenta bloquear (o Linux não tem tempo de CPU)
Obrigado Rómulo! 
 - Informação sobre a API do RTAI pode ser encontrada em https://www.rtai.org/documentation/magma/html/api/
 
Mini-projectos
- RTSS Students Design Competition
 - Controlo em RTAI de um pêndulo invertido sobre plataforma móvel
 -  Documentação, testes e extensão do kernel RTKIC18
						
- Documentação das primitivas e estruturas de dados
 - Medidas de desepenho
 - Desenvolvimento de novos módulos
 
 -  Jogo "parede" em SHaRK
						
- Simulador
 - Jogadores (tarefas independentes)
 - Display gráfico
 
 -  Simulador de escalonamento genérico
- Interface gráfica
 - Estatísticas, timeline com saída gráfica e em texto
 - Suporte a diversos algoritmos de escalonamento (RM, DM, EDF, ...)
 
 
Nota: não negligenciar o livro de registos
Indicações para a apresentação dos trabalhos práticos e relatório
As apresentações dos trabalhos práticos decorrerão na última aula prática e serão organizadas em blocos de 10 min por grupo. Durante esse tempo, cada grupo deverá efectuar uma breve apresentação, cerca de 5 min., seguida de demonstração. A apresentação não poderá ter mais de 4 a 5 slides ou transparências sobre: 1-objectivo/problema, 2-aspectos específicos (e.g. dinĂ¢mica do processo, técnica de controlo), 3-abordagem (e.g. organização em tarefas, tipos, períodos), 4-resultados, 5-ponto da situação.
O relatório deverá ser entregue até ao dia 8 de Janeiro de 2010 e está limitado a 4 páginas, excluíndo eventuais anexos técnicos. O respectivo formato deverá obedecer às seguintes indicações: folha de capa com nome da disciplina, do docente, do ano lectivo, do trabalho e dos autores, texto em coluna simples, espaçamento simples entre linhas, tipo de letra TimesNewRoman tamanho 11 ou 12, margens laterais de 2,5cm e indicação do número de página no rodapé. A respectiva estrutura deverá seguir os pontos acima referidos para organizar a apresentação. O objectivo do relatório é o de explicar a abordagem usada na resolução do problema proposto bem como os resultados obtidos. Será também o sítio indicado para salientar os detalhes considerados relevantes e que poderiam ter passado despercebidos na apresentação.
No caso do trabalho não estar concluído na data da apresentação, esta deverá mostrar o estado actual podendo haver uma nova apresentação a realizar perto da data da entrega do relatório.
Conforme prometido (ver regras de avaliação), haverá uma verificação dos livros de registo!