Você está na página 1de 8

Linguagens de programao para sistemas de tempo real

Diego Mrcio Alberto

UFOP Universidade Federal De Ouro Preto


Ouro Preto, Minas Gerais, Brasil

dmalberto@outlook.com

12 de maro de 2017

Resumo: Os sistemas de tempo real, alm de necessitar cumprir os requisitos das aplicaes funcionais,
tambm precisam cumprir os requisitos no funcionais, como, principalmente, restries temporais e de
memria. Para o desenvolvimento de aplicaes para estes sistemas, pode-se utilizar das cinco principais
linguagens de programao de tempo real: Assembly, C, C++, Ada e Java. A utilizao de cada uma delas varia
na busca em equilibrar a portabilidade, flexibilidade, abstrao, manipulao de recursos e previsibilidade de
acordo com cada projeto. Quando se quer um programa em mais baixo nvel, utiliza-se o Assembly. Com esta
linguagem possvel ter controle de vrios recursos e grande previsibilidade. A linguagem C fornece um bom
nvel de abstrao, tambm permitindo acesso aos detalhes do hardware. Devido aos inmeros compiladores
existentes para esta linguagem, podemos dizer que uma linguagem de grande portabilidade. A linguagem C++
fornece uma abordagem mais amigvel no desenvolvimento das aplicaes, por ser orientada a objetos. Esta
linguagem gera um maior grau de abstrao e facilita aspectos de modelagem do projeto, melhorando assim a
flexibilidade. A linguagem C++ possui desvantagem na portabilidade, pois seus compiladores no so to
abundantes como na linguagem C. A linguagem Ada considerada a linguagem mais equilibrada. Sua
portabilidade razovel, porm apresenta tima flexibilidade, abstrao, manipulao de recursos e
previsibilidade. Entretanto, sua alta complexidade acaba a afastando de pequenas aplicaes. A linguagem Java
RT possui excelente portabilidade, flexibilidade e abstrao, porm, a manipulao de recursos e a
previsibilidade so desvantagem em relao s as outras linguagens.

Palavras Chave: sistemas em tempo real, linguagens de programao, sistemas operacionais de tempo real,
Ada, Assembly, C, C++, Java

1 Introduo ocorra um estado inconsistente ou invlido.

Nos ltimos anos, com a evoluo das Sistema de tempo real definido como um
aplicaes computacionais, ocorreu tambm o gerenciador de recursos de um sistema computacional
aumento da utilizao dos sistemas embarcados. atravs de um sistema operacional de tempo real,
Diretamente proporcional a este aumento, elevou-se a onde, alm de necessitar cumprir os requisitos das
complexidade dos projetos, e para atender a esta aplicaes funcionais, deve garantir que todos os
demanda de projetos, foram necessrias melhorias eventos sejam atendidos dentro de suas restries de
nos sistemas operacionais que executam as tempo, sendo gerenciados de forma eficiente.
aplicaes embarcadas.
O desenvolvimento das aplicaes que
Neste contexto, houve necessidade de operam nos sistemas de tempo real, tornou necessrio
desenvolvimento de um grupo de sistemas para o uso de linguagens programao especficas que
gerenciamento de restries de tempo. Estes sistemas atendessem cada requisito. Estas linguagens tambm
so chamados de sistemas de tempo real. Alm de deveriam atender a portabilidade, flexibilidade,
executarem as tarefas de processamento e controle abstrao, manipulao de recursos e previsibilidade
de informaes, estes sistemas possuem respostas ao de tempo de acordo com cada projeto. Linguagens
ambiente dadas em um tempo hbil, evitando que que atendem esses requisitos so chamadas de
linguagem de programao para sistemas de tempo responsvel pela organizao de todo o trabalho do
real. processador.

As linguagens de programao de tempo real Portanto, a execuo e acesso aos recursos


podem serem utilizadas de modo que as necessrios aos processos concorrentes so
particularidades da linguagem atendam s controlados pelo sistema operacional. Geralmente no
particularidades de diversas aplicaes que trabalho concorrente, comum haver uma quantidade
necessitam de gerenciamento de restries. razovel de tarefas executando concorrentemente,
algumas sendo suspensas pela chegada de uma
Neste artigo, apresentam-se as principais entrada que deve ser atendida imediatamente, outras
linguagens de programao utilizadas em sistemas de sendo ativadas porque receberam os dados que
tempo real: Assembly, C, C++, Ada e Java. Estas necessitavam para sua ativao [SCHMIDT 2001].
linguagens tero relatadas suas caractersticas, bem
como suas melhores aplicaes de acordo com as Um sistema operacional de tempo real
restries. (RTOS), um sistema operacional destinado
execuo de mltiplas tarefas, onde o tempo de
2 Sistema de tempo real resposta a um evento (externo ou interno)
pr-definido. So sistemas computacionais nos quais
Sistemas de tempo real so sistemas que podem garantir que todas as funes programadas
possuem restrio de tempo. Suas tarefas precisam sero executadas em um intervalo mximo de tempo
ser cumpridas dentro de um tempo crtico, limitado definido para cada funo em toda e qualquer
pelo deadline. O deadline varia de tarefa para tarefa momento [Wolf 2002]. O elemento chave que
de acordo com a aplicao, devendo ser cumprido diferencia um RTOS de um sistema operacional
independente da carga do sistema. Num sistema de convencional o escalonador.
tempo real, o tempo de execuo das tarefas crtico,
no apenas um fator de performance. A execuo O escalonador visa, principalmente,
correta de programa de tempo real no baseada satisfazer os requisitos temporais das tarefas a fim de
apenas na lgica de sua execuo, mas no seu tempo cumprir o deadline. Como cada sistema implementa,
de execuo [LAP 97]. na maioria das vezes, algoritmos de escalonamento
diferentes, alguns so aptos para determinadas
Conforme Selic [SEL 94], as aplicaes de tarefas enquanto outros so melhores para outras
tempo real podem ser classificadas de duas formas: aplicaes.
soft real-time ou hard real-time. Em soft real-time, o
tempo de execuo crtico, mas possveis atrasos Um sistema operacional de tempo real deve
apenas degradam a qualidade da resposta do sistema. atuar basicamente em sistemas de controle,
O sistema costuma garantir um tempo de execuo responsveis por responder aos estmulos do
apenas probabilstico, sendo que a maioria das tarefas ambiente em tempo hbil. Tambm utilizado em
executada no prazo. So exemplos: Transmisso de interfaces de entrada e sada, portas de comunicao
udio/vdeo real-time, sistemas de bancos de dados entre o sistema de controle e o sistema controlado.
integrados (bancos, supermercados, etc.) e sistemas Duas importantes caractersticas deste sistema a
de medio (satlites, microscpios, etc.). J nos hard previsibilidade e a confiabilidade [Baker 1990].
real-time, o tempo de execuo absolutamente
crtico e no tolera atrasos. Uma operao que no A previsibilidade uma importante
cumpra o deadline considerada intil. O sistema propriedade de um sistema em tempo real, ditando
deve garantir um tempo de execuo determinstico, seu comportamento funcional e temporal que deve ser
todas as tarefas so garantidas de executar no prazo. to determinstico quanto impe as especificaes do
Por exemplo: Equipamentos mdicos, freios sistema. A confiabilidade est relacionada exatido
automotivos e sistemas de navegao. no funcionamento do sistema, ou seja, a falha do
sistema que pode gerar uma resposta fora do tempo
3 Sistemas operacionais de tempo real esperado.

O sistema operacional o programa mestre. 4 Linguagens de Programao de tempo real


Ele decide qual tarefa executar no processador e
realiza as trocas de contexto requeridas. Uma linguagem de programao um
mtodo utilizado para fazer uma comunicao de interrupes. O Assembly usado em aplicaes de
instrues padronizadas para um computador. Cada tempo real que exigem um alto grau de previsibilidade
linguagem possui sua prpria semntica e sintaxe que e so especializadas em um tipo particular de
devem ser seguidas pelo programador. arquitetura de hardware. Devido ao alto grau de
especializao, a baixa portabilidade e a vida curta, o
O conjunto de instrues, tambm chamado Assembly torna-se inacessvel para a maioria das
de algoritmo, permite que o computador execute aplicaes, sendo utilizado apenas em aplicaes
exatamente as tarefas definidas pelo programador no militares e espaciais ou em projetos com
cdigo escrito. microcontroladores com baixssima quantidade de
memria, aonde apenas se realiza um nmero restrito
Existem vrios tipos de linguagens, cada uma de operaes.
com sua propriedade e especificao. Para sistemas
de tempo real, as mais comuns so: Assembly, Ada, Os primeiros programas foram escritos na
C, C++ e Java. dcada de 1940 para prever as trajetrias balsticas
durante a Segunda Guerra Mundial, usando a bem
conhecida frmula fsica que caracteriza corpos em
4.1 Assembly movimento. Esses programas foram escritos primeiro
em linguagem de mquina e assembly, por
Conhecida como uma linguagem de matemticos especialmente treinados. A grande
programao primitiva, o Assembly uma linguagem vantagem que no h dificuldades para a
de baixo nvel e amplamente utilizada em sistemas compilao de cdigos, o que representa problemas e
embarcados. Esta linguagem base para a criao de inviabiliza outras linguagens. Todo compilador de uma
linguagens de alto nvel, como C e B. A maioria (das linguagem de alto nvel gera como sada o respectivo
linguagens) teve tempo de vida e utilidade limitados, cdigo em Assembly para verificao.
enquanto algumas tiveram amplo sucesso em um ou
mais domnios de aplicaes. Muitas desempenharam 4.2 Linguagem C
um papel importante na inuncia sobre o projeto de
futuras linguagens. (Allen B. Tucker, Linguagens de A linguagem C foi criada em 1973 por Dennis
Programao Princpios e Paradigmas) Ritchie a partir da linguagem B e BCPL, tendo como
objetivo no ser necessria a reescrita do sistema
Devido ao fato de ser uma linguagem de operacional UNIX em Assembly para cada novo
baixo nvel, o Assembly proporciona total controle ao hardware (ISO/IEC 9899:1999 - Programming
programador sobre a plataforma. Aplicaes que so languages - C, 1999). Isto significa que a linguagem j
desenvolvidas nessa linguagem possuem o controle nasceu destinada a possuir boa portabilidade.
total sobre o hardware devido ao acesso direto,
caracterstica necessria para uma maior manipulao uma linguagem orientada a funo,
de recursos. Sua previsibilidade, item de grande permitindo a construo de bibliotecas que possam
importncia para sistemas de tempo real, a sua ser utilizadas de modo a implementar diferentes
particularidade que a destaca sobre todas as outras funes, como soma de produtos, manipulao de
linguagens de programao para estes sistemas. portas de I/O, temporizao, entre outras. Muitas
Entretanto, o gerenciamento de memria, a alocao destas bibliotecas esto disponveis gratuitamente e
de recursos e a sincronizao tornam os trabalhos podem ser facilmente adaptadas aos requisitos
pesados nesta linguagem, resultando em estruturas de especficos necessitados, o que proporciona uma
cdigos complexas. Sua pouca portabilidade pode menor especializao do desenvolvedor.
produzir erros graves, exigindo uma especializao do
programador na plataforma de hardware, o que A linguagem oferece uma simples interface
dificulta na contratao de profissionais, alm de de I/O, facilitada pela implementao de funes que
encarecer a mo de obra e custo final da aplicao. podem ser includas pelas bibliotecas de I/O. Nesta
linguagem, o uso de ponteiros pode facilitar a
Dado as vantagens de se utilizar a linguagem manipulao de recursos, pois quaisquer posies de
Assembly, o uso em aplicaes para sistemas de memria podem ser manipuladas facilmente,
tempo real permite o menor nvel possvel de acesso entretanto, o mau uso dessa ferramenta pode
arquitetura do microprocessador, registradores, ocasionar problemas, como a corrupo de dados.
memria interna, portas de I/O e manuseamento de Outro detalhe que chama ateno para o uso da
linguagem em sistemas de tempo real o versatilidade para implementar estruturas complexas
gerenciamento da memria, que feito atravs da de dados e programao, e, quando bem escrito, um
alocao dinmica, permitindo que o espao para cdigo em C++ oferece grande estabilidade ao
estruturas de dados de um programa possa ser sistema e permite alto nvel de complexidade,
alocado durante a execuo do mesmo. conceitos estes, essenciais para Sistemas em Tempo
Real.
Esta linguagem largamente utilizada em
sistemas de soft real-time, como sistemas de banco de Os ponteiros so estendidos e podem ser
dados e em sistemas de medies de temperatura. usados para enderear classes e funes que
Normalmente a maioria de desenvolvedores de aumentam os elementos endereveis em
sistemas embarcados a utilizam, devido sua comparao linguagem C. Porm, estas
facilidade de aprendizagem. Alm disso, a possibilidades requerem um maior grau de
possibilidade de escrever um cdigo em C e especializao para o programador em relao
compil-lo para quase todas as plataformas de linguagem C, devido alta possibilidade de introduzir
hardware, o uso de bibliotecas, o acesso direto e erros na aplicao.
manipulao de recursos de I/O e as funes de
gerenciamento de memria, so timos motivos para Algumas consideraes devem ser
escolher esta linguagem de programao ao observadas para a aplicao do C++ em sistemas de
desenvolver sistemas de tempo real. Tempo Real, como a seleo correta do
microcontrolador observando as possveis futuras
expanses do sistema; obteno de um compilador de
alto eficincia para o modelo de microcontrolador
escolhido; certificao de que a equipe de
desenvolvedores altamente qualificada a ponto de
dominar os variados e complexos conceitos da
linguagem C++; criar uma biblioteca prpria para a
linguagem com objetivo de permitir o reuso da mesma
em futuras aplicaes.
Figura 1: Rotina padronizada para perifricos,
codificada em C [Retirado de 1] Um dado publicado pela revista IEEE
Software de Maio de 1998, demonstra que um cdigo
4.3 Linguagem C++ escrito em C++, quando em comparao ao mesmo
cdigo escrito em C, apresenta um tempo de
A linguagem C++ foi criada por Bjarne manuteno muito maior. Uma comparao dessa
Stroustrup em 1983. O objetivo da sua criao foi a situao chamada de Time to Fix, mostrou que o
evoluo da linguagem C, sendo possvel a incluso tempo mdio para conserto de 94 defeitos em um
da utilizao de classes. uma linguagem compatvel cdigo em C++ foi de 1341 horas, enquanto foram
com a linguagem C, oferecendo as mesmas gastas 375 horas para corrigir 74 defeitos em
vantagens de acesso hardware, flexibilidade e linguagem C. Isso devido ao nvel de complexidade
performance. Por serem compatveis, uma funo da linguagem C++ e bastante relativo para uma
desenvolvida em C pode ser compilada em C++ sem empresa que desenvolve Softwares para sistemas em
erros, facilitando caso seja necessria importao de Tempo Real, quando considerado o gasto com as
um software que deve ser atualizado para a nova horas trabalhadas dos profissionais.
linguagem. Possui programao compilada
multiparadigma, de uso geral, linguagem imperativa, Embora seja uma linguagem muito poderosa
orientada a objetos e genrica, combinando na administrao de hardware, gerenciamento de
caractersticas de linguagens de alto e baixo nveis. memria e modelagem, muito difcil dominar todos
os aspectos que ela inclui, por isso, muitos
Apresenta como particularidade conceitos de desenvolvedores de software preferem a linguagem C
orientao a objeto, programao genrica e e suas limitaes ao uso das melhorias
metaprogramao. Oferece tambm, encapsulamento proporcionadas pela linguagem C++.
e controle de acesso a dados privados de uma classe,
checagem forte de tipos e portabilidade. Por ser uma 4.4 Linguagem Ada
linguagem orientada a objetos, possui grande
A linguagem Ada foi desenvolvida
especificamente para aplicaes de sistemas de A linguagem Java foi desenvolvida em 1995.
tempo real, substituindo mais de 450 linguagens Seu objetivo era ser uma linguagem robusta, orientada
utilizadas na poca de sua criao. Seu nome uma a objetos, simples e que independente do hardware ou
homenagem Ada Lovelace (18151852), conhecida plataforma de software, fosse capaz de executar suas
como a primeira programadora de todos os tempos. aplicaes sem uma nova compilao do cdigo.
Baseada no Pascal, Cobol e outras linguagens, seu
desenvolvimento teve destinao a propsitos A proposta inicial da linguagem Java no
militares. Foi encomendada pelo Departamento de atendia os requisitos de uma linguagem de
Defesa dos Estados Unidos (DoD) ao time liderado por programao para sistemas de tempo real. A
Jean Ichbiah, do CII Honeywell Bull. linguagem apresentava problemas como a falta de um
recurso de prioridades para as threads. Os desafios
Como na linguagem C++, a linguagem Ada iniciais para a linguagem Java ser utilizadas em
suporta programao estruturada e orientada a sistemas de tempo real foram resposta de tempo real,
objetos, suportando tambm programao distribuda tolerncia a falhas, trabalhar com arquiteturas
e concorrente. Proporciona sincronizao nativa para distribudas e previsibilidade.
tarefas, sendo importante quando se trata de sistemas
de tempo real. As facilidades de programao e
aprendizado, e a popularizao da linguagem Java,
Normalmente, a linguagem utilizada em proporcionou, em 2003, um conjunto completo de
programas de grande escala. Plataformas que utilizam ferramentas para o desenvolvimento de aplicaes
desta linguagem para desenvolvimento geralmente para sistemas de tempo real, o Real Time
possuem processadores poderosos e grandes Specification for Java (RTSJ).
espaos de memria, oferecendo um ambiente de
programao muito seguro. No recomendado o uso Ao utilizar outras linguagens de programao
da linguagem Ada em pequenas aplicaes, com de tempo real, o programador necessita se preocupar
reduzidos espaos de memria e capacidade de com a construo de classes, modelos e estruturas e,
processamento. em seguida, implementar o aplicativo cuidando do
planejador, manipulao de tarefas espordicas e
Uma caracterstica que chama ateno no peridicas alm do mecanismo responsvel pela
momento da escolha de uma linguagem de sincronizao. A linguagem RTSJ consegue fornecer
programao para sistemas de tempo real que classes, modelos e estruturas nas quais permite ao
aplicaes desenvolvidas utilizando a Linguagem Ada desenvolvedor criar o aplicativo.
podem ser construdas em mdulos. O uso de
mdulos capaz de simplificar a criao de softwares A linguagem Java para tempo real utiliza uma
ao facilitar o desenvolvimento de grandes sistemas por mquina virtual Java (JVM). A especificao JVM
equipes e aumentar o controle sobre a visibilidade descreve uma mquina e pilha abstrata que executa
devido a separao sobre as interfaces da bytecodes, que o cdigo intermedirio entre a
implementao. linguagem de mquina e a de alto nvel. A mquina
virtual responsvel por criar os threads.
Esta linguagem possui excelente manuteno Eventualmente eles so agendados pelo planejador do
do cdigo ao longo do tempo de vida do software, sistema operacional sobre o qual a JVM executada.
caracterstica que amplia sua utilizao em aplicaes
aeroespaciais, de defesa, mdicas, ferrovirias e Sistemas monoprocessados utilizam
nucleares. Assim, Ada uma boa escolha para a principalmente especificaes de tempo real baseados
programao de sistemas embarcados com em Java, devido boa estrutura fornecida pela
aplicaes em tempo real ou de segurana crtica. A linguagem para este tipo de sistema. Embora seja
ttulo de exemplo de utilizao, o desenvolvimento do projetado para suportar uma variedade de
compilador NYU GNAT (Ada), agora parte do conjunto agendadores de tarefas, apenas o PriorityScheduler
de compiladores GNU, disponibilizou um compilador est definido atualmente e possui prioridade fixa
de alta qualidade para educadores e alunos, sem preferencial (FPP).
custo.
O RTSJ possui compatibilidade com
4.5 Linguagem Java RT aplicaes desenvolvidas com as verses em Java
tradicional. Assim possvel executar estes aplicativos
em conjunto com os de tempo real. Para a utilizao Em RTSJ, para se definir os parmetros
desta linguagem, necessrio que o RTOS utilizado temporais de uma tarefa necessrio utilizao das
seja capaz de manipular threads de tempo real. Este classes: PeriodicParameters, SporadicParameters e
RTOS deve tambm possuir timer de alta resoluo, AperiodicParameters. Alm das especificaes
interrupes programadas de baixo nvel e um temporais o programador deve especificar os
planejador robusto. este planejador deve ser capaz de parmetros de prioridade de execuo associada
resolver os problemas de inverso de prioridades e de tarefa, definida pela classe PriorityParameters.
compartilhamento de recursos. Suponha o trecho de um cdigo genrico mostrado
abaixo, no qual apresenta a definio de uma tarefa
A verso do Java para sistemas de tempo chamada vrf (objeto Tvrf):
real no utiliza um Garbage Collector (CG). Em sua
verso tradicional, a execuo do CG interfere na
execuo dos threads na Maquina Virtual do Java,
gerando uma imposio de tempo de bloqueio para os
threads ativos. Estes tempos no podem ser limitados
e determinados com antecedncia. Um novo modelo
de memria foi desenvolvido na linguagem RTSJ para
solucionar os problemas do Java tradicional. A classe
abstrata MemoryArea modela a memria dividindo-a
em trs regies. A regio HeapMemory utilizada
para threads que no so de tempo real,
ScopedMemory utilizada para threads de tempo real Figura 2: Especificao de uma tarefa em RTSJ
e a InmortalMemory de um tipo especial que pode [Retirado de 2]
alocar espao mesmo aps o trmino da execuo da
JVM. A tarefa Tvrf possui a maior prioridade de
execuo permitida, que definida pela constante
A mquina virtual do RTSJ, suporta filas MAX_PRIORITY. Os parmetros temporais,
ordenadas por prioridades. Ela executa por padro representados pelo objeto pp, definem a tarefa com
uma herana de prioridade bsica e uma mxima. um perodo de 150 milissegundos, tempo de execuo
Este padro no impede a ocorrncia de deadlocks. no pior caso de 40 milissegundos e deadline relativo
Para resolver isso, utiliza-se um protocolo de limite de de 120 milissegundos. A tarefa cria uma instncia de
prioridades, atribuindo uma prioridade mxima a uma um objeto da classe TPeriodica, que uma extenso
seo crtica que igual prioridade mais alta de da classe RealtimeThread. Alguns tratadores de
qualquer tarefa que possa bloque-la. exceo para eventos temporais podem ser
associados como por exemplo o overrunHandler
A linguagem RTSJ modela trs tipos de (estouro do tempo de execuo no pior caso) e o
parmetros temporais para as tarefas, que so: deadlineMissHandler (para o caso de uma violao de
peridica, espordica e aperidica. Uma tarefa dita um deadline).
peridica se ela apresenta vrias (iteraes) em um
perodo fixo entre liberaes consecutivas, com as A padronizao do Java para tempo real
requisies de processamento do mesmo tamanho. acabou com alguns dos problemas que esta
Um exemplo seria o de uma tarefa peridica linguagem trazia para as aplicaes de tempo real. O
processando sinais de radar a cada dois segundos. que a transformou em uma das principais linguagens
Uma tarefa espordica possui zero ou mais instncias, de programao para sistemas de tempo real.
apresentando um espao mnimo entre duas
liberaes consecutivas. Por exemplo,uma tarefa 5 Concluso
espordica pode executar uma manobra de
emergncia de uma aeronave quando o boto de Embora existam vrias linguagens, para
emergncia pressionado, com um tempo mnimo de vrios propsitos, as linguagens de programao de
20 segundos entre duas requisies de emergncia. tempo real so limitadas a principalmente a cinco: C,
J uma tarefa aperidica nada mais que uma tarefa C++, Ada, Java RT e Assembly. Porm, na prtica
espordica com uma frequncia de ocorrncia e esse nmero ainda menor, sendo que as aplicaes
durao indeterminadas. atuais so em maioria desenvolvidas apenas em C e
Java RT.
Kiyofumi Tanaka, 2012. Embedded Systems - Theory
De forma geral, a escolha da linguagem deve and Design Methodology
ser baseada de acordo com a portabilidade,
flexibilidade, abstrao, manipulao de recursos e [1] :Henrique Puhlmann. Sistemas Operacionais de
previsibilidade do projeto. Quando se busca um Tempo Real - Alguns Perifricos
programa em mais baixo nvel, utiliza-se o Assembly. <https://www.embarcados.com.br/sistemas-operaciona
Com esta linguagem possvel ter controle de vrios is-de-tempo-real-alguns-perifericos/> Acesso em
recursos e grande previsibilidade. J a linguagem C, 03/03/2017
fornece um bom nvel de abstrao, tambm
permitindo acesso aos detalhes do hardware. Devido [2]: Raimundo Macdo, George Lima, Luciano Barreto,
aos inmeros compiladores existentes para esta Aline Andrade, Alrio S, Frederico Barboza, Rodrigo
linguagem, podemos dizer que uma linguagem de Albuquerque, Sandro Andrade. Tratando a
grande portabilidade. A linguagem C++ fornece uma Previsibilidade em Sistemas de Tempo-Real
abordagem mais amigvel no desenvolvimento das Distribudos: Especificao, Linguagens, Middleware e
aplicaes, por ser orientada a objetos. Ela gera um Mecanismos Bsicos. Disponivel em:
maior grau de abstrao e facilita aspectos de <https://goo.gl/ijxO7M> Acesso em 03/03/2017
modelagem do projeto, melhorando assim a
flexibilidade. A linguagem C++ pode ser comparada Marcelo de Paiva Guimares - Sistemas de Tempo
com a linguagem C, porm possui desvantagem na Real. Disponvel em:
portabilidade, j que seus compiladores no so to <www.lsi.usp.br/~paiva/sd/sistemas%20de%20Tempo
abundantes como em C. A linguagem Ada %20Real.pdf> Acesso em 03/03/2017
considerada a linguagem mais equilibrada, tendo
portabilidade razovel, apresentando excelente UFPR - Alocao dinmica de memria. Disponvel
flexibilidade, excelente abstrao, excelente em:
manipulao de recursos e excelente previsibilidade. <http://www.inf.ufpr.br/cursos/ci067/Docs/NotasAula/n
Entretanto, sua alta complexidade acaba a afastando otas-32_Aloca_c_cao_dinamica_mem.html> Acesso
de pequenas aplicaes. A linguagem Java RT possui em 03/03/2017
excelente portabilidade, excelente flexibilidade e
excelente abstrao, porm, a manipulao de ESC 2017 - How to make System Real Time more
recursos e a previsibilidade so desvantagem em friendly. Disponvel em:
relao s as outras linguagens. <http://www.embedded.com/design/programming-lang
uages-and-tools/4429790/How-to-make-C--more-real-ti
Para a seleo de uma linguagem de me-friendly> Acesso em 02/03/2017
programao de sistemas de tempo real necessrio
avaliar o tipo de sistema embarcado que est sendo IBM Developer Words - Java em tempo real.
desenvolvido. O Desenvolvedor deve escolher de Disponvel em:
acordo com o que melhor atende s demandas da <https://www.ibm.com/developerworks/community/blog
aplicao, sendo necessrio que a linguagem s/ctaurion/entry/java_em_tempo_real?lang=en>
escolhida seja utilizada ao longo de todo o projeto. Acesso em 01/03/2017

6 Referncias Programao Concorrente - Java e sistemas de tempo


real. Disponvel em:
TUCKER, A.B.; NOONAN, R.E. Linguagens de <https://pc2008evermat.wordpress.com/2008/07/02/jav
Programao Princpios e Paradigmas. 2. ed. Porto a-e-sistemas-de-tempo-real-vale-a-pena-usar/>
Alegre: AMGH, 2010 Acesso em 01/03/2017

Baker, T. (1990). A stack-based resource allocation Sistemas de Tempo Real -uC/OS II. Disponvel em:
policy for realtime processes, Real-Time <https://sergioprado.org/sistemas-de-tempo-real-part-1
Systems Symposium, 1990. Proceedings., 11th pp. /> Acesso em 05/03/2017
191200.
Compilers Laboratory - Linguagens de Programao.
John Wiley & Sons ed. 2004. Concurrent and Disponvel em:
Real-Time Programming in Java <http://homepages.dcc.ufmg.br/~fernando/classes/dcc
024/ementa/readingMat/IntroLecture.pdf> Acesso em
10/03/2017

Introduo ao Sistemas de Tempo Real. Disponvel


em:
<http://home.ufam.edu.br/lucascordeiro/str/slides/01-in
troducao-sistemas-de-tempo-real.pdf> Acesso em
08/03/2017

CPP Preferences - C++ Library. Disponvel em:


<http://en.cppreference.com/w/cpp/io> Acesso em
07/03/2017