TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Sistemas de Tempo Real e Sistemas de Tempo Real Distribuídos

Por:   •  15/11/2015  •  Pesquisas Acadêmicas  •  3.406 Palavras (14 Páginas)  •  325 Visualizações

Página 1 de 14

Sistemas de Tempo Real e Sistemas de Tempo Real Distribuídos

Sistemas de tempo real são sistemas que trabalham sob restrições de tempo. Tipicamente, sistemas desse tipo consistem de subsistemas de controle (subsistemas de computadores) e subsistemas controlados (ambientes físicos) interagindo através de três operações: tiragem de amostras, processamento e respostas.

Primeiramente, o subsistema de controle tira amostras de dados do ambiente físico durante a sua operação normal. Em seguida, os dados são imediatamente processados, retornando uma resposta para o ambiente. Um exemplo seria um sistema que controla as pernas de um robô, que responde continuamente às mudanças do ambiente físico num determinado intervalo de tempo. Caso o controle das pernas do robô responda no tempo errado, ele cairá.

Sistemas de tempo real podem ser classificados em:

  • Hard Real Time: devem seguir as restrições de tempo para evitar conseqüências catastróficas e estão normalmente relacionados à vida das pessoas. Como exemplo, pode-se citar sistemas de controle de avião e sistemas de controle de processos químicos.
  • Soft Real Time: sistemas que podem continuar funcionalmente corretos mesmo que restrições temporais são sejam respeitadas. Exemplos são sistemas de aquisição de dados e sistemas de reserva de passagens aéreas.

Sistemas de tempo real distribuídos são aqueles que unem o conceito de sistemas distribuídos (processos distintos rodando em processadores ou computadores diferentes) e sistemas de tempo real (seguem restrições temporais). Em geral, STRDs elevam as características dos dois sistemas, de forma que a corretude deve adequar-se tanto aos requisitos distribuídos quanto aos requisitos de tempo real.

STRDs trazem como benefícios a concorrência de operações e a degradação. Desta forma, são utilizados com os objetivos de melhorar o tempo de resposta do sistema e aumentar a sua confiabilidade. Entretanto, esses benefícios têm um custo: o aumento de complexidade para o particionamento e alocação de tarefas e a comunicação entre processos.

A seguir, são descritas algumas das características de STRDs:

  • Operação contínua: para manter a operação normal dos ambientes físicos controlados e estar pronto para qualquer operação anormal.
  • Restrições de tempo severas: a corretude da execução do sistema é determinada não só pela velocidade de seus processos, mas também pelas restrições de tempo impostas pela execução do ambiente.
  • Interação assíncrona entre processos: processos assíncronos se comunicam pela da troca de mensagens através da comunicação entre os processos.
  • Atrasos de comunicação e race conditions: devido ao tráfico imprevisível da rede e a distância entre os nós de comunicação, os atrasos causados pela comunicação entre os processos são imprevisíveis. Além disso, quando dois processos compartilham o mesmo recurso, a race condition pode ocorrer.
  • Resultados não determinísticos: devido ao imprevísvel atraso de comunicação e da corrida por recursos entre processos, o comportamento da execução de STRDs são não determinística, podendo gerar resultados diferentes rodando com as mesmas entradas.
  • Estado global: cada processador pode ter seu próprio clock que roda separadamente do clock de outros processadores, tornando difícil de determinar o estado global do sistema.
  • Múltiplas threads de interação de processos: em contraste com um programa seqüencial, STRDs possuem múltiplas threads de controle.

Processos

Um processo é uma instância de um programa que é executado seqüencialmente. Enquanto um programa é apenas uma coleção de instruções, o processo é a atual execução destas instruções. Vários processos podem estar associados com o mesmo programa, cada um sendo executado independemente (multithreading – onde cada thread representa um processo), ou então simultaneamente (seqüencialmente) ou em paralelo.

Os modernos sistemas computacionais permitem que múltiplos programas e processos sejam carregados na memória ao mesmo tempo e, através de time-sharing, dão a impressão de que todos estão sendo executados ao mesmo tempo mesmo que exista apenas um processador. Semelhantemente, usando um sistema multithread, podemos executar simultaneamente processos paralelos do mesmo programa em múltiplos processadores.

Em geral, um processo consiste dos seguintes recursos.

  • Uma imagem do código de máquina do programa
  • Memória, normalmente uma região da memória virtual, que inclui o código executável, dados do processo, uma pilha(call stack) para manter o estado das sub-rotinas e outros eventos e um heap para armazenar os dados durante a execução do mesmo.
  • Uma descrição dos recursos alocados pelo processo
  • Dados de segurança, como o dono do processo e suas permissões.
  • Estado do contexto, como o conteúdo dos registradores, endereçamento de memória.

        O sistema operacional mantém os processos separados e aloca os recursos que eles precisam de modo a haver pouca interferência entre eles, causando falhas no sistema, como deadlocks e starvation que veremos mais adiante. O sistema operacional também é responsável por prover um modo de comunicação entre os processos, para que eles possam interagir de um modo seguro e previsível.

        Os processos possuem três possíveis estados durante seu ciclo, os quais são controlados pelo sistema: Pronto, quando o processo encontra-se apto a executar, esperando apenas sua “vez” no processador. No estado Bloqueado o processo necessita de algo externo, como um recurso que esteja ocupado e que ele necessite. Ele só sairá deste estado quando o sistema conseguir alocar o recurso para o processo, que então sairá para o estado Pronto. E finalmente, o estado Executando, que é quando o estado encontra-se utilizando o processador.

Threads

Threads são uma forma do programa se dividir em dois ou mais tarefas de execução simultâneas. A forma como threads são criadas e dividem seus recursos é bem diferente dos processos. Múltiplas threads podem ser executadas em paralelo em muitos sistemas. Esta multithreading geralmente ocorre pela divisão do tempo (time slicing), onde um processo alterna a execução entre diferente threads, ou seja, o processamento não é literalmente simultâneo já que o processador estará executando um único processo de cada vez. Esta troca acontece tão rápida que fica a impressão de simultaneidade para o usuário.

...

Baixar como (para membros premium)  txt (21.9 Kb)   pdf (206.8 Kb)   docx (594 Kb)  
Continuar por mais 13 páginas »
Disponível apenas no TrabalhosGratuitos.com