{"id":1068,"date":"2020-06-18T17:02:00","date_gmt":"2020-06-18T17:02:00","guid":{"rendered":"http:\/\/visiorob.com.br\/?p=1068"},"modified":"2022-09-04T14:14:46","modified_gmt":"2022-09-04T14:14:46","slug":"rtos-sistemas-operacionais-de-tempo-real","status":"publish","type":"post","link":"https:\/\/visiorob.com.br\/index.php\/2020\/06\/18\/rtos-sistemas-operacionais-de-tempo-real\/","title":{"rendered":"RTOS &#8211; Sistemas Operacionais de Tempo Real"},"content":{"rendered":"\n<p>A evolu\u00e7\u00e3o dos sistemas embarcados resultou no aumento na quantidade e complexidade dos sensores e atuadores conectados ao controlador, fazendo com que o controle de todas as tarefas necess\u00e1rias se tornasse complexo atrav\u00e9s da estrutura comum de superloop, e ainda assim, resultasse em um sistema impreciso em rela\u00e7\u00e3o ao tempo de execu\u00e7\u00e3o das tarefas. Contudo, alguns sistemas trabalham com eventos que possuem restri\u00e7\u00f5es de tempo, ou seja, possuem um tempo-limite para uma tarefa ser processada.<\/p>\n\n\n\n<p>Para lidar com os resquisitos de tempo e tamb\u00e9m para produzir um ambiente multitarefas no projeto, pode-se fazer o uso de sistemas operacionais embarcados no microcontrolador. Mas o que efetivamente s\u00e3o sistemas operacionais?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sistemas operacionais <\/h2>\n\n\n\n<p>De modo geral, um sistema operacional nada mais \u00e9 que conjunto de c\u00f3digos cuja principal fun\u00e7\u00e3o \u00e9 gerenciar os recursos de hardware do sistema, tais como: o processador, a mem\u00f3ria e os dispositivos de entrada\/sa\u00edda (I\/O), fornecendo uma interface entre a aplica\u00e7\u00e3o final e o hardware.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"401\" height=\"361\" src=\"https:\/\/visiorob.com.br\/wp-content\/uploads\/2020\/05\/Untitled-Diagram.png\" alt=\"\" class=\"wp-image-1093\" srcset=\"https:\/\/visiorob.com.br\/wp-content\/uploads\/2020\/05\/Untitled-Diagram.png 401w, https:\/\/visiorob.com.br\/wp-content\/uploads\/2020\/05\/Untitled-Diagram-300x270.png 300w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><figcaption>Aplica\u00e7\u00e3o do sistema operacional<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Elementos de um sistema operacional<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Kernel:<\/strong> Componente central do sistema operacional, respons\u00e1vel por fazer a intera\u00e7\u00e3o entre software e hardware.<\/li><li><strong>Scheduler:<\/strong> Software do sistema operacional respons\u00e1vel por administrar as tarefas a serem executadas pela CPU, geralmente s\u00e3o selecionadas de acordo com o n\u00edvel de prioridade. Em caso de prioridades iguais o scheduler far\u00e1 a altern\u00e2ncia entre as tarefas.<\/li><li><strong>Tarefas:<\/strong> S\u00e3o pequenos trechos de programa com responsabilidades espec\u00edficas e bem definidas. Cada tarefa possui um n\u00edvel de prioridade, que \u00e9 atribu\u00edda de acordo com sua import\u00e2ncia. No caso de sistemas com apenas uma CPU, apenas uma tarefa \u00e9 executada por vez, no entanto, o scheduler far\u00e1 a altern\u00e2ncia entre elas t\u00e3o rapidamente que teremos a impress\u00e3o de estarem sendo executadas simultaneamente.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">GPOS x RTOS<\/h3>\n\n\n\n<p>Os sistemas operacionais podem ser divididos em dois grandes grupos: Os GPOS (sistemas operacionais de prop\u00f3sito geral), muito utilizados em computadores, focam na execu\u00e7\u00e3o de in\u00fameras tarefas paralelamente, sem tempo limite para que elas sejam conclu\u00eddas. J\u00e1 nos sistemas operacionais de tempo real (RTOS) o tempo de execu\u00e7\u00e3o das tarefas \u00e9 considerado mais importante do que executar centenas de tarefas ao mesmo tempo. O termo &#8220;tempo real&#8221; sugere erroneamente a idea de um sistema extremamente r\u00e1pido, quando na verdade o que realmente interessa \u00e9 que o tempo de execu\u00e7\u00e3o das tarefas seja previs\u00edvel e esteja dentro de um limite pr\u00e9-determinado de tempo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Restri\u00e7\u00f5es de tempo<\/h3>\n\n\n\n<p>Para entendermos a import\u00e2ncia de um Sistema Operacional de Tempo Real, precisamos entender o conceito de restri\u00e7\u00e3o de tempo para tarefas computacionais. Todo evento computacional recebe um est\u00edmulo (entrada) executa o processameto de uma tarefa e produz uma sa\u00edda. Um evento com restri\u00e7\u00e3o de tempo conta com um tempo limite (deadline) para que o processamento ocorra e a sa\u00edda seja gerada. Como exemplo de sistema de tempo real podemos citar um sensor de temperatura que gera uma entrada em um microcontrolador. Se um n\u00edvel cr\u00edtico de temperatura for atingido, o sensor deve gerar um est\u00edmulo no microcontrolador para que ele atue sobre o sistema de refrigera\u00e7\u00e3o. Caso o microcontrolador nao cumpra os requisitos de tempo a temperatura pode atingir n\u00edveis muito elevados e acabar danificando todo o sistema. Um RTOS, portanto, minimiza o risco de falhas que poderiam danificar componentes ou at\u00e9 mesmo causar riscos \u00e0 vidas humanas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Vantagens em utilizar um sistema operacional embarcado<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Confiabilidade: <\/strong>Com o gerenciamento do hardware sendo realizado pelo sistema operacional, os bugs relacionados a estes t\u00f3picos tendem a diminuir \u00e0 medida que o sistema operacional \u00e9 testado, tornando o sistema como um todo mais confi\u00e1vel.<\/li><li><strong>Portabilidade: <\/strong>Portar um projeto de um dispositivo para outro se torna algo simples se ambos utilizarem o mesmo sistema operacional embarcado.<\/li><li><strong>Reaproveitamento de c\u00f3digo: <\/strong>Uma mesma fun\u00e7\u00e3o do sistema pode ser executada utilizando diferentes par\u00e2metros, gerando assim resultados diferentes, isso significa reutilizar o c\u00f3digo fonte para realizar mais tarefas.<\/li><li><strong>Seguran\u00e7a: <\/strong>Se descoberta alguma brecha na seguran\u00e7a do sistema a corre\u00e7\u00e3o ser\u00e1 feita a n\u00edvel de sistema operacional, n\u00e3o sendo necess\u00e1rio alterar o c\u00f3digo fonte da aplica\u00e7\u00e3o em si.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conceitos de projeto utilizando RTOS<\/h2>\n\n\n\n<p>Em um ambiente em que se utiliza RTOS toda e qualquer funcionalidade do sistema \u00e9 definida como uma tarefa (<strong>task<\/strong>). Cada tarefa \u00e9 vista como uma rotina isolada, e se trata de uma funcionalidade do sistema. Como exemplo de tarefas podemos citar a leitura de sensores, acionamento de led&#8217;s, escrita em displays, comunica\u00e7\u00e3o serial e etc. Portanto, um Sistema de Tempo Real \u00e9 modelado atrav\u00e9s da divis\u00e3o da aplica\u00e7\u00e3o em um conjunto de pequenas tarefas individuais, que podem ou nao interagirem entre si.<\/p>\n\n\n\n<p>Caso seja necess\u00e1ria a intera\u00e7\u00e3o entre tarefas, os RTOS contam com o mecanismo de filas. As <strong>queues<\/strong>, como tamb\u00e9m podem ser chamadas, s\u00e3o o meio de comunica\u00e7\u00e3o entre tarefas, com essa comunica\u00e7\u00e3o sendo feita em via \u00fanica, ou seja: Uma fila deve ser usada pra transmitir dados da tarefa_1 para a tarefa_2 e outra para transmitir da tarefa_2 para a tarefa_1. O uso de filas visa evitar o uso de vari\u00e1veis globais como interface de comunica\u00e7\u00e3o.<\/p>\n\n\n\n<p>Um ponto a se atentar em sistemas de tempo real \u00e9 o compartilhamento recursos entre as tarefas. Existe a possibilidade de uma tarefa requerer algum recurso, como um perif\u00e9rico por exemplo, que j\u00e1 esteja sendo utilizado por outra. Para que este compartilhamento seja feita de forma segura, os RTOS proveem um recurso chamado <strong>sem\u00e1foro<\/strong>. Como um sem\u00e1foro de tr\u00e2nsito, ele sinaliza se uma via, neste caso um recurso do sistema, est\u00e1 ou nao dispon\u00edvel para ser utilizado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Escolha de um RTOS<\/h2>\n\n\n\n<p>Uma vez identificada a necessidade e a viabilidade da utiliza\u00e7\u00e3o de um RTOS, \u00e9 preciso definir qual sistema ser\u00e1 utilizado. Para isso alguns fatores devem ser levado em conta, como por exemplo: A arquitetura do processador, a mem\u00f3ria RAM dispon\u00edvel, a mem\u00f3ria Flash dispon\u00edvel e o custo do sistema. Confira a seguir a lista dos RTOS mais utilizados atualmente:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>VxWorks:<\/strong> RTOS comercial l\u00edder de mercado<\/li><li><strong>FreeRTOS:<\/strong> um RTOS de c\u00f3digo aberto e que j\u00e1 foi portado para diversas plataformas (ARM,&nbsp;MSP430,&nbsp;PIC, etc).<\/li><li><strong>TI-RTOS:<\/strong> Criado pela&nbsp;Texas Instruments para uso em uma grande variedade de processadores.<\/li><li><strong>X-Real Time Kernel:<\/strong> Desenvolvido pela eSysTech voltado a processadores ARM.<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Refer\u00eancias<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.embarcados.com.br\/rtos-para-iniciantes-com-arduino-e-freertos\/\">https:\/\/www.embarcados.com.br\/rtos-para-iniciantes-com-arduino-e-freertos\/<\/a><\/li><li><a href=\"https:\/\/sergioprado.org\/sistemas-de-tempo-real-part-1\/\">https:\/\/sergioprado.org\/sistemas-de-tempo-real-part-1\/<\/a><\/li><li><a href=\"https:\/\/www.embarcados.com.br\/rtos-sistema-operacional-de-tempo-real\/\">https:\/\/www.embarcados.com.br\/rtos-sistema-operacional-de-tempo-real\/<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>A evolu\u00e7\u00e3o dos sistemas embarcados resultou no aumento na quantidade e complexidade dos sensores e atuadores conectados ao controlador, fazendo com que o controle de <a class=\"mh-excerpt-more\" href=\"https:\/\/visiorob.com.br\/index.php\/2020\/06\/18\/rtos-sistemas-operacionais-de-tempo-real\/\" title=\"RTOS &#8211; Sistemas Operacionais de Tempo Real\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":22,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[12,42],"tags":[43,18,44],"class_list":["post-1068","post","type-post","status-publish","format-standard","hentry","category-microprocessadores","category-programacao","tag-rtos","tag-sistema-embarcado","tag-tempo-real"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts\/1068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=1068"}],"version-history":[{"count":18,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts\/1068\/revisions"}],"predecessor-version":[{"id":1434,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/posts\/1068\/revisions\/1434"}],"wp:attachment":[{"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=1068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=1068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visiorob.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=1068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}