Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas de Tempo Real Material Teórico Responsável pelo Conteúdo: Prof. Dr. Cléber Silva Ferreira da Luz Revisão Textual: Prof.ª Dr.ª Selma Aparecida Cesarin Programação de Sistemas Operacionais para Aplicações em Tempo Real • Introdução; • Sistemas Operacionai; • Sistemas Operacionais de Tempo Real; • Funções e Serviços de um so de Tempo Real; • Exemplos de Sistemas Operacionais de Tempo Real; • Conclusões e Resumo da Unidade. · Apresentar todos os conceitos presentes no desenvolvimento de um Sistema Operacional para Aplicações de Tempo Real. OBJETIVO DE APRENDIZADO Programação de Sistemas Operacionais para Aplicações em Tempo Real Orientações de estudo Para que o conteúdo desta Disciplina seja bem aproveitado e haja maior aplicabilidade na sua formação acadêmica e atuação profissional, siga algumas recomendações básicas: Assim: Organize seus estudos de maneira que passem a fazer parte da sua rotina. Por exemplo, você poderá determinar um dia e horário fixos como seu “momento do estudo”; Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma alimentação saudável pode proporcionar melhor aproveitamento do estudo; No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua interpretação e auxiliarão no pleno entendimento dos temas abordados; Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discus- são, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de aprendizagem. Organize seus estudos de maneira que passem a fazer parte Mantenha o foco! Evite se distrair com as redes sociais. Mantenha o foco! Evite se distrair com as redes sociais. Determine um horário fixo para estudar. Aproveite as indicações de Material Complementar. Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma Não se esqueça de se alimentar e de se manter hidratado. Aproveite as Conserve seu material e local de estudos sempre organizados. Procure manter contato com seus colegas e tutores para trocar ideias! Isso amplia a aprendizagem. Seja original! Nunca plagie trabalhos. UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real Introdução Sistemas Operacionais de Tempo Real são Sistemas Operacionais voltados para aplicações de Tempo Real. Assim como num Sistema de Tempo Real, um Sistema Operacional de Tempo Real responde a eventos pré-definidos em um intervalo de tempo conhecido e bem definido. Em Sistemas Operacionais de Tempo Real, o tempo de resposta a um evento é o aspecto mais importante. Todos os eventos devem ser respondidos respeitando os prazos de tempo. Um Sistema Operacional de Tempo Real também possui a característica de ser totalmente confiável, mesmo na ocorrência de uma falha; o Sistema Operacional de Tempo Real deve responder o evento no intervalo de tempo determinado. O primeiro passo no estudo de Sistemas Operacionais para aplicações de Tempo Real é entender o que é um Sistema operacional. Após termos bem claro o que é um Sistema Operacional, conseguiremos compreender facilmente todos os conceitos e elementos por trás de um Sistema Operacional para aplicações de Tempo Real. Em um Sistema Computacional, um Sistema Operacional (SO) é o Programa mais importante do Sistema. Ele atua como um intermediário entre o usuário e o hardware de um computador. O objetivo do Sistema Operacional fornece um ambiente para que o usuário possa executar seus Programas. Dessa forma, podemos dizer que o objetivo central do SO é facilitar o uso de Sistemas Computacionais. Um objetivo secundário do SO é usar os hardwares do Sistema Computa- cional de forma eficiente. A próxima seção apresenta mais detalhes sobre um Sistema Operacional. Sistemas Operacionais Um Sistema Operacional (SO) pode ser considerado um Programa que visa a realizar uma intermediação entre um usuário e o hardware de um computador. Seu objetivo é fornecer um ambiente no qual os usuários possam executar seus Programas de maneira eficiente. Numa definição clássica de Sistemas Operacio- nais, um SO pode ser considerado um gerenciador, que atua gerenciando os diver- sos recursos computacionais, tais como, softwares, hardwares, dados e dados de entrada e saída, entre outros. Por mais complexo que possa parecer, um Sistema Operacional é um conjunto de rotinas executado pelo processador, da mesma forma que nossos Programas. Sua principal função é controlar o funcionamento do computador, como um geren- te dos vários recursos disponíveis do Sistema. 8 9 O nome Sistema Operacional não é único para designar esse Conjunto de Pro- gramas. Nomes como monitor, executivo, supervisor ou controlador possuem, nor- malmente, o mesmo significado. Funções que um Sistema operacional deve desempenhar: • Permitir que os Programas armazenem e obtenham informação; • Isolar os Programas dos detalhes específicos de hardware; • Controlar o fluxo de dados entre os componentes de um computador; • Permitir que os Programas sejam executados sem a interferência de outros Programas; • Permitir que os Programas independentes cooperem periodicamente e com- partilhem informações; • Responder aos erros ou a solicitações dos usuários; • Impor um escalonamento entre Programas que solicitam recursos; • Facilitar o acesso aos recursos do Sistema. O Sistema Operacional, então, serve de interface entre o usuário e os recursos dis- poníveis no Sistema, tornando essa comu- nicação transparente e permitindo ao usu- ário uma utilização mais eficiente e com menores chances de erros. Sistemas Operacionais de Tempo Real As principais funções de um SO são gerenciar os recursos de hardware e de software do Sistema Computacional e fornecer serviços específicos para os usuários do Sistema Computacional. Sis- temas Operacionais de Tempo Real tam- bém realizam as mesmas funções e servi- ços de um SO. Todavia, um SO de Tempo Real possui requisitos diferentes que surgem por causa da sua natureza. Uma característica funda- mental que os diferes é a Previsibilidade. Essa característica se aplica de modo mais crítico em relação ao tempo. Todos os serviços devem ser realizados dentro de um intervalo de tempo conhecidos e Figura 1 – Sistema Operacional como uma interface Fonte: Adaptado de iStock/Getty Images 9 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real determinados. Essa característica também é aplicada em todos os recursos geren- ciados pelo SO de Tempo Real, tais como, armazenamento, dispositivos de E/S e arquivos. É importante também, que a gerência de falhas seja previsível. Outras características que os difere são a Visibilidade e o Controle para to- dos os recursos do Sistema. Em um SO convencional, uma grande quantidade de hardware do Sistema Computacional é totalmente escondida e abstraída do usuário. Entretanto, em um SO de Tempo Real, os usuários devem ser capazes de acessar e controlar os recursos físicos do Sistema para garantir a previsibilidade. Habitualmente, um SO de Tempo Real é um Sistema aberto, isto é, aquele que de- fine um conjunto de mecanismos apropriados e flexíveis. Um SO de Tempo Real deve possibilitar a definição de um amplo domínio de políticas, por exemplo, definição de di- ferentes políticas de gerenciamento de memória, de gerenciamento de entrada e saída de dados e de gerenciamento de arquivos, entre outros. Criando um amplo conjunto de definições de políticas, o Sistema Operacional de Tempo Real se torna mais robusto. Um Sistema Operacional de Tempo Real compartilha dos mesmos conceitos e classificações de um Sistema de Tempo Real. Porexemplo, um SO de Tempo Real também é classificado em Crítico e Não Crítico. SOs de Tempo Real Críticos obedecem ao intervalo de tempo para a realiza- ção da tarefa, isto é, não pode haver perda de prazo na realização de uma tarefa. O não cumprimento dos prazos pode causar resultados fatais. Em um SO de Tempo Real, uma realização de tarefa pode ser encarada como uma alocação de recurso, uma alocação de memória e uma abertura de um arquivo,e entre outros. Todavia, a tarefa deve cumprir o prazo de forma rigorosa; senão, resul- tados fatais podem ocorrer. Um SO de Tempo Real crítico também é subclassificado em Seguro em Caso de Falha e Operacional em Caso de Falha. Seguro em Caso de Falha significa que, caso ocorram falhas, o SO consegue atingir um ou mais estados seguros. Operacional em Caso de Falha significa que, se ocorrerem falhas, o SO se degrada e consegue fornecer um tipo de serviço mínimo. No SO Tempo Real não Crítico, o tempo também é o fator mais importante; todavia, se ocorrerem falhas, elas são aceitáveis. Dessa forma, caso ocorra perda de prazo, os danos resultantes não serão letais. Um SO de Tempo Real também pode ser classificado como Hard Real-Time, Soft Real-Time, Real Real-Time e Firm Real-Time. Hard Real-Time significa que o SO deve respeitar todos os prazos de forma absoluta, isto é, a perda de prazo não é tolerada. Soft Real-Time significa que se o SO perder algum prazo final, ocasionalmente, é tolerável. Os SO classificados como Real Real-Time são SOs Hard Real-Time que possuem prazos de respos- tas extremamente curtos. 10 11 Na classificação Firm Real-Time estão os Soft Real-Time que não possuem benefícios de entrega de serviço sem atraso. Para um melhor entendimento sobre essas classificações, consulte a Unidade I – Definição de Conceitos Básicos e da importância de Sistemas Computacionais para aplicações Tempo-Real. Funções e Serviços de um so de Tempo Real Um Sistema Operacional de Tempo Real deve realizar algumas funções básicas, tais como, criar Processos, gerenciar Processos, escalonar Processos, gerenciar memória, gerenciar arquivos, gerenciar dados de entrada e saída e, também, ge- renciar todos os hardwares disponíveis no Sistema Operacional. A próxima seção apresenta detalhes sobre Processos. Processos Um dos serviços mais importantes que o SO de Tempo Real realiza é criar, con- trolar e destruir Processos. Um Processo é basicamente um Programa em Execução. O termo Processo se re- fere ao Programa em Execução e, também, todos os elementos necessários para que o Programa o execute, como, espaço de memória, código binário do Programa, espaço para armazenar dados de processamento e controlador de instruções (responsável por controlar quais instruções do programa falta serem executadas), entre outros. A maneira mais fácil de obter uma boa noção de Processos é pensar nos Siste- mas de tempos compartilhados. Periodicamente, o SO decide parar de executar um Processo e começar a executar outro. Quando um Processo é suspenso temporariamente, mais tarde ele deve ser rei- niciado exatamente no mesmo estado em que estava quando foi suspenso. Dessa forma, todas as informações do Programa devem ser armazenadas em algum lugar seguro durante a suspensão. Um Processo pode criar outros Processos. Nesse caso, temos uma relação de pai e filho, criando uma árvore de Processos, como é mostrado na Figura 2. C A B FED Uma árvore de processos - A criou dois processos �lhos: B e C - B criou dois processos �lhos: D, E e F Figura 2 – Relação entre Processos Fonte: Acervo do Conteudista 11 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real Processos são executados na CPU do computador. Um Processo possui 3 estados: 1. Executando (realmente sendo executado na CPU nesse instante); 2. Pronto (executável; temporariamente parado para permitir que outro Processo execute na CPU); 3. Bloqueado (incapaz de executar até que algum evento externo aconteça). A Figura 3 ilustra o ciclo de estados de um Processo. Bloqueado 1 3 2 1 - O processo bloqueia para entrada 2 - O agendador seleciona outro processo 3 - O agendador seleciona esse processo 4 - A entrada torna-se disponível 4 Executando Pronto Figura 3 – Ciclo de estados de um Processo Fonte: Adaptado de Tanenbaum O agendador é responsável por selecionar o Processo e colocá-lo para executar na CPU. A próxima seção apresenta detalhes sobre um agendador. Escalonamento Outra função importante de um SO de Tempo Real é escalonar o Processo para ser executado pelo processado. Quando um Processo fica em estado de pronto, ele é colocado em fila de Processos, esperando a sua vez de ser escalonado para utilizar o processador, conforme ilustrado na Tabela 1. Tabela 1 – Fila de Processos Processos 0 1 ... n – 2 n – 1 Agendador Fonte: Acervo do Conteudista A função de escalonamento é chamada de agendador ou escalonador. Fre- quentemente, o termo em inglês Sheduling é utilizado para fazer referência à função de escalonamento do SO. Os Processos que se encontram em estado de prontos ficam numa fila e o escalo- nador de Processos seleciona um Processo e o coloca para ser executado na CPU. Esse procedimento é ilustrado na Figura 4. 12 13 Espera Execução Processo Processo Processo Processo Processo Pronto Escalonador Figura 4 – Escalonamento Fonte: Acervo do Conteudista Essa seleção é realizada a partir de um método de escalonamento, que selecio- na o Processo utilizando um algoritmo de escalonamento. Existem diversos algoritmos de escalonamento; cada algoritmo de escalonamen- to implementa uma lógica de seleção. Os algoritmos de escalonamento são classificados em dois grupos: • Algoritmos de escalonamento estáticos; • Algoritmos de escalonamento dinâmicos. Essa classificação baseia-se nas regras de escalonamento quanto à consideração do estado atual da aplicação. Como, por exemplo, no escalonamento estático, que não são consideradas as alterações do estado atual da aplicação. Dessa forma, as tarefas são alocadas antes da execução da aplicação e a execu- ção é feita em função do escalonamento estabelecido. O escalonamento dinâmico detecta alterações no estado atual da aplicação e gerencia os recursos com base nas informações atuais da aplicação. As tarefas são alocadas em tempo de execução, considerando as informações e as condições da aplicação. Métodos de escalonamentos serão estudados com profundidade na unidade V – Métodos de Escalonamento. É interessante lembrar que problemas de escalonamento de tarefas não ocorrem somente em Sistemas Operacionais; ocorrem, constantemente, em Sistemas de Tempo Real. Imagine o seguinte cenário: chegam duas tarefas ao mesmo tempo para o Sis- tema de Tempo Real. Qual se deve atender primeiro? Os Sistemas de Tempo possuem uma política de escalonamento muito rígida, pois, habitualmente, chegam diversas tarefas ao mesmo tempo e o Sistema deve realizar a escolha de qual realizar primeiro a partir de um mecanismo de escalona- mento, que selecionará a tarefa a ser executada primeiro utilizando determinadas regras implementadas no escalonador. 13 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real Threads Em Sistemas Operacionais de Tempo Real, é comum que Processos trabalhem em conjunto para realizar uma determinada tarefa. Frequentemente, quando dois Processos trabalham em conjunto, eles compartilham o mesmo recurso, seja ele um espaço de memória, seja um arquivo. Dessa forma, é necessário haver comu- nicação e sincronização, entre os Processos. Normalmente, num Processo, há uma única linha de execução. Entretanto, em alguns Sistemas Operacionais modernos, é fornecido suporte para múltiplas linhas de execução dentro de um Processo. Essas linhas de controle, normalmente, são chamadas Threads ou, ocasional- mente, Processos Leves. Threads possuem os mesmos estados de um Processo, compartilham o mes- mo espaço de endereçamento, permitindo queum thread possa alterar dados de outro thread. Assim como os Processos, Threads podem compartilhar o mesmo endereço de memória também. Habitualmente, Threads trabalham de forma cooperativa, assim como os Processos. Thread 2 Thread 3 Processo Thread 1 Figura 5 – Threads Fonte: Acervo do Conteudista Comunicação entre Threads Habitualmente, Threads trabalham em conjunto para realizar um único traba- lho. O mesmo se aplica a Processos. Com isso, em Sistemas Operacionais de Tempo Real, é necessário haver um mecanismo de comunicação e de sincronização. No trabalho em conjunto, frequentemente, há necessidade de compartilhar al- guns armazenamentos de dados que podem ser lidos e gravados. O armazenamento compartilhado pode estar na memória principal ou pode ser um arquivo compartilhado; a localização da memória compartilhada não muda a natureza da comunicação ou os problemas que surgem. 14 15 Para entender os problemas que surgem com o armazenamento compartilhado, imagine uma variável chamada cont. Essa variável contém o valor 10 e é compar- tilhada entres os Processos A e B. Tanto o Processo A como o Processo B realizam uma operação de soma em cont. Uma operação de soma é realizada por três operações primitivas, Leitura, Soma e Armazenamento. O Processo A está em execução na CPU. Ele lê o conteúdo de cont., soma 1 ao valor de cont., mas, nesse momento, o Processo A perde a prioridade de execução na CPU e fica no estado de Pronto. Em seguida, o Processo B entra em estado de execução e lê o valor de cont., soma 1 e grava o resultado em cont. Logo após, o Processo B fica no estado de Pronto, deixando o Processo A usar a CPU. Agora, o Processo A continua na operação que ele parou, ou seja, continua a partir da escrita e escreve o resultado da soma em cont. Nesse caso, o que houve com valor de cont.? O valor de cont. está corrompido, não é mais um valor confiável. Quando esse cenário ocorrer, dizemos que ocorreu uma condição de corrida. Proceso BProceso A Cont. Figura 6 – Condição de Corrida Fonte: Acervo do Conteudista Para evitar condições é preciso implementar um mecanismo de execução mú- tua, isto é, quando uma Thread estiver acessando a variável Cont., nenhuma outra Thread pode acessá-la. De uma maneira mais simples, é preciso criar um mecanismo de sincronização, que permita que uma Thread por vez acesse a variável Cont.. Existem diversas soluções para o problema de sincronização. O problema de sincronização e as suas soluções são abordados com mais deta- lhes na Unidade VI – Problemas de sincronismo e temporização. Todavia, nesta Unidade, iremos apresentar uma solução para o problema da variável Cont. Uma solução possível para evitar condição de corrida e, implicitamente, im- plementar um mecanismo de sincronização nesse problema é criar uma variável de bloqueio. 15 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real Nessa solução, é criada uma variável “bloqueio” com o valor 0, que significa que ninguém está acessando a variável Cont, e o valor 1 significa que alguém esta acessando Cont. Por exemplo, vamos supor que a Thread T1 acesse primeiro a variável Cont.; ao acessar a variável, a Thread T1 muda o valor de bloqueio para 1, impossibili- dade de outras Threads acessarem a variável Cont. Quando a Thread T1 termina de acessar a Cont., ela muda o valor de bloqueio para 0, possibilitando que outras Threads acessem a variável Cont. T2T1 Cont. T1bloqueio = 0; bloqueio = 1; bloqueio = 0; Figura 7 – Solução variável de bloqueio Fonte: Acervo do Conteudista Vale ressaltar que o problema de sincronização e as suas soluções serão abor- dados com detalhes na Unidade VI – Problemas de Sincronismo e Temporização. É importante enfatizar, também, que problemas de sincronização não aparecem somente em Sistemas Operacionais de Tempo Real, aparecem, constantemente, em Sistemas de Tempo Real como um todo. Imagine a seguinte situação: são necessários dois recursos (A e B) para realizar uma única tarefa. O Recurso A é responsável por iniciar a tarefa e, depois de algum tempo de processamento, o Recurso B continua o processamento. B não pode realizar o processamento se A não o iniciar primeiro. Esse exemplo, e diversos outros, ocorrem constantemente em Sistemas de Tempo Real. Memória Outra função importante de SO de Tempo Real é gerenciar a memória do Sis- tema Computacional. Um computador possui diferentes níveis de memórias. Cada nível tem um propósito, uma capacidade e forma de acesso diferente. Os níveis de memória de computador são: • Registradores; 16 17 • Memória Cache; • Memória Principal; • Memória Secundária. A Figura 8 ilustra os níveis de memória. Esta ilustração mostra a capacidade e a velocidade de cada nível: Registradores Memória Cache Memória Principal Memória Secundária Maior custo Maior Velocidade Maior Capacidade Figura 8 – Níveis de memória de um computador Fonte: Acervo do Conteudista Registradores são pequenos espaços de memórias presentes nos processa- dores. Sua velocidade é extremamente rápida. É um nível de memória presente no processador. Por exemplo, para que o processador realize a soma entre 2 dois números, ele precisa de espaço de memória para armazenar os dois números e, posteriormente, armazenar o resultado. Esses números são armazenados em registradores, para possibilitar que o processador realize a soma. A Memória Cache também é uma memória de alta velocidade. O tempo de acesso a um dado nela armazenado é muito menor do que se ele estivesse na me- mória principal, ou na memória secundária. Essa memória é nível de processador, isto é, uma memória dedicada a arma- zenar dados para o processador. Esse nível de memória é mais lento do que os registradores; todavia, permite armazenar uma quantidade maior de dados. Essa quantidade é bem limitada, mas é maior que a dos registradores. Seu objetivo é armazenar dados que são utilizados com mais frequência; dessa forma, o proces- samento fica mais rápido. A Memória Primária, também chamada de memória RAM, tem velocidade re- lativamente rápida; porém, é mais lenta do que a memória cache e os registradores. Em contrapartida, tem uma capacidade de armazenamento superior à dos regis- tradores e cache. O objetivo da memória primária é fornecer espaço de memória para os programas serem executados. Todos os programas, inclusive o SO, são executados nesse nível de memória. 17 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real A Memória Secundária é um meio permanente de armazenamento de progra- mas e dados. Nesse nível, o acesso é mais lento se comparado ao acesso à memória cache ou à principal. Todavia, sua capacidade de armazenamento é superior a qual- quer outro nível de memória. Exemplos de dispositivos de memória secundária: HD. Dispositivos de Entrada e Saída de Dados Fornecer gerenciamento de entrada e saída de dados é outra função que o SO de Tempo Real deve realizar. Dispositivos de entrada e saída de dados são utilizados para permitir a comunicação entre o computador e o mundo exterior. Os dispositivos de E/S podem ser divididos em duas categorias: • Dispositivos que são utilizados como memória secundária; • Dispositivos que servem para a interface homem-máquina. Dispositivos que são utilizados como memórias secundárias são dispositivos que possibilitam estender o meio físico de armazenamento de dados. Por exemplo, um pen driver, é um dispositivo utilizado como memória secundária. Já os dispositivos que servem para a interface homem-máquina são aqueles dispositivos que possibilitam a entrada e saída de dados do computador para o ambiente externo, ou vice e versa. Por exemplo, um teclado ou um monitor são exemplos de dispositivos que servem como interface homem-máquina. Arquivos Outra função que um SO de Tempo Real deve fornecer é o gerenciamento de arquivos. Arquivos possibilitam o armazenamento de informações e devem ser armazena- dasao longo do tempo; são constituídos de informações logicamente relacionadas. Por exemplo, um Programa pode ser considerado arquivo, porque é totalmente construído de informações lógicas. • Arquivos podem ser classificados em: • Arquivos Executáveis; • Arquivos Lógicos; • Arquivos de Somente Leitura; • Arquivos de Somente Escrita. Arquivos armazenam informações, geralmente, em grandes quantidades. Essas in- formações precisam ser armazenadas para serem utilizadas em diversos momentos. Dessa forma, ao se desligar o computador, essas informações não podem ser perdidas. Quando utilizadas, elas devem ser acessadas e lidas na memória do com- 18 19 putador. Há muitas formas de acesso às informações. Alguns Sistemas fornecem apenas um tipo, já outros, disponibilizam diferentes métodos, conforme a necessi- dade da aplicação. Um SO de Tempo Real deve fornecer mecanismos para armazenar, buscar, apa- gar, alterar e organizar arquivos, com o objetivo de facilitar o acesso às informações. Deve, também, permitir que as aplicações (Programas) criem e manipulem ar- quivos. Dessa forma, é necessário que o SO de Tempo Real forneça mecanismos como o “System Calls de E/S” que são chamados de Sistemas, que possibilitam a aplicação de manipular o arquivo. Dispositos Aplicação System Call de E/S Figura 9 – System Calls de E/S Fonte: Acervo do Conteudista As chamadas de Sistemas (System Calls) de E/S deve fornecer os comandos, como: • Create() – Responsável por criar arquivos; • Open() – Responsável por abrir arquivos; • Read() – Responsável por ler arquivos; • Write() – Responsável por escrever arquivos; • Close() – Responsável por fechar arquivos; • Rename() – Responsável por renomear arquivos; • Delete() – Responsável por deletar arquivos. Um arquivo deve possuir, ainda, atributos, tais como, nome, tamanho, data da criação, proteção e também, o uid (id do usuário) do criador do arquivo. O meca- nismo de gerência de arquivo do SO é responsável por tudo isso. 19 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real Exemplos de Sistemas Operacionais de Tempo Real Existem diversos Sistemas Operacionais de Tempo Real no Mercado. Entre eles, estão; • RedHat Enterprise Linux for Real Time – Criado pela Empresa RedHat, o “RedHat Enterprise Linux for Real Time” é um Sistema Operacional de Tempo Real em Ambiente Linux; • AIX – Advanced Interactive eXecutive – Este Sistema Operacional de Tempo é uma versão do Unix executados em computadores de médio porte da IBM; • RTA-OSEK – Um Sistema de Tempo Real voltado para o comércio automotivo; • AMX – Sistema de Tempo Real criado pela Empresa KADAK; • CMX – Um Sistema Operacional desenvolvido pela Empresa CMX Company; • RT-Linux – um Sistema Operacional desenvolvido para atender tarefas de Tempo Real e também tarefas que não acontecem de Tempo Real. Conclusões e Resumo da Unidade Sistemas Operacionais (SO) para aplicações de Tempo Real são Sistemas Ope- racionais que devem responder a eventos pré-definidos em um intervalo de tempo conhecido, tendo como objetivos primários responder a eventos e respeitar o pra- zo de resposta deles. Assim como um Sistema de Tempo Real, um SO de Tempo Real deve ser al- tamente confiável e deve responder aos eventos dentro do prazo determinado, mesmo na presença de falhas. Para compreender de fato o que é um Sistema Operacional de Tempo Real, é necessário primeiro entender o que é um Sistema Operacional. Um Sistema Operacional pode ser visto como um gerenciador de recursos, que gerencia todos os recursos de um Sistema Computacional. Seu objetivo é fornecer um ambiente para que o usuário possa executar seus Programas de forma fácil e eficaz. Dessa forma, ele também pode ser visto como um intermediário entre o usuário e o hardware de um Sistema Computacional. Um Sistema Operacional de Tempo Real é um SO Convencional, isto é, possui o mesmo objetivo que um SO Conven- cional. Todavia, é um SO que deve responder um evento pré-definido num prazo de tempo estipulado. Caso isso não aconteça, danos irreversíveis podem ocorrer. Um SO de Tempo Real também possui as mesmas características de um Sistema de Tempo Real. Um SO de Tempo Real pode ser classificado em SO de Tempo Real crítico e não crítico. 20 21 O crítico não tolera perda de prazo e no não crítico, ocasionalmente, a perda de prazo é tolerada. Um SO de Tempo Real crítico pode ser classificado como Seguro em Caso de Falhas e Operacional em Caso de Falha. Seguro em Caso de Falha, o SO consegue atingir um ou mais estados possíveis caso ocorra falhas. Seguro em Caso de Falhas, o SO se degrada e fornece algum tipo de serviço mínimo. Um SO de Tempo Real também pode ser classificado como Hard Real-Time, Soft Real-Time, Real Real-Time e Firm Real-Time. Hard Real-Time leva em consideração o prazo para realizar uma tarefa. Um SO de Tempo Real deve fornecer serviços básicos, tais como, gerencia- mento de Processos, gerenciamento de memória, gerenciamento de arquivos e gerenciar todos os recursos físicos do Sistema Computacional. No gerenciamento de Processos, o SO deve fornecer mecanismos para criação, escalonamento, manipulação e destruição de Processos. Um Processo pode ser abstraído como um Programa em execução. Todavia, não é apenas um Programa em execução; é tudo o que um Programa precisa para rodar, tal como, memória para se executado, memória para armaze- namento de dados e pilha de instrução, entre outros; o termo Processo envolve tudo isso. Um Processo possui 3 estados, executando, pronto e bloqueado. Executando: o Processo está em execução na CPU; Pronto: significa que o Processo está apto para ser executado na CPU; todavia, está aguardando a sua vez chegar; Bloqueado: significa que o Processo está bloqueado esperando um evento externo acontecer. Quando um Processo está pronto, ele fica em fila de espera, esperando sua vez de ser executado na CPU. Um agendador é responsável por selecionar um Processo e colocá-lo na CPU para executar. Essa seleção é feita por um método de escalonamento. Normalmente, um Processo tem apenas uma linha de execução. Todavia, SO de Tempo Real fornece suporte a múltiplas linhas de execução em um Processo. Essas linhas de execução são chamadas de Threads. Habitualmente, Threads trabalham juntos para realizar uma atividade. Frequentemente, nessas atividades há necessidade das threads se comunicarem. Na comunicação entre threads, há necessidade de haver um mecanismo de sincronização. Outra funcionalidade que um SO deve oferecer é o gerenciamento de memória. Um Sistema computacional possui níveis de memórias, que são; registradores, memória cache, memória primária e memória secundária. Registradores são pequenos espaços de memória presentes nos processadores; a memória cache é um nível de memória dedicada ao processador; já a memória primária é utilizada para executar programas e a memória secundária é utilizada para armazenar arquivos. 21 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real Fornecer um gerenciamento de entrada e saída de dados é outra função que o SO de Tempo Real deve realizar. Dispositivos de entrada e saída de dados são utili- zados para permitir a comunicação entre o computador e o mundo exterior. Outra funcionalidade que um SO de Tempo Real deve ter é disponibilizar um mecanismo de gerência de arquivo. Arquivos possibilitam o armazenamento de informações que devem ser armaze- nadas ao longo do tempo e são constituídos de informações logicamente relaciona- das. O SO deve fornecer “chamadas de Sistema” para as aplicações manipularem os arquivos. Como visto nesta Unidade, um Sistema Operacional de Tempo Real é um Sis- tema Operacional Convencional que se preocupa em responder eventos pré-defi- nidos, respeitando prazos. Um Sistema Operacional de Tempo Real deve fornecer serviços que são muito importantes para aplicações de Tempo Real. No Mercado, há diversos tipos de Sistemas Operacionaisde Tempo Real, cada um com objetivos diferentes e aplicados em contextos diferentes. 22 23 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites Sistemas de Tempo Real – Parte 1 https://goo.gl/w3BRV1 Vídeos Sistema em Tempo Real - SO https://youtu.be/gaO9o-ZfMiU Sistemas de tempo real https://youtu.be/HTLZUCkdQbA Leitura Sistemas de Tempo Real https://goo.gl/4bcgvB 23 UNIDADE Programação de Sistemas Operacionais para Aplicações em Tempo Real Referências GALVIN, S. Sistemas Operacionais conceitos. 5.ed. São Paulo: Prentice Hall, 2000. ______. Sistemas Operacionais conceitos. 3.ed. São Paulo: Prentice Hall, 1998. SHAW, A. C. Sistemas E Software de Tempo Real, Porto Alegre: Bookman, 2003. TANENBAUM, A. S. Sistemas Operacionais Modernos. 2.ed. São Paulo: Pearson Prentice Hall, 2003. 24
Compartilhar