Fundamentos de Sistemas  Operacionais de Tempo Real Criando seu próprio escalonador de tarefas Marcelo Barros de Almeida [...
A obra ” Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio escalonador de tarefas ” de Marcelo Barr...
Marcelo Barros de Almeida [email_address] <ul><li>Formação: </li><ul><li>Engenheiro eletrônico (UNIFEI, 1996), mestre (UFM...
Professor do Barão de Mauá (RP) </li></ul><li>Detalhes:  </li><ul><li>http://jedizone.wordpress.com
http://www.twitter.com/marcelobarros
http://linuxabordo.com.br/wiki/index.php?title=Marcelo_Barros
http://lattes.cnpq.br/0711663486251657 </li></ul></ul>smar
Sumário <ul><li>Objetivos
Dividindo o tempo do processador
Troca de contexto
O escalonador
Adicionando tarefas
Inicializando o sistema </li></ul>
Objetivos <ul><li>Interrupt driven x Multitasking
Explorar os princípios de um RTOS
Descrever via um exemplo didático: Basic RTOS </li><ul><li>Número fixo de tarefas (mesma prioridade)
Time slice diferentes
Requer apenas um timer
Não preemptivo
~1150 bytes de flash, ~128 bytes de RAM
Fontes: http://code.google.com/p/basicrtos/  </li></ul></ul>
Upcoming SlideShare
Loading in …5
×

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

2,223 views

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,223
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
55
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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. Mesmo sistemas com grandes restrições de memória podem se beneficiar de RTOSes 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.
  • Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio escalonador de tarefas (apresentação)

    1. 1. Fundamentos de Sistemas Operacionais de Tempo Real Criando seu próprio escalonador de tarefas Marcelo Barros de Almeida [email_address]
    2. 2. A obra ” Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio escalonador de tarefas ” de Marcelo Barros de Almeida foi licenciada com uma Licença Creative Commons - Atribuição - Uso Não-Comercial - Partilha nos Mesmos Termos 3.0 Não Adaptada . Com base na obra disponível em http://code.google.com/p/basicrtos/ Podem estar disponíveis permissões adicionais ao âmbito desta licença através do contato direto ao autor via email [email_address] Licenciamento Creative Commons
    3. 3. Marcelo Barros de Almeida [email_address] <ul><li>Formação: </li><ul><li>Engenheiro eletrônico (UNIFEI, 1996), mestre (UFMG, 1998), doutor (UFMG, 2002) </li></ul><li>Atualmente: </li><ul><li>Engenheiro P&D (Smar Equip. Industriais LTDA)
    4. 4. Professor do Barão de Mauá (RP) </li></ul><li>Detalhes: </li><ul><li>http://jedizone.wordpress.com
    5. 5. http://www.twitter.com/marcelobarros
    6. 6. http://linuxabordo.com.br/wiki/index.php?title=Marcelo_Barros
    7. 7. http://lattes.cnpq.br/0711663486251657 </li></ul></ul>smar
    8. 8. Sumário <ul><li>Objetivos
    9. 9. Dividindo o tempo do processador
    10. 10. Troca de contexto
    11. 11. O escalonador
    12. 12. Adicionando tarefas
    13. 13. Inicializando o sistema </li></ul>
    14. 14. Objetivos <ul><li>Interrupt driven x Multitasking
    15. 15. Explorar os princípios de um RTOS
    16. 16. Descrever via um exemplo didático: Basic RTOS </li><ul><li>Número fixo de tarefas (mesma prioridade)
    17. 17. Time slice diferentes
    18. 18. Requer apenas um timer
    19. 19. Não preemptivo
    20. 20. ~1150 bytes de flash, ~128 bytes de RAM
    21. 21. Fontes: http://code.google.com/p/basicrtos/ </li></ul></ul>
    22. 22. Como dividir o tempo do processador ? <ul><li>Time slicing </li><ul><li>Tempo de tarefa
    23. 23. Tempo do RTOS </li><ul><li>Escalonador, interrupções, timers, etc </li></ul></ul><li>Estratégia: </li><ul><li>Definição de um tick para o sistema
    24. 24. Interrupção periódica de timer de alta prioridade
    25. 25. Avaliação periódica das tarefas em execução </li></ul></ul>
    26. 26. Dividindo o tempo do processador Implementando no MSP430/GCC um timer cíclico:
    27. 27. Troca de contexto <ul><li>Como compartilhar um só conjunto de registros ? </li></ul>R1 (SP) R2 (SR) R4 a R15 Stack pointer Status register Registros gerais R3 (CG) Constant generator R0 (PC) Program counter
    28. 28. Troca de contexto <ul><li>O que acontece no momento da interrupção do temporizador ?
    29. 29. Para o MSP430: </li><ul><li>PC e SR salvos na pilha, automaticamente
    30. 30. A instrução reti recupera os registros da pilha, ao sair </li></ul><li>Todo o resto do trabalho precisa ser feito para a troca de contexto </li></ul>SR ... Estado antes da interrupção ... PC Endereço de retorno Stack Pointer
    31. 31. Troca de contexto <ul><li>Salvando o restante dos registros, no contexto da tarefa corrente (não mudamos o SP ainda) </li></ul>R15 R14 Stack pointer ... R3 PC SR ...
    32. 32. Troca de contexto <ul><li>Falta salvar o SP atual antes de usar um outro contexto
    33. 33. Informações sobre a tarefa: Task Block Control (TCB) </li></ul>
    34. 34. Troca de contexto <ul><li>O novo contexto é o do escalonador
    35. 35. O escalonador decide qual a próxima tarefa a ser executada
    36. 36. A nova tarefa tem o seu contexto restauradao e ganha o controle do processador </li></ul>
    37. 37. O escalonador
    38. 38. O escalonador <ul><li>Processar timers pode ser feito em uma tarefa também
    39. 39. Round Robin não é a única forma de escalonar, talvez você não queira ser ”justo” sempre
    40. 40. Adicionar prioridades pode melhorar o nível de controle do sistema
    41. 41. Uma tarefa nula pode ser interessante quando o sistema estiver ocioso
    42. 42. Economizar energia pode ser um requisito </li></ul>
    43. 43. Adicionando tarefas <ul><li>Em geral, é um processo simples: </li><ul><li>Definir uma função para a tarefa
    44. 44. Reservar espaço para a pilha da tarefa
    45. 45. Especificar prioridade e slice de tempo </li></ul><li>As tarefas entram no vetor de TCBs, na partida do sistema
    46. 46. Alguns cuidados essenciais: </li><ul><li>Criar o contexto inicial da tarefa na pilha dela
    47. 47. Criar um contexto para o caso de a tarefa retornar
    48. 48. Alinhe a área do stack </li></ul></ul>
    49. 49. Adicionando tarefas
    50. 50. Adicionando tarefas <ul><li>Criando o contexto inicial </li></ul>R15 R14 pusStackPtr ... R3 PC SR BRTOS_TaskEnd pusStackBeg
    51. 51. Adicionando tarefas
    52. 52. Adicionando tarefas <ul><li>One more thing ... </li></ul>
    53. 53. Inicializando o sistema <ul><li>Basicamente, é preciso: </li><ul><li>Inicializar as variáveis de controle do RTOS
    54. 54. Definir as tarefas (não existe suporte à criação dinâmica de tarefas)
    55. 55. Chamar o escalonador </li></ul></ul>
    56. 56. Comentários, dúvidas ? [email_address] http://twitter.com/marcelobarros http://code.google.com/p/basicrtos/

    ×