Os sistemas de tempo real, além de necessitar cumprir os requisitos das aplicações funcionais, também precisam cumprir o...
Ling Lingu uagen agens s de de pro progr gram amaç ação ão para para sist sistem emas as de tem tempo real real Diego Márcio Alberto UFOP – Universidade Federal De Ouro Preto Ouro Preto, Minas Gerais, Brasil
[email protected] 12 de março de 2017
Resumo: Os sistemas de tempo real, além de necessitar cumprir os requisito itos das aplicaçõ caçõe es funcionais,
também precisam cumprir os requisito itos não funcionais, como, principalmente, restriçõe ções temporais e de memória. Para ara o dese desenv nvol olvi vime ment nto o de aplic plicaç açõe õess para ara este estess sist sistem emas as,, pode pode-s -se e util utiliz izar ar das das cinc cinco o prin princi cip pais ais ling lingua uage gens ns de prog progra rama maçã ção o de temp tempo o real real:: Asse Assemb mbly ly,, C, C++, C++, Ada Ada e Java Java.. A util utiliz izaç ação ão de cada cada uma uma dela delass vari varia a na busc busca a em equi equililibr brar ar a port portab abililid idad ade, e, flex flexib ibililid idad ade, e, abst abstra raçã ção, o, mani manipu pula laçã ção o de recu recurs rsos os e prev previs isib ibililid idad ade e de acord cordo o com com cad cada proj projet eto. o. Quan Quando do se quer quer um pro program grama a em mais mais baix baixo o nível ível,, util utiliz izaa-se se o Assem ssembl bly. y. Com esta esta ling lingua uage gem m é possí ossíve vell ter ter cont contro role le de vár vários ios recu recurrsos sos e gran grande de prev previs isib ibililid idad ade. e. A ling lingua uage gem m C for fornece nece um bom bom níve nívell de abst abstra raçã ção, o, tamb também ém perm permit itin indo do aces acesso so aos aos deta detalh lhes es do hard hardwa ware re.. Devi Devido do aos aos inúm inúmer eros os comp compililad ador ores es exis existe tent ntes es para para esta esta lingu linguag agem em,, pode podemo moss dizer dizer que que é uma uma ling lingua uage gem m de gran grande de port portab abililid idad ade. e. A ling lingua uage gem m C++ C++ forn fornec ece e uma uma abor aborda dage gem m mais mais amig amigáv ável el no dese desenv nvol olvi vime ment nto o das das apli aplica caçõ ções es,, por por ser ser orie orient ntad ada a a obje objeto tos. s. Esta Esta ling lingua uage gem m gera gera um maio maiorr grau grau de abst abstra raçã ção o e faci facililita ta aspe aspect ctos os de mode modela lage gem m do proj projet eto, o, melh melhor oran ando do assi assim ma flex flexib ibililid idad ade. e. A ling lingu uagem agem C++ poss possui ui desv desva antag ntagem em na porta ortabi bililida dade de,, pois pois seus seus com compila pilad dores ores não não são são tão tão abundantes como na linguagem C. A linguagem Ada é considerada a linguagem mais equilibrada. Sua portabilidade é razoável, porém apresenta ótima flexibilidade, abstração, manipulação de recursos e prev previs isib ibili ilida dade de.. Entr Entret etan anto to,, sua sua alta alta comp comple lexi xida dade de acab acaba a a afas afasta tand ndo o de pequ pequen enas as aplic aplicaç açõe ões. s. A ling lingua uage gem m Java Java RT possui excelente portabilidade, flexibilidade e abstração, porém, a manipulação de recursos e a previsibilidade são desvantagem em relação às as outras linguagens. Palavr Palavras as Chave: Chave: sist sistem emas as em temp tempo o real real,, ling lingua uage gens ns de prog progra rama maçã ção, o, sist sistem emas as oper operac acio iona nais is de temp tempo o real real,,
Ada, Assembly, C, C++, Java
1 Introdução
ocorra um estado inconsistente ou inválido.
Nos últimos anos, com a evolução das aplicações computacionais, ocorreu também o aumento da utilização dos sistemas embarcados. Dire Direta tame ment nte e prop propor orcio ciona nall a este este aume aument nto, o, elev elevou ou-s -se ea complexidade dos projetos, e para atender a esta deman emanda da de proj proje etos, tos, for foram nece necess ssár ária iass melh melhor oria iass nos sistemas operacionais que executam as aplicações embarcadas.
Sistema de tempo real é definido como um gere gerenc ncia iado dorr de recu recurs rsos os de um sist sistem ema a comp comput utac acio iona nall através de um sistema operacional de tempo real, onde, além de necessita itar cumprir os requisitos das aplicações funcionais, deve garantir que todos os even evento toss seja sejam m aten atendi dido doss dent dentro ro de suas suas rest restri riçõ ções es de tempo, sendo gerenciados de forma eficiente.
Neste contexto, houve necessidade de desenvolvimento de um grupo de sistemas para gerenc gerenciam iament ento o de restri restriçõe çõess de tempo. tempo. Estes Estes sistem sistemas as são chamados de sistemas de tempo real. Além de execu xecuta tare rem m as tare tarefa fass de proc proces essa same ment nto o e cont contro role le de info inform rmaç açõe ões, s, este estess sist sistem emas as poss possue uem m resp respos osta tass ao ambiente dadas em um tempo hábil, evitando que
O desenvolvimento das aplicações que oper operam am nos nos sist sistem emas as de temp tempo o real real,, torn tornou ou nece necess ssár ário io o uso de ling inguagens programação específicas que aten atende dess ssem em cada cada requ requisi isito to.. Esta Estass lingu linguag agen enss tamb também ém deveriam atender a portabilidade, flexibilidade, abst abstra raçã ção, o, mani manipu pula laçã ção o de recu recurs rsos os e prev previs isib ibililid idad ade e de tempo de acordo com cada projeto. Linguagens que atendem esses requisitos são chamadas de
ling lingua uage gem m de prog progra rama maçã ção o para para sist sistem emas as de temp tempo o real.
respo espons nsáv ável el pela pela orga organi niza zaçã ção o de todo todo o trab trabal alho ho do processador.
As linguagens de programação de tempo real podem serem utilizadas de modo que as particularidades da linguagem atendam às particularidades de diversas aplicações que necessitam de gerenciamento de restrições.
Port Portan anto to,, a exec execuç ução ão e aces acesso so aos aos recu recurs rsos os necessários aos processos concorrentes são cont contro rola lado doss pelo pelo sist sistem ema a oper operac acio iona nal.l. Gera Geralm lmen ente te no trab trabal alho ho conc concor orre rent nte, e, é comu comum m have haverr uma uma quan quantitida dade de razoá azoáve vell de tare tarefa fass exec execut utan and do conc concor orre rent ntem emen ente te,, algumas sendo suspensas pela chegada de uma entr entrad ada a que que deve deve ser ser aten atendi dida da imed imedia iata tame ment nte, e, outr outras as sendo ativadas porque receberam os dados que necessitavam para sua ativação [SCHMIDT 2001].
Neste artigo, apresentam-se as principais ling lingua uage gens ns de prog progra rama maçã ção o utili utiliza zada dass em sist sistem emas as de tempo real: Assembly, C, C++, Ada e Java. Estas ling lingua uage gens ns terã terão o rela relata tada dass suas suas cara caract cter erís ístitica cas, s, bem bem como suas melhores aplicações de acordo com as restrições. 2 Sistema de tempo real
Sistemas de tempo real são sistemas que possu ossuem em rest restrrição ição de temp tempo. o. Suas uas tare tarefa fass prec precis isam am ser cumpridas dentro de um tempo crítico, limitado pelo deadline. O deadline vari varia a de tare tarefa fa para ara tare tarefa fa de acordo com a aplicação, devendo ser cumprido inde indepe pend nden ente te da car carga do sist sistem ema a. Num sist sistem ema a de temp tempo o real real,, o temp tempo o de exec execuç ução ão das das tare tarefa fass é crít crític ico, o, não apenas um fator de performance. A execução correta de programa de tempo real não é baseada apen apenas as na lógi lógica ca de sua sua exec execuç ução ão,, mas mas no seu seu temp tempo o de execução [LAP 97]. Conforme Selic [SEL 94], as aplicaçõ caçõe es de temp tempo o rea real pode podem m ser ser clas classi sifi fica cada dass de duas duas form formas as:: soft soft real real-t -tim ime e ou hard hard real-t real-time ime. Em soft real-time, o temp tempo o de exec execuç ução ão é crít crític ico, o, mas poss possív ívei eiss atra atraso soss apen apenas as degr degrad adam am a qual qualid idad ade e da resp respos osta ta do sist sistem ema. a. O sistema costuma garantir um tempo de execução apen apenas as prob probab abililís ístitico co,, send sendo o que que a maio maiori ria a das das tare tarefa fass é exec execut utad ada a no praz prazo. o. São São exem exempl plos os:: Tran Transm smis issã são o de áudio udio/v /víd ídeo eo rea real-ti l-time me,, sist sistem emas as de banc bancos os de dado dadoss inte integr grad ados os (ban (banco cos, s, supe superm rmer erca cado dos, s, etc. etc.)) e sist sistem emas as de medi mediçã ção o (sat (satél élitites es,, micr micros oscó cópi pios os,, etc. etc.). ). Já nos nos hard hard real-time, o tempo de execução é absolutamente crítico e não tolera atrasos. Uma operação que não cumpra o deadline é considerada inútil. O sistema deve deve gara garant ntir ir um temp tempo o de exec execuç ução ão dete determ rmin inís ísti tico co,, toda todass as tare tarefa fass são são gara garant ntid idas as de exec execut utar ar no praz prazo. o. Por exemplo: Equipamentos médicos, freios automotivos e sistemas de navegação. 3 Sistemas operacionais de tempo real
O sist sistem ema a oper operac acio iona nall é o prog progra rama ma mest mestre re.. Ele decide qual tarefa executar no processador e realiza as trocas de contexto requeridas. É
Um sistema operacional de tempo real (RTOS), é um sistema operacional destinado à execução de múltiplas tarefas, onde o tempo de resposta a um evento (externo ou interno) é prépré-de defifini nido do.. São São siste sistema mass comp comput utac acio iona nais is nos nos quai quaiss podem garantir que todas as funções programadas ser serão execu xecuta tada dass em um inte interrvalo valo máxi máximo mo de temp tempo o definido para cada função em toda e qualquer momento [Wolf 2002]. O elemento chave que diferencia um RTOS de um sistema operacional convencional é o escalonador. O escalonador visa, principalmente, sati satisf sfaz azer er os requ requis isit itos os temp tempor orai aiss das das tare tarefa fass a fim fim de cump cumpri rirr o deadline. Como Como cada cada sist sistem ema a imp impleme lement nta, a, na maior aioria ia das das veze vezes, s, algo algorritmo itmoss de esca escalo lon namen amento to diferentes, alguns são aptos para determinadas tarefas enquanto outros são melhores para outras aplicações. Um sist sistem ema a ope operaci racion onal al de tempo empo real eal deve deve atuar basicamente em sistemas de controle, responsáveis por responder aos estímulos do ambiente em tempo hábil. Também é utilizado em inte interf rfac aces es de entr entrad ada a e saíd saída, a, port portas as de comu comuni nica caçã ção o entre o sistema de con controle e o sistema controlado. Duas uas impo import rtan ante tess cara caract cter erís ísti tica cass deste este sist siste ema é a previsibilidade e a confiabilidade [Baker 1990]. A previsibilidade é uma importante propriedade de um sistema em tempo real, ditando seu seu comp compor orta tame ment nto o func funcio iona nall e temp tempor oral al que que deve deve ser ser tão tão dete determ rmin inís ístitico co quan quanto to impõ impõe e as espe especif cifica icaçõ ções es do sist sistem ema. a. A conf confia iabi bililida dade de está está rela relaci cion onad ada a à exat exatid idão ão no funcionamento do sistema, ou seja, a falha do sist sistem ema a é que que pode pode gera gerarr uma uma resp respos osta ta fora fora do temp tempo o esperado. 4 Linguagens de Programação de tempo real
Uma linguagem de programação é um
método utilizado para fazer uma comunicação de inst instru ruçõ ções es padr padron oniz izad adas as para para um comp comput utad ador or.. Cada Cada ling lingua uage gem m possu possuii sua sua próp própri ria a semâ semânt ntica ica e sint sintax axe e que que devem ser seguidas pelo programador. O conj conjun unto to de inst instru ruçõ ções es,, tamb também ém cham chamad ado o de algoritmo, permite que o computador execute exat exatam amen ente te as tare tarefa fass defi defini nida dass pelo pelo prog progra rama mado dorr no código escrito. Exis Existe tem m vári vários os tipo tiposs de ling lingua uage gens ns,, cada cada uma uma com com sua sua prop propri ried edad ade e e espe especi cifi fica caçã ção. o. Para Para sist sistem emas as de tempo real, as mais comuns são: Assembly, Ada, C, C++ e Java.
4.1 Assembly
Conhecida como uma linguagem de prog progra rama maçã ção o prim primit itiv iva, a, o Asse Assemb mbly ly é uma uma ling lingua uage gem m de baixo nível e amplamente utilizada em sistemas emba embarc rcad ados os.. Esta Esta ling lingua uage gem m é base base para para a cria criaçã ção o de linguagens de alto nível, como C e B. “A maioria (das ling lingua uage gens ns)) teve teve temp tempo o de vida vida e util utilid idad ade e limi limita tado dos, s, enqua nquant nto o algu alguma mass tive tivera ram m ampl amplo o suce sucess sso o em um ou mais mais domí domíni nios os de aplic aplicaç açõe ões. s. Muit Muitas as dese desemp mpen enha hara ram m um papel apel impo import rtan ante te na inu inuên ênci cia a sob sobre o proj projet eto o de futura futurass lingua linguagen gens.” s.” (Alle Allen n B. Tucke ucker, r, Ling Lingua uage gens ns de Programação Princípios e Paradigmas) Devido ao fato de ser uma linguagem de baix baixo o níve nível, l, o Asse Assemb mbly ly prop propor orci cion ona a tota totall cont contro role le ao prog progra rama mado dorr sobr sobre e a plat plataf afor orma ma.. Apli Aplica caçõ ções es que que são são dese desenv nvol olvi vida dass ness nessa a ling lingua uage gem m poss possue uem m o cont contro role le total sobre o hardware devido ao acesso direto, caract caracterí erísti stica ca necess necessári ária a para para uma maior maior manipu manipulaç lação ão de recursos. Sua previsibilidade, item de grande importância para sistemas de tempo real, é a sua parti articu cula lari rida dade de que que a dest destac aca a sobr sobre e toda todass as outr outras as linguagens de programação para estes sistemas. Entr Entret etan anto to,, o gere gerenc ncia iame ment nto o de memó memóri ria, a, a aloc alocaç ação ão de recursos e a sinc incronização tornam os trabalho lhos pesado pesadoss nesta nesta lingua linguagem gem,, result resultand ando o em estrut estrutura urass de código igos complex lexas. Sua pouca portabilidade pode prod produz uzir ir erro erross grav graves es,, exig exigin indo do uma uma espe especi cial aliz izaç ação ão do programador na plataforma de hardware, o que dificulta na contratação de profissionais, além de encarecer a mão de obra e custo final da aplicação. Dado Dado as vant vantag agen enss de se util utiliz izar ar a ling lingua uage gem m Assembly, o uso em aplicações para sistemas de temp tempo o real real perm permit ite e o meno menorr níve nívell poss possív ível el de aces acesso so à arquitetura do microprocessador, registradores, memória interna, portas de I/O e manuseamento de
inte interrrupç rupçõe ões. s. O Asse Assemb mbly ly é usad usado o em apli aplica caçõ çõe es de temp tempo o real real que que exig exigem em um alto alto grau grau de prev previs isib ibililid idad ade e e são especializadas em um tipo particular de arquitetura de hardware. Devido ao alto grau de espe especi cial aliz izaç ação ão,, a baix baixa a port portab abililid idad ade e e a vida vida curt curta, a, o Assembly torna-se inacessível para a maioria das aplicações, sendo utilizado apenas em aplicações militares e espaciais ou em projetos com micr microc ocon ontr trol olad ador ores es com com baix baixís íssi sima ma qua quantid ntidad ade e de memó memóri ria, a, aond aonde e apen apenas as se real realiz iza a um núme número ro rest restri rito to de operações. Os primeiros programas foram escritos na déca décad da de 1940 1940 par para prev prever er as traj trajet etór ória iass balí balíst stic icas as durante a Segunda Guerra Mundial, usando a bem conh conhe ecida cida fórm fórmul ula a físi física ca que que cara caract cter eriz iza a cor corpos pos em movim movimen ento to.. Esse Essess prog progra rama mass fora foram m escr escrititos os prim primei eiro ro em linguagem de máquina e assembly, por matemáticos especialmente treinados. A grande vantagem é que não há dificuldades para a comp compililaç ação ão de códi código gos, s, o que que repr repres esen enta ta prob proble lema mass e invi inviab abililiz iza a outr outras as ling lingua uage gens ns.. Todo Todo comp compililad ador or de uma uma ling lingua uage gem m de alto alto níve nívell gera gera como como saí saída o resp respec ecti tivo vo código em Assembly para verificação. 4.2 Linguagem C
A linguagem C foi criada em 1973 por Dennis Ritchie a partir da linguagem B e BCPL, tendo como objetivo não ser necessária a reescrita do sistema operacional UNIX em Assembly para cada novo hardware (ISO/IEC 9899:1999 - Programming lang langua uage gess - C, 1999 1999). ). Isto Isto sign signif ific ica a que que a ling lingua uage gem m já nasceu destinada a possuir boa portabilidade. É uma linguagem orientada a função, per permiti mitind ndo o a cons constr truç ução ão de bibl biblio iote teca cass que que poss possam am ser utilizadas de modo a implementar diferentes funções, como soma de produtos, manipulaç lação de portas de I/O, temporização, entre outras. Muitas dest destas as bibl biblio iote teca cass estã estão o disp dispon onív ívei eiss grat gratui uita tame ment nte ee podem ser facilmente adaptadas aos requisitos específicos necessitados, o que proporciona uma menor especialização do desenvolvedor. A linguagem oferece uma simples interface de I/O, I/O, faci facililita tada da pela pela impl implem emen enta taçã ção o de funç funçõe õess que que podem ser incluídas pelas bibliotecas de I/O. Nesta linguagem, o uso de ponteiros pode facilitar a mani manipu pula laçã ção o de recu recurs rsos os,, pois pois quai quaisq sque uerr posi posiçõ ções es de memória podem ser manipuladas facilmente, entretanto, o mau uso dessa ferramenta pode ocasionar problemas, como a corrupção de dados. Outro detalhe que chama atenção para o uso da
linguagem em sistemas de tempo real é o gerenciamento da memória, que é feito através da alocação dinâmica, permitindo que o espaço para estruturas de dados de um programa possa ser alocado durante a execução do mesmo. Esta linguagem é largamente utilizad zada em sistem sistemas as de soft soft real-t real-time ime, como como sist sistem emas as de banc banco o de dados e em sistemas de medições de temperatura. Normalmente a maioria de desenvolvedores de sistemas embarcados a utilizam, devido à sua facilidade de aprendizagem. Além disso, a possibilidade de escrever um código em C e compilá-lo para quase todas as plataformas de hardware, o uso de bibliotecas, o acesso direto e manipulação de recursos de I/O e as funções de gere gerenc ncia iame ment nto o de memó memóri ria, a, são são ótim ótimos os moti motivo voss para para escolher esta linguagem de programação ao desenvolver sistemas de tempo real.
Figura 1: Rotina padronizada para periféricos, codificada em C [Retirado de 1] 4.3 Linguagem C++
A linguagem C++ foi criada por Bjarne Stroustrup em 1983. O objetivo da sua criação foi a evolu voluçã ção o da ling lingua uage gem m C, send sendo o poss possív ível el a incl inclus usão ão da util utiliz izaç ação ão de clas classe ses. s. É uma uma ling lingua uage gem m comp compat atív ível el com a linguagem C, oferecendo as mesmas vantagens de acesso à hardware, flexibilidade e performance. Por serem compatíveis, uma função desen esenvo volv lvid ida a em C pode pode ser ser comp compililad ada a em C++ sem sem erro erros, s, faci facililita tand ndo o caso caso seja seja nece necess ssár ária ia impo import rtaç ação ão de um software que deve ser atualizado para a nova linguagem. Possui programação compilada mult multip ipar arad adig igma ma,, de uso uso gera geral, l, ling lingua uage gem m impe impera rati tiva va,, orientada a objetos e genérica, combinando características de linguagens de alto e baixo níveis. Apresenta como particularidade conceitos de orientação a objeto, programação genérica e metapr metaprogr ograma amação ção.. Oferec Oferece e também também,, encaps encapsula ulamen mento to e cont contro role le de aces acesso so a dado dadoss priv privad ados os de uma uma clas classe se,, che checage cagem m fort forte e de tipo tiposs e port portab abililid idad ade. e. Por Por ser ser uma uma linguagem orientada a objetos, possui grande
vers versat atili ilida dade de para para impl implem emen enta tarr estr estrut utur uras as comp comple lexa xass de dado dadoss e prog progrramaç amação ão,, e, quan quand do bem bem escr escrit ito, o, um código em C++ oferece grande estabilidade ao sistema e permite alto nível de complexidade, conc concei eito toss este estes, s, esse essenc ncia iais is para para Sist Sistem emas as em Temp Tempo o Real. Os ponteiros são estendidos e podem ser usados para endereçar classes e funções que aumentam os elementos endereçáveis em comparação à linguagem C. Porém, estas possibilidades requerem um maior grau de especialização para o programador em relação à ling lingua uage gem m C, devi devido do à alta alta poss possib ibililid idad ade e de intr introd oduz uzir ir erros na aplicação. Algumas considerações devem ser obse obserrvada vadass para para a apli aplica caçã ção o do C++ em sist sistem ema as de Tempo Real, como a seleção correta do micr microc ocon ontr trol olad ador or obse observ rvan ando do as possí ossíve veis is futu futura rass expa expans nsõe õess do siste sistema ma;; obte obtenç nção ão de um comp compila ilado dorr de alto eficiência para o modelo de microcontrolador escolhido; certificação de que a equipe de dese desen nvolv volved edo ores res é alta altame ment nte e qual qualif ific icad ada a a ponto onto de dominar os variados e complexos conceitos da linguagem C++; criar iar uma biblioteca própria para a ling lingua uage gem m com com obje objeti tivo vo de perm permit itir ir o reus reuso o da mesm mesma a em futuras aplicações. Um dado publicado pela revista IEEE Software de Maio Maio de 1998 1998,, demo demons nstr tra a que que um códi código go escrito em C++, quando em comparação ao mesmo código escrito em C, apresenta um tempo de manutenção muito maior. Uma comparação dessa situação chamada de “Time to Fix”, mostrou que o tempo médio para conserto de 94 defeitos em um código em C++ foi de 1341 horas, enquanto foram gastas 375 horas para corrigir 74 defeitos em ling lingua uage gem m C. Isso Isso é devi devido do ao nível ível de comp comple lexi xida dade de da linguagem C++ e é bastante relativo para uma empr empres esa a que que dese desenv nvol olve ve Soft Softwa ware ress para para sist sistem emas as em Tempo Real, quando considerado o gasto com as horas trabalhadas dos profissionais. Embo Embora ra seja seja uma uma ling lingua uage gem m muit muito o pode podero rosa sa na administração de hardware, gerenciam iamento de memó memóri ria a e mode modela lage gem m, é muit muito o difí difíci cill domi domina narr todo todoss os aspectos que ela inclui, por isso, muitos dese desenv nvol olve vedo dore ress de soft softwa ware re pref prefer erem em a lingu linguag agem em C e suas limitações ao uso das melhorias proporcionadas pela linguagem C++. 4.4 Linguagem Ada
A linguagem Ada foi desenvolvida especificamente para aplicações de sistemas de tempo real, substituindo mais de 450 linguagens utili ilizadas na época de sua criação. Seu nome é uma home homena nage gem m à Ada Ada Love Lovela lace ce (181 (1815– 5–18 1852 52), ), conh conhec ecid ida a com como a prim prime eira ira prog progra ram mador adora a de todo todoss os temp tempos os.. Basea aseada da no Pasc Pascal al,, Cobol obol e outr outras as ling lingua uage gens ns,, seu seu desenvolvimento teve destinação a propósitos milit ilitar ares es.. Foi encom ncomen enda dada da pelo pelo Dep Departa artame men nto de Defe Defesa sa dos dos Esta Estado doss Unid Unidos os (DoD (DoD)) ao time time lide lidera rado do por por Jean Ichbiah, do CII Honeywell Bull. Como na linguagem C++, a linguagem Ada suporta programação estruturada e orientada a obje objeto tos, s, supo suport rtan ando do tamb também ém prog progra rama maçã ção o dist distri ribu buíd ída a e conc concor orre rent nte. e. Prop Propor orcio ciona na sinc sincro roni niza zaçã ção o nati nativa va para para tare tarefa fas, s, send sendo o impo import rtan ante te quan quando do se trat trata a de sist sistem emas as de tempo real. Normalmente, a linguagem é utilizada em prog progra rama mass de gran grande de esca escala. la. Plat Plataf afor orma mass que que utili utiliza zam m dest desta a ling lingua uage gem m para para dese desenv nvol olvi vime ment nto o gera geralm lmen ente te possuem processadores poderosos e grandes espaços de memória, oferecendo um ambiente de prog progra rama maçã ção o muito muito segu seguro ro.. Não Não é reco recome mend ndad ado o o uso uso da linguagem Ada em pequenas aplicações, com reduzidos espaços de memória e capacidade de processamento. Uma característica que chama atenção no momento da escolha de uma linguagem de programação para sistemas de tempo real é que aplic aplicaç açõe õess dese desenv nvol olvi vida dass util utiliz izan ando do a Ling Lingua uage gem m Ada Ada podem ser construídas em módulos. O uso de módu módulo loss é capa capazz de simp simplilifi fica carr a cria criaçã ção o de soft softwa ware ress ao faci facilit litar ar o dese desenv nvol olvi vime ment nto o de gran grande dess siste sistema mass por por equipes e aumentar o controle sobre a visi isibilidade devido a separação sobre as interfaces da implementação. Esta Esta lingua linguagem gem possui possui excele excelente nte manute manutençã nção o do código ao longo do tempo de vida do software, cara caract cter erís ístitica ca que que ampli amplia a sua sua util utiliz izaç ação ão em aplic aplicaç açõe õess aeroespaciais, de defesa, médica icas, ferroviárias e nucleares. Assim, Ada é uma boa escolha para a programação de sistemas embarcados com aplic plicaç açõe õess em tem tempo real eal ou de segu segurrança ança crít crític ica. a. A títu título lo de exem exempl plo o de util utiliz izaç ação ão,, o dese desenv nvol olvi vime ment nto o do comp compila ilado dorr NYU NYU GN GNAT AT (Ada (Ada), ), agor agora a part parte e do conj conjun unto to de comp compililad ador ores es GN GNU, U, disp dispon onib ibililiz izou ou um comp compililad ador or de alta qualidade para educadores e alunos, sem custo. 4.5 Linguagem Java RT
A linguagem Java foi desenvolvida em 1995. Seu Seu obje objetitivo vo era era ser ser uma uma lingu linguag agem em robu robust sta, a, orie orient ntad ada a a obje objeto tos, s, simp simple less e que que inde indepe pend nden ente te do hard hardwa ware re ou plat plataf afor orma ma de soft softwa ware re,, foss fosse e capa capazz de exec execut utar ar suas suas aplicações sem uma nova compilação do código. A proposta inicial da linguagem Java não atendia os requisitos de uma linguagem de programação para sistemas de tempo real. A ling lingua uage gem m apre aprese sent ntav ava a prob proble lema mass como como a falt falta a de um recur ecurso so de prio priori rida dade dess para para as thre thread ads. s. Os desa desafi fios os iniciais para a linguagem Java ser utilizadas em sist sistem emas as de temp tempo o real real fora foram m resp respos osta ta de temp tempo o real real,, tolerância a falhas, trabalhar com arquiteturas distribuídas e previsibilidade. As facilidades de programação e apr aprendi endiza zado do,, e a popul opular ariz izaç ação ão da ling lingua uag gem Java Java,, proporcionou, em 2003, um conjunto completo de fer ferrame rament ntas as par para o dese desenv nvol olvi vime ment nto o de apli aplica caçõ ções es para sistemas de tempo real, o Real Time Specification for Java (RTSJ). Ao utilizar outras linguagens de programação de temp tempo o real real,, o prog progra rama mado dorr nece necess ssit ita a se preo preocu cupa par r com com a cons constr truç ução ão de clas classe ses, s, mode modelo loss e estr estrut utur uras as e, em seguida, implementar o aplicativo cuidando do planejador, manipulação de tarefas esporádicas e periódicas além do mecanismo responsável pela sinc sincro roni niza zaçã ção. o. A lingu linguag agem em RTSJ RTSJ cons conseg egue ue forn fornec ecer er classes, modelos los e estruturas nas quais permite ao desenvolvedor criar o aplicativo. A linguagem Java para tempo real utiliza uma máquina virtual Java (JVM). A especificação JVM desc descrreve eve uma uma máqu máquin ina a e pilh pilha a abst abstra rata ta que que exec execut uta a bytecodes, que é o código intermediário entre a linguagem de máquina e a de alto nível. A máquina virtual é responsável por criar os threads. Even Eventu tual alme ment nte e eles eles são são agen agenda dado doss pelo pelo plan planej ejad ador or do sistema operacional sobre o qual a JVM é executada. Sistemas monoprocessados utilizam princi principal palmen mente te especi especific ficaçõ ações es de tempo tempo real real basead baseados os em Java, devido à boa estrutura fornecida pela linguagem para este tipo de sistema. Embora seja projetado para suportar uma variedade de agen agenda dado dore ress de tare tarefa fas, s, apen apenas as o Prio Priori rity tySc Sche hedu dule ler r está definido atualmente e possui prioridade fixa preferencial (FPP). O RTSJ possui compatibilidade com aplicações desenvolvida idas com as versões em Java
tradic tradicion ional. al. Assim Assim é possív possível el execut executar ar estes estes aplicat aplicativos ivos em conjun junto com com os de tempo real. Para a utiliz lização desta esta ling lingua uage gem, m, é nece necess ssár ário io que que o RTOS TOS util utiliz izad ado o seja seja capa capazz de mani manipu pula larr thr threads eads de temp tempo o real real.. Este Este RTOS deve deve tamb também ém poss possui uirr time timerr de alta lta reso resolu luçã ção, o, interrupções programadas de baixo nível e um plan planej ejad ador or robu robust sto. o. este este plan planej ejad ador or deve deve ser ser capa capazz de reso resolv lver er os prob proble lema mass de inve invers rsão ão de prio priori rida dade dess e de compartilhamento de recursos. A versão do Java para sistemas de tempo real não utiliza um Garbage Collector (CG). Em sua versão tradicional, a execução do CG interfere na execução dos threads na Maquina Virtual do Java, gera gerand ndo o uma uma impo imposi siçã ção o de temp tempo o de bloq bloque ueio io para para os thre thread adss ativo ativos. s. Este Estess temp tempos os não não pode podem m ser ser limi limita tado doss e dete determ rmin inad ados os com com ante antece cedê dênc ncia ia.. Um novo novo mode modelo lo de memó memóri ria a foi foi dese desenv nvol olvi vido do na ling lingua uage gem m RTSJ RTSJ para para solu soluci cion onar ar os prob proble lema mass do Java Java trad tradic icio iona nal. l. A clas classe se abst abstra rata ta Memo Memory ryAr Area ea mode modela la a memó memóri ria a divi dividi dind ndoo-a a em três regiões. A região HeapMemory é utilizada para threads que não são de tempo real, Scop Scoped edMe Memo mory ry é util utiliz izad ada a para para thre thread adss de temp tempo o real real e a InmortalMemory é de um tipo especial que pode aloc alocar ar espa espaço ço mesm mesmo o após após o térm términ ino o da exec execuç ução ão da JVM. A máquina virtual do RTSJ, suporta filas ordenadas por prioridades. Ela executa por padrão uma herança de prioridade básica e uma máxima. Este ste padr padrão ão não não impe impede de a ocor ocorrê rên ncia cia de dead deadlo lock cks. s. Para Para reso resolv lver er isso isso,, util utiliz izaa-se se um prot protoc ocol olo o de limi limite te de prio priori rida dade des, s, atri atribu buin indo do uma uma prio priori rida dade de máxi máxima ma a uma uma seção crítica que é igual à prioridade mais alta de qualquer tarefa que possa bloqueá-la. A linguagem RTSJ modela três tipos de parâmetros temporais para as tarefas, que são: peri periód ódic ica, a, espo esporá rádi dica ca e aper aperió iódi dica ca.. Uma Uma tare tarefa fa é dita dita perió eriódi dica ca se ela ela apre aprese sent nta a vár várias ias (ite iteraçõ rações es)) em um período fixo entre liberações consecutivas, com as requi equisi siçõ ções es de proc proces essa same ment nto o do mesm mesmo o taman amanho ho.. Um exemplo seria o de uma tarefa periódica processando sinais de radar a cada dois segundos. Uma Uma tare tarefa fa espo esporá rádi dica ca possu possuii zero zero ou mais mais inst instân ância cias, s, apresentando um espaço mínimo entre duas liberações consecu secuttiva ivas. Por exemplo,uma tarefa esporádica pode executar uma manobra de emergência de uma aeronave quando o botão de emer emergê gênc ncia ia é pres pressi sion onad ado, o, com com um temp tempo o míni mínimo mo de 20 segu segund ndos os entr entre e duas uas requi equisi siçõ ções es de emer emergê gênc ncia ia.. Já uma uma tare tarefa fa aper aperió iódi dica ca nada nada mais ais é que uma uma tare tarefa fa esporádica com uma frequência de ocorrência e duração indeterminadas.
Em RTSJ, para se definir os parâmetros temp tempor orai aiss de uma uma tare tarefa fa é nece necess ssár ário io à util utiliz izaç ação ão das das classes: Period PeriodicPa icParam ramete eters, rs, Sporad SporadicPa icParam ramete eters rs e AperiodicParameters. Além das especificações temporais o programador deve especificar os par parâmet âmetro ross de prior riorid idad ade e de exec execuç ução ão asso associ ciad ada a à tarefa, definida pela classe PriorityParameters. Suponha o trecho de um código genérico ico mostr strado abaixo ixo, no qual apresen senta a definiç iniçã ão de uma tarefa chamada τvrf (objeto Tvrf):
Figura 2: Especificação de uma tarefa em RTSJ [Retirado de 2] A tarefa Tvrf possui a maior prioridade de execução permitida, que é definid inida a pela constante MAX_PRIORITY. Os parâmetros temporais, representados pelo objeto pp, define inem a tarefa com um perí períod odo o de 150 150 milis milisse segu gund ndos os,, temp tempo o de exec execuç ução ão no pior pior caso caso de 40 mili miliss sse egund gundos os e dead deadliline ne rela relati tivo vo de 120 120 mili miliss sseg egun undo dos. s. A tare tarefa fa cria cria uma uma inst instâ ância ncia de um objeto da classe TPeriodica, que é uma extensão da classe RealtimeThread. Alguns tratadores de exceção para eventos temporais podem ser associados como por exemplo o overrunHandler (estouro do tempo de execução no pior caso) e o deadlineMissHandler (par (para a o caso caso de uma uma viol violaç ação ão de um deadline). A padronização do Java para tempo real acabou com alguns dos problemas que esta ling lingua uage gem m traz trazia ia para para as apli aplica caçõ ções es de tem tempo real. eal. O que que a tran transf sfor ormo mou u em uma uma das das prin princi cipa pais is ling lingua uage gens ns de programação para sistemas de tempo real. 5 Conclusão
Embora existam várias linguagens, para vári vários os prop propós ósit itos os,, as ling lingua uage gens ns de prog progra rama maçã ção o de tem tempo real real são são limi limita tada dass a princ rincip ipal alme ment nte e a cinc cinco: o: C, C++, Ada, Java RT e Assembly. Porém, na prática esse esse núme número ro é aind ainda a meno menor, r, send sendo o que que as apli aplica caçõ ções es atua atuais is são são em maio maiorria dese desenv nvol olvi vida dass apen apenas as em C e Java RT.
De form forma a gera geral, l, a esco escolh lha a da ling lingua uage gem m deve deve ser baseada de acordo com a portabilidade, flex flexib ibililid idad ade, e, abst abstra raçã ção, o, mani manipu pula laçã ção o de recur ecurso soss e previsibilidade do projeto. Quando se busca um prog progra rama ma em mais mais baix baixo o níve nível, l, util utiliz izaa-se se o Asse Assemb mbly ly.. Com esta esta ling lingua uage gem m é poss possív ível el ter ter cont contro role le de vár vários ios recur ecurso soss e gran grande de prev previs isib ibililid idad ade. e. Já a ling lingu uagem agem C, fornece um bom nível de abstração, também perm permit itin indo do aces acesso so aos aos deta detalh lhes es do hard hardwa ware re.. Devi Devido do aos inúmeros compiladores existentes para esta linguagem, podemos dizer que é uma ling inguagem de gran grande de port portab abililid idad ade. e. A ling lingua uage gem m C++ C++ forn fornec ece e uma uma abord bordag agem em mais mais amigá migáve vell no dese desenv nvol olvi vime ment nto o das das aplic plicaç açõe ões, s, por por ser ser orien rienta tada da a obje objeto tos. s. Ela Ela gera gera um maior grau de abstração e facilita aspectos de modelagem do projeto, melhorando assim a flex flexib ibililid idad ade. e. A ling lingua uage gem m C++ C++ pode pode ser ser comp compar arad ada a com a linguagem C, porém possui desvantagem na porta ortabi bililida dade de,, já que que seus seus comp compililad ador ores es não não são são tão tão abundantes como em C. A linguagem Ada é considerada a linguagem mais equilibrada, tendo portabilidade razoável, apresentando excelente flexibilidade, excelente abstração, excelente mani manipu pula laçã ção o de recu recurs rsos os e exce excele lent nte e prev previs isib ibililid idad ade. e. Entr Entret etan anto to,, sua sua alta alta comp comple lexi xida dade de acab acaba a a afas afasta tand ndo o de pequ pequen enas as apli aplica caçõ ções es.. A ling lingua uage gem m Java Java RT poss possui ui exce xcelente portabilidade, excelente flexi lexib bilidade e excelente abstração, porém, a manipulação de recursos e a previsibilidade são desvantagem em relação às as outras linguagens. Para a seleção de uma linguagem de prog progra rama maçã ção o de sist sistem emas as de temp tempo o real real é nece necess ssár ário io avali valia ar o tipo de sistema embarcado que está sendo desenvolvido ido. O Desenvolve lvedor deve escolher de acordo com o que melhor atende às demandas da aplicação, sendo necessário que a linguagem escolhida seja utilizada ao longo de todo o projeto. 6 Referências
TUCKER, A.B.; NOONAN, R.E. Linguagens de Progr rogram amaç ação ão Princ rincíp ípio ioss e Parad aradig igm mas. as. 2. ed. ed. Porto orto Alegre: AMGH, 2010 Baker, T. (1990). A stack-based resource allocation policy for realtime processes, Real-Time Systems Symposium, 1990. Proceedings., 11th pp. 191–200. John Wiley & Sons ed. 2004. Concurrent and Real-Time Programming in Java
Kiyo Kiyofu fumi mi Tana Tanaka ka,, 2012 2012.. Embe Embedd dded ed Syst System emss - Theo Theory ry and Design Methodology [1] :Henrique Puhlmann. Sistemas Operacionais de Tempo Real - Alguns Periféricos Acesso em 03/03/2017 [2]: [2]: Raim Raimun undo do Macê Macêdo do,, Geor George ge Lima Lima,, Luci Lucian ano o Barr Barret eto, o, Aline Andrade, Alírio Sá, Frederico Barboza, Rodrigo Albuquerque, Sandro Andrade. Tratando a Previsibilidade em Sistemas de Tempo-Real Distri Distribuí buídos dos:: Especi Especific ficaçã ação, o, Lingua Linguagen gens, s, Middle Middlewar ware ee Mecanismos Básicos. Disponivel em: Acesso em 03/03/2017 Marcelo de Paiva Guimarães - Sistemas de Tempo Real. Disponível em: Acesso em 03/03/2017 UFPR FPR - Aloca locaçã ção o dinâ dinâmi mica ca de memó memórria. ia. Disp Dispon onív ível el em: > Acesso Acesso em 03/03/2017 ESC 2017 - How to make System Real Time more friendly. Disponível em: Acesso em 02/03/2017 IBM Developer Words - Java em tempo real. Disponível em: Acesso em 01/03/2017 Prog Progra rama maçã ção o Conc Concor orre rent nte e - Java Java e sist sistem emas as de temp tempo o real. Disponível em: a-e-sistemas-de-tempo-real-vale-a-pena-usar/ > Acesso em 01/03/2017 Sistemas de Tempo Real -uC/OS II. Disponível em: Acesso em 05/03/2017 Comp Compililer erss Labo Labora rato tory ry - Ling Lingua uage gens ns de Prog Progra rama maçã ção. o. Disponível em: df> Acesso Acesso em
10/03/2017 Intr Introd oduç ução ão ao Sist Sistem emas as de Temp Tempo o Real Real.. Dispo isponí níve vell em: Acesso em 08/03/2017 CPP Preferences - C++ Library. Disponível em: > Acesso 07/03/2017
em