Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio escalonador de tarefas (apresentação)

Embed Size (px)

DESCRIPTION

Neste artigo são explorados os princípios básicos de criação de um sistema operacional de tempo real (RTOS). Usando um microcontrolador MSP430 como referência e um compilador GNU GCC, as tarefas mais importantes no processo de criação de um RTOS são detalhadas através de um projeto conhecido como “Basic RTOS” [1], criado especificamente para este fim e requerendo apenas 128 bytes de RAM e 1150 bytes de flash. Mesmo sistemas com grandes restrições de memória podem se beneficiar de RTOSs como o descrito aqui, evitando estratégias tradicionais de funcionamento apenas baseado em interrupções e facilitando o desenvolvimento. Os conceitos abordados são gerais e não estão restritos ao MSP430 muito menos ao compilador empregado, provendo um conhecimento indispensável para desenvolvedores interessados em aplicar técnicas similares aos seus projetos.

Citation preview

  • 1. Fundamentos de SistemasOperacionais de Tempo Real Criando seu prprio escalonador de tarefas Marcelo Barros de Almeida [email_address]

2. A obra Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu prprio escalonador de tarefas de Marcelo Barros de Almeida foi licenciada com uma LicenaCreative Commons - Atribuio - Uso No-Comercial - Partilha nos Mesmos Termos 3.0 No Adaptada . Com base na obra disponvel em http://code.google.com/p/basicrtos/Podem estar disponveis permisses adicionais ao mbito desta licena atravs do contato direto ao autor via email [email_address] Licenciamento Creative Commons 3. Marcelo Barros de Almeida [email_address]

  • Formao:
  • Engenheiro eletrnico (UNIFEI, 1996), mestre (UFMG, 1998), doutor (UFMG, 2002)

Atualmente:

  • Engenheiro P&D (Smar Equip. Industriais LTDA)

4. Professor do Baro de Mau (RP) Detalhes:

  • http://jedizone.wordpress.com

5. http://www.twitter.com/marcelobarros 6. http://linuxabordo.com.br/wiki/index.php?title=Marcelo_Barros 7. http://lattes.cnpq.br/0711663486251657 smar 8. Sumrio

  • Objetivos

9. Dividindo o tempo do processador 10. Troca de contexto 11. O escalonador 12. Adicionando tarefas 13. Inicializando o sistema 14. Objetivos

  • Interrupt driven x Multitasking

15. Explorar os princpios de um RTOS 16. Descrever via um exemplo didtico: Basic RTOS

  • Nmero fixo de tarefas (mesma prioridade)

17. Time slice diferentes 18. Requer apenas um timer 19. No preemptivo 20. ~1150 bytes de flash, ~128 bytes de RAM 21. Fontes: http://code.google.com/p/basicrtos/ 22. Como dividir o tempo do processador ?

  • Time slicing
  • Tempo de tarefa

23. Tempo do RTOS

  • Escalonador, interrupes, timers, etc

Estratgia:

  • Definio de um tick para o sistema

24. Interrupo peridica de timer de alta prioridade 25. Avaliao peridica das tarefas em execuo 26. Dividindo o tempo do processador Implementando no MSP430/GCC um timer cclico: 27. Troca de contexto

  • Como compartilhar um s conjunto de registros ?

R1 (SP) R2 (SR) R4 a R15 Stack pointer Status register Registros gerais R3 (CG) Constant generator R0 (PC) Program counter 28. Troca de contexto

  • O que acontece no momento da interrupo do temporizador ?

29. Para o MSP430:

  • PC e SR salvos na pilha, automaticamente

30. A instruo reti recupera os registros da pilha, ao sair Todo o resto do trabalho precisa ser feito para a troca de contexto SR ... Estado antes da interrupo ... PC Endereo de retorno Stack Pointer 31. Troca de contexto

  • Salvando o restante dos registros, no contexto da tarefa corrente (no mudamos o SP ainda)

R15 R14 Stack pointer ... R3 PC SR ... 32. Troca de contexto

  • Falta salvar o SP atual antes de usar um outro contexto

33. Informaes sobre a tarefa: Task Block Control (TCB) 34. Troca de contexto

  • O novo contexto o do escalonador

35. O escalonador decide qual a prxima tarefa a ser executada 36. A nova tarefa tem o seu contexto restauradao e ganha o controle do processador 37. O escalonador 38. O escalonador

  • Processar timers pode ser feito em uma tarefa tambm

39. Round Robin no a nica forma de escalonar, talvez voc no queira ser justo sempre 40. Adicionar prioridades pode melhorar o nvel de controle do sistema 41. Uma tarefa nula pode ser interessante quando o sistema estiver ocioso 42. Economizar energia pode ser um requisito 43. Adicionando tarefas

  • Em geral, um processo simples:
  • Definir uma funo para a tarefa

44. Reservar espao para a pilha da tarefa 45. Especificar prioridade e slice de tempo As tarefas entram no vetor de TCBs, na partida do sistema 46. Alguns cuidados essenciais:

  • Criar o contexto inicial da tarefa na pilha dela

47. Criar um contexto para o caso de a tarefa retornar 48. Alinhe a rea do stack 49. Adicionando tarefas 50. Adicionando tarefas

  • Criando o contexto inicial

R15 R14 pusStackPtr ... R3 PC SR BRTOS_TaskEnd pusStackBeg 51. Adicionando tarefas 52. Adicionando tarefas

  • One more thing ...

53. Inicializando o sistema

  • Basicamente, preciso:
  • Inicializar as variveis de controle do RTOS

54. Definir as tarefas (no existe suporte criao dinmica de tarefas) 55. Chamar o escalonador 56. Comentrios, dvidas ? [email_address] http://twitter.com/marcelobarros http://code.google.com/p/basicrtos/