Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio escalonador de tarefas...
-
Upload
marcelo-barros-de-almeida -
Category
Technology
-
view
1.807 -
download
0
description
Transcript of Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio escalonador de tarefas...
- 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/