Você está na página 1de 31

Introduo Conceitos sobre RTOS

Alberto Fabiano alberto@computer.org @techberto

Tradicional: Foreground/Background
Firmware: cdigo executvel bare-metal Aplicao com um eternal loop, main loop ou super loop no qual mdulos so invocados para executar as operaes desejadas Fluxo em uma nica linha de execuo como mdulos em background disparados por ISRs rotinas de servio de interrupes (ISRs) manipulando eventos assncronos (foreground) Processo em lote Um processo que executa sem interao do usurio. Processo interativo Um processo que requer interao do usurio enquanto executa

RTOS O que isto?


RTOS: Real-Time Operating System ou Sistema Operacional de Tempo Real um sistema operacional especfico para a construo de aplicaes de sistemas de tempo real (STR), sendo uma aplicao que fornece um nvel de servio necessrio em um tempo de resposta limitado e determinstico, alm de recursos que otimiza a utilizao da CPU atravs de vrios algortimos operacionais

Kernel: O cara
Kernel: elemento principal e para um RTOS deve proporcionar no mnimo: task scheduling, dispatching, process manager, memory manager, intertask communication e intertask synchronization

Tipos: Nanokernel (picokernel): o dispatcher Microkernel: um nanokernel com task scheduling Kernel: um microkernel com intertask synchronization Executivo: um kernel que inclue blocos de memria privado, I/O de servios e outros recursos. A maioria dos RTOS comerciais se encaixam nesta categoria Operating System: um executivo que proporciona UI genrica, HAL (Hardware Abstraction Layer), segurana, sistema de gerenciamento de arquivos, etc

OS: GPOS x RTOS


GPOS: General Purpose Operating Systems So orientados a transao O tempo de execuo das transaes importante RTOS: Real-Time Operating System So orientados ao tempo de execuo das transaes O tempo de execuo das transaes determinante Principal diferena entre eles: tempo

RTOS - Elementar
Tempo: determina que o sistema depende: No apenas de resultados lgicos Mas tambm um limite de produo dos resultados Real: Reao aos eventos externos deve ocorrer dentro da janela de tempo determinada Tempo referencial (interno) deve ser medido com a mesma escala de tempo do ambiente controlado (externo)

RTOS - Elementar
Multi-threading e preemptibilidade (ii) Prioridade de segmentos de programa (threads) (iii) Mecanismos de sincronizao de thread (iv) Herana de prioridade (v) Latncia predefinida
Task switching latency (Latncia de Comutao de Tarefa): tempo de salvamento do contexto de uma tarefa em execuo para alternar para outra tarefa Interrupt latency (Latncia de Interrupo): tempo decorrido entre a execuo da ltima instruo da tarefa interrompida. Primeira instruo no manipulador de interrupo Interrupt dispatch latency(Latncia de Execuo de Interrupo): Este o momento para ir da ltima instruo no manipulador de interrupo para a prxima tarefa programada a ser executada.

RTOS - Elementar
Priority Inversion (Inverso de Prioridade) Ocorre quando uma tarefa de maior prioridade deve aguardar uma tarefa de menor prioridade liberar um recurso Priority Ceiling (Prioridade Teto) Cada recurso tem uma prioridade atribuda A prioridade do segmento a maior de todas as prioridades dos recursos que ele est conservando Priority Inheritance (Herana de Prioridade) A thread (segmento de programa) de explorao de um recurso herda a prioridade da thread bloqueada

RTOS - Elementar
Preemptive scheduling (Escalonamento Preemptivo) Em um kernel preemptivo, quando um evento torna uma tarefa de maior prioridade apta para ser executada, a tarefa atual imediatamente suspensa a tarefa de maior prioridade a controle da CPU. Reentrancy (Reentrncia) Funo reentrante: pode ser usado por mais de uma tarefa sem corromper dados, podendo ser interrompida a qualquer momento para ser retomada posteriormente sem perda de dados, usando variveis locais (registros ou variveis da pilha) ou proteger dados quando variveis globais so utilizadas Funo no reentrante: no podem ser compartilhadas por mais de uma tarefa, a menos que a excluso mtua para a funo seja assegurada pela utilizao de um semforo, desabilitando as interrupes durante as sees crticas de cdigo.

RTOS - Caractersticas
Tempo de resposta de tarefas definido: esttica ou dinmica Velocidade de resposta elevada ou no: dependendo da criticidade da aplicao Capacidade de escalonar tarefas oferecendo multi-tarefa Deve ser previsvel: independentemente de falhas, sobrecargas e variaes de hardware

RTOS Caractersticas Importantes


Deve prover mecanismos para escalonamento e comutao de usurios e kernel tasks Deve maximizar a utilizao da CPU Deve permitir gerenciamento de aplicaes simples, complexas e real-time

RTOS Caractersticas Desejveis


Kernel deve prover mecanismo para gerenciamento de tempo Gerenciador de tarefas deve ter restries de tempo explcitas e atmicas
Deve ser determinstico

Deve ter design para carga de pico Fundamental que seja previsvel Tenha tolerncia a falha Deve ser capaz de tratar adequadamente a inverso de prioridade

RTOS - Categorias
Hard Real Time System:
Falhas por limitao de tempo pode gerar falhas no sistema

Firm Real Time System:


Baixa ocorrncia de perda de deadline podem ser toleradas

Soft Real Time System:


Desempenho degradada por folhas de restrio de tempo Um RTOS difere de um OS comum (GPOS), na medida que ele tem acesso direto ao microcontrolador e os perifricos

Arquiteturas de RTOS
Baseado em evento escalonamento prioritrio: alterna as tarefas somente, quando uma tarefa de maior prioridade necessita de ser executada preemptivo Baseado em partilha de tempo: alterna as tarefas segundo os ciclos do relgio do processador

Arquiteturas de RTOS
A arquitetura baseada em partilha de tempo - comuta entre tarefas mais frequentemente do que realmente necessrio, dando a estas a iluso de terem o monoplio do processador. Processadores mais antigos, necessitavam de muitos ciclos de relgio para alternarem entre tarefas. RTOS dessa poca tentavam minimizar o desperdcio de tempo do processador atravs da diminuio de alternncia entre tarefas. Os processadores mais recentes demoram menos tempo para mudarem de uma tarefa para outra. Quase todos os RTOS de hoje em dia implementam uma juno destes dois tipos de desenhos.

Alocao de Memria
malloc() and free() so pouco adequadas para sistemas embarcados de tempo real A fragmentao de memria pode representar um problema O tempo de execuo de malloc() and free() no so determinsticos So utilizados algoritmos para buscar espaos contnuos de memria Tempo de desfragmentao Blocos de memria com tamanho fixo obtidos a partir de uma rea contnua de memria Todos os blocos de memria tm tamanhos iguais e a rea de memria contem um nmero inteiro de blocos A alocao e liberao destes blocos de memria demora um intervalo de tempo constante e determinstica

Alocao de Memria Dinmica


RTOS empregam abstraes de tipos de dados como registros, listas ligadas e queues Estes tipos de dados normalmente utilizam tcnicas de alocao dinmica de memria RAM Estruturas de Dados so criadas(alocada) on-the-fly durante tempo de execuao e destrudas quando no mais necessrio: requerem boa memria HEAP a parte da memria para alocao dinmica Deve alocar espao na RAM para a HEAP e para o Stack RTOS requer mltplos acessos a stack para cada tarefas.

Gerenciamento de Memria Heap


Heap Clssica
A memria coletada em uma pilha gigante e dividida de acordo com a demanda de tarefas. Existem vrios ajustes" dos algoritmos de alocao de memria, por exemplo, de melhor ajuste, o ajuste de primeira, que tambm tenta minimizar a fragmentao da memria. Tem uma grande sobrecarga de gerenciamento, portanto, no usado em sistemas de tempo real Parties da memria ao longo dos limites de prioridade, por exemplo, uma alta e uma baixa prioridade parties so criadas Parties de memria em vrios grupos de tamanhos de bloco fixo, e a pedido, atribui um nico bloco de memria a partir de um pool com tamanho igual ou maior do que o montante solicitado

Heap Prioritrio

Heap de Bloxo Fixo

Gerenciamento de Pilha (Stack)


Quando as tarefas mltiplas compartilham um nico processador Seus contextos (Informaes volteis, como os contedos dos
registradores de hardware, registradores de gerenciamento de memria, e o contador de programa) precisam ser salvos e restaurados, de modo a mud-los. Isso pode ser feito: usando controle de tarefas-modelo de bloco ou de uma ou mais pilhas de tempo de execuo

Run-time stack Usado para manter o contexto

Pode usar apenas uma pilha de tempo de execuo para todas as tarefas ou uma pilha de tempo de execuo em conjunto com pilhas de aplicativos diversos (pilhas ou privados), um para cada tarefa na memria Vrios casos de pilha permite que as tarefas interrompam-se, O tamanho da pilha deve ser conhecida a priori. O sistema operacional gerencia a pilhas

Tarefas e TCB (Task Control Blocks)


Em RTOS, os programas so (ou devem ser) fracionados em tarefas independente, assncronas ou interativas Que devem ter capacidade para armazenar o contexto das tarefas O contexto mantido no bloco de controle de tarefas. Tendo em vrias tarefas atravs de blocos de controle mltiplos, que so mantidos em uma lista RTOS atualizam o TCB (Task Control Blocks) quando a tarefa comutada para todas as funcionalidade do sistema Device Control Block (DCB) Rastreia o status do sistema de dispositivos associados

Prioridades
Prioridade
Um nmero ordinal que representa a importncia relativa de uma tarefa

Prioridade esttica
Uma prioridade que no ajustada automaticamente pelo sistema Prioridade esttica pode normalmente ser alterada pelo usurio

Prioridade dinmica
Uma prioridade que ajustada automaticamente pelo sistema de acordo com o comportamento de tarefa e de carga do sistema Prioridade dinmica impe uma sobrecarga no sistema Prioridade dinmica pode melhorar os tempos de resposta e eliminar a postergao por tempo indeterminado

Escalonamento de Tarefas
Como os demais sistemas operacionais, os RTOS tm uma fila onde se inserem todas as tarefas que esto prontas para serem executadas. Os algortmos de escalonamento desses sistemas visam, principalmente, satisfazer os requisitos temporais das tarefas. Estes podem ser classificados como estticos e dinmicos. Esttico mais popular: RTS (rate monotonic scheduling) ou monotmico - aumenta a prioridade dependendo do nmero de vezes que eles sero executados Dinmicos oferecem decises de escalonamento em tempo de execuo e as prioridades dos processos podem mudar. Mais popular o EDF (Earliest Deadline First ) prazo mais curto primeiro

Escalonamento de Tarefas EDF: prazo mais curto primeiro


O algoritmo de escalonamento dinmico EDF escolhe na fila de processos aquele que tenha o prazo de vencimento menor. Se chegar na fila um processo que tenha um prazo menor ainda, ocorrer preempo. Ao contrrio do RMS, o EDF no necessita que os processos sejam peridicos.

O EDF tem a grande vantagem de ser capaz de manter a CPU todo o tempo ocupada; porm o algoritmo extremamente complexo. complexo.

Relao Monotmica
Inverso de prioridades ocorre em um sistema, onde, a fim de aplicar a taxa monotonicidade, uma tarefa no-crtica quando uma alta freqncia de execuo atribuda uma prioridade maior do que uma tarefa crtica com menor freqncia de execuo Um protocolo de teto de prioridade (PCP - Priority Ceiling Protocol ) pode ser usado para combater a inverso de prioridade, em que uma tarefa de bloquear uma tarefa de maior prioridade herda a prioridade mais alta para a durao da tarefa bloqueada. O PCP usado para programar um conjunto de tarefas peridicas dependentes que compartilham recursos protegidos por semforos

Comunicao entre Tarefas, sincronizao e partilha de recursos


A partilha de recursos delicada de se usar num ambiente multitarefa, um cuidado acrescido deve ter-se em considerao Quando uma tarefa utiliza um dado recurso, a ler, ou a escrever, convm bloquear as outras tarefas de utilizarem esse mesmo recurso; se tal no for feito os resultados podem ser imprevisveis Os mtodos utilizados para uma eficiente partilha de recursos incluem: Mascaramento temporrio / Desabilitar interrupes Controle de Sincronia: semforos e/ou flags Interface de Troca de Mensagens (IPC) Proteo de Recursos (Mutex)

Linguagens de Programao sobre RTOS


C a linguagem de programao mais suportada na programaod de RTOS C++ a segunda linguagem mais suporta e Ada a terceira linguagem, porm estando caindo em desuso principalmente devido a poltica de COTS Assembly utilizado, como na programao de firmware, para aumentar a eficincia e tambm para o reuso de cdigo legado QT tem crescido consideravelmente como um framework para GUI entre outros recursos sendo suportado por alguns RTOS lderes de mercado

Porque usar um RTOS?


Algumas razes para considerar utilizar um RTOS:
Atender normas ou padres de indstria RFP para algumas aplicaes como por exemplo: IEC 61508 (Functional safety of electrical/electronic/programmable electronic safety-related systems) OSEK (Open Systems and their Interfaces for the Electronics in Motor Vehicles) , AUTOSAR (AUTomotive Open System ARchitecture) ARINC 653 (Avionics Application Standard Software Interface) , DO-178B (Software Considerations in Airborne Systems and Equipment Certification) IEC 60601-1-4 (Medical System Safety) ISO 14971 (Risk Management for Medical Devices) entre outros

Porque usar um RTOS?


Algumas razes para considerar utilizar um RTOS:
Produtividade: pode se concentrar apenas no que especfico da aplicao e deixar recursos operacionais para o RTOS
Reduo de complexidade do cdigo em alguns aspectos operacionais Aumento da qualidade da aplicao final Pode tornar mais fcil a implementao e a manuteno de cdigo Latncia de tempo garantida Garantia de maior confiabilidade ao sistema Otimizao dos recursos de CPU

Desvantagens de um RTOS

Custo extra no kernel do software Custo de licena pode ser agravante para equipamentos muito low profile de baixo custo Sair da zona de conforto de domnio total do cdigo Maior consumo de memrias pela aplicao Necessita maior preciso quanto a tempo no design da aplicao

Referncias
An Embedded Software Primer , David E. Simon Simple Real-time Operating System: A Kernel Inside View for a Beginner , Chowdary Venkateswara Penumuchu Embedded Systems Building Blocks, Second Edition: Complete and Ready-to-Use Modules in C , Jean J. Labrosse

uC/OS, The Real-Time Kernel , Jean J Labrosse

Fim

Obrigado!!!!

Você também pode gostar