Sie sind auf Seite 1von 9

Sistemas de Tempo Real e Sistemas de Tempo Real Distribudos Sistemas de tempo real so sistemas que trabalham sob restries

de tempo. Tipicamente, sistemas desse tipo consistem de subsistemas de controle (subsistemas de computadores) e subsistemas controlados (ambientes fsicos) interagindo atravs de trs operaes: tiragem de amostras, processamento e respostas. Primeiramente, o subsistema de controle tira amostras de dados do ambiente fsico durante a sua operao normal. Em seguida, os dados so imediatamente processados, retornando uma resposta para o ambiente. Um exemplo seria um sistema que controla as pernas de um rob, que responde continuamente s mudanas do ambiente fsico 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 restries de tempo para evitar conseqncias catastrficas e esto normalmente relacionados vida das pessoas. Como exemplo, pode-se citar sistemas de controle de avio e sistemas de controle de processos qumicos. Soft Real Time: sistemas que podem continuar funcionalmente corretos mesmo que restries temporais so sejam respeitadas. Exemplos so sistemas de aquisio de dados e sistemas de reserva de passagens areas.

Sistemas de tempo real distribudos so aqueles que unem o conceito de sistemas distribudos (processos distintos rodando em processadores ou computadores diferentes) e sistemas de tempo real (seguem restries temporais). Em geral, STRDs elevam as caractersticas dos dois sistemas, de forma que a corretude deve adequar-se tanto aos requisitos distribudos quanto aos requisitos de tempo real. STRDs trazem como benefcios a concorrncia de operaes e a degradao. Desta forma, so utilizados com os objetivos de melhorar o tempo de resposta do sistema e aumentar a sua confiabilidade. Entretanto, esses benefcios tm um custo: o aumento de complexidade para o particionamento e alocao de tarefas e a comunicao entre processos. A seguir, so descritas algumas das caractersticas de STRDs: Operao contnua: para manter a operao normal dos ambientes fsicos controlados e estar pronto para qualquer operao anormal. Restries de tempo severas: a corretude da execuo do sistema determinada no s pela velocidade de seus processos, mas tambm pelas restries de tempo impostas pela execuo do ambiente. Interao assncrona entre processos: processos assncronos se comunicam pela da troca de mensagens atravs da comunicao entre os processos. Atrasos de comunicao e race conditions: devido ao trfico imprevisvel da rede e a distncia entre os ns de comunicao, os atrasos causados pela comunicao entre os processos so imprevisveis. Alm disso, quando dois processos compartilham o mesmo recurso, a race condition pode ocorrer. Resultados no determinsticos: devido ao imprevsvel atraso de comunicao e da corrida por recursos entre processos, o comportamento da execuo de

STRDs so no determinstica, podendo gerar resultados diferentes rodando com as mesmas entradas. Estado global: cada processador pode ter seu prprio clock que roda separadamente do clock de outros processadores, tornando difcil de determinar o estado global do sistema. Mltiplas threads de interao de processos: em contraste com um programa seqencial, STRDs possuem mltiplas threads de controle.

Processos Um processo uma instncia de um programa que executado seqencialmente. Enquanto um programa apenas uma coleo de instrues, o processo a atual execuo destas instrues. Vrios processos podem estar associados com o mesmo programa, cada um sendo executado independemente (multithreading onde cada thread representa um processo), ou ento simultaneamente (seqencialmente) ou em paralelo. Os modernos sistemas computacionais permitem que mltiplos programas e processos sejam carregados na memria ao mesmo tempo e, atravs de time-sharing, do a impresso de que todos esto 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 mltiplos processadores. Em geral, um processo consiste dos seguintes recursos. Uma imagem do cdigo de mquina do programa Memria, normalmente uma regio da memria virtual, que inclui o cdigo executvel, 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 execuo do mesmo. Uma descrio dos recursos alocados pelo processo Dados de segurana, como o dono do processo e suas permisses. Estado do contexto, como o contedo dos registradores, endereamento de memria. O sistema operacional mantm os processos separados e aloca os recursos que eles precisam de modo a haver pouca interferncia entre eles, causando falhas no sistema, como deadlocks e starvation que veremos mais adiante. O sistema operacional tambm responsvel por prover um modo de comunicao entre os processos, para que eles possam interagir de um modo seguro e previsvel. Os processos possuem trs possveis estados durante seu ciclo, os quais so 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 ento sair para o estado Pronto. E finalmente, o estado Executando, que quando o estado encontra-se utilizando o processador. Threads Threads so uma forma do programa se dividir em dois ou mais tarefas de execuo simultneas. A forma como threads so criadas e dividem seus recursos bem diferente

dos processos. Mltiplas threads podem ser executadas em paralelo em muitos sistemas. Esta multithreading geralmente ocorre pela diviso do tempo (time slicing), onde um processo alterna a execuo entre diferente threads, ou seja, o processamento no literalmente simultneo j que o processador estar executando um nico processo de cada vez. Esta troca acontece to rpida que fica a impresso de simultaneidade para o usurio. Nos computadores com um nico processador, quando estamos realizando vrias atividades no mesmo, como escutar msica, utilizar o browser e demais tarefas, o que realmente acontece que o processador alterna a execuo destes processos, gastando um tempo em cada um deles. Nos computadores de multi-core, o que acontece a real execuo simultnea de diferentes thread nos diferentes processadores. Os sistemas operacionais modernos suportam ambos, time-sliced e threading com multi-processador, por meio de um organizador de processos. Excluso Mtua Algoritmos de excluso mtua so usados em programao concorrente para evitar que um recurso em comum seja utilizado simultaneamente, como variveis globais, por pedaos de cdigo chamados sees crticas. Exemplos destes recursos so flags, contadores e queues, usados para comunicao entre cdigos que so executados concorrentes, como uma aplicao e seus tratadores de interrupo. Estes problemas so realmente srios porque as threads podem ser paradas e recomeadas a qualquer hora. Para ilustrar, suponha uma parte de cdigo que est mudando um dado por vrios passos do programa, quando uma outra thread ativada por um imprevisvel evento, inicia sua execuo. Se esta segunda thread ler este dado, durante o processo de escrita, isto leva a um inconsistente e imprevisvel estado. Se a segunda thread tentar sobrescrever o dado, o estado possivelmente no poder ser recuperado. Estas sees crticas de cdigo acessando dados compartilhados devem ser protegidas, para que outros processos que tentem acessar estes dados no possam ser executados at o final de sua utilizao pelo processo dono. Existem diversas formas de forar, algumas delas apresentamos abaixo. Solues por Hardware Em sistemas com um nico processador, uma forma comum de alcanar a excluso mtua desabilitar as interrupes para o menor nmero possvel de instrues, para prevenir a corrupo dos dados compartilhados, a seo crtica. Isto ir prevenir a interrupo de um cdigo durante sua execuo na seo crtica. Nos computadores que os processadores compartilham a memria, um indivisvel testand-set de uma flag usado em um loop para esperar at que outro processador libere a flag. O test-and-set efetua as duas operaes sem entregar o barramento de memria para outro processador. Quando vai sair da seo crtica, a flag liberada. Isto chamado de busy-wait.

Solues por Software Trabalhando junto com as solues de hardware suportadas, algumas solues via software existentes utilizam busy-wait para alcanar seus objetivos. Por exemplo: Algoritmo de Dekker Semforos Monitores Os mais clssicos mtodos de excluso mtua tentam reduzir a latncia e as busy-waits utilizando-se de esperas e trocas de contextos. Alguns declaram que as medidas de desempenho indicam que estes algoritmos especiais gastam mais tempo do que ganham. Muitas formas de excluso mtua possuem seus efeitos colaterais. Por exemplo, semforos clssicos permitem deadlocks, no qual um processo recebe um semforo, outro processo recebe o outro e ambos permanecem no estado de bloqueado esperando que o outro semforo seja liberado. Outros efeitos colaterais conhecidos incluem, starvation no qual um processo nunca consegue obter recursos necessrios para sua execuo e inverso de prioridade no qual uma thread de maior prioridade espera por uma de menor prioridade. Apesar de muita pesquisa para a eliminao deste efeitos, ainda no foi descoberto um esquema perfeito. Busy-waiting: Utilizando-se, por exemplo, uma varivel compartilhada cujo valor pode ser manipulado (modificado e testado/test-and-set) atravs de uma primitiva indivisvel, cria-se um modo simples para a sincronizao de processos concorrentes. Um processo querendo entrar em uma regio crtica deve executar esta primitiva continuamente at conseguir permisso de entrada. So gastos ciclos de CPU enquanto se est testando a varivel, caracterizando este mtodo de sincronizao como um exemplo de busy-waiting, ou espera ocupada. Busy-waiting possui vrias desvantagens, como por exemplo, o gasto suprfluo de CPU. Alm disso, programas utilizando tais primitivas so difceis de entender, depurar e provar que esto corretos, em virtude de serem implementados em baixo nvel.

O processo que est no lao de espera executando swap ocupa o processador enquanto espera. Alm disso, existe a possibilidade de postergao indefinida, quando vrios processos esto esperando simultaneamente para ingressar na seo crtica e um processo muito azarado sempre perde na disputa de quem pega antes o valor 0 colocado na varivel lock. Semforos Um semforo uma estrutura de dados que consiste em um nmero inteiro e em uma fila que armazena descritores de tarefas. O conceito de semforos consiste na colocao de protees em torno do cdigo que acessa esta estrutura para oferecer acesso limitado aos dados. Em geral, a estrutura de dados uma fila, funcionando em regime de primeiro a entrar, primeiro a sair. O semforo tem uma varivel especial protegida (ou tipo abstrato de dados) que tem como funo o controle de acesso a recursos compartilhados (por exemplo, um espao de armazenamento) num ambiente multitarefa. A inveno desse tipo de varivel atribuda a Edsger Dijkstra, em 1965 e foi utilizado inicialmente no sistema operacional THEOS. O semforo um mecanismo simples que pode ser usado para oferecer sincronismo de tarefas. As operaes em tipos de semforos, muitas vezes no so diretas, elas so feitas por subprogramas de espera (wait) e de liberao (release). H um problema em semforos, o deadlock. Este ocorre quando um processo altera o valor do semforo e entra na regio crtica, mas ocorre uma falha na sada da regio porque ele foi danificado ou morto. Dijkstra introduziu a noo de semforo para impor a excluso mtua entre processos. uma construo de alto nvel tambm usada para sincronizar processos. Um semforo S uma varivel inteiro positiva sobre a qual os processos podem fazer duas operaes (P(S) e V(S)) primitivas indivisveis, ou seja, enquanto um processo estiver executando uma dessas duas operaes, nenhum outro processo pode executar outra operao sob o

mesmo semforo, devendo esperar que o primeiro processo encerre sua operao sob o semforo. Essa obrigao evita condies de disputa entre vrios processos. As operaes P e V tm sua origem das palavras parsen (passar) e vrygeren (liberar). Uma vez iniciada uma das operaes ela ir at o fim sem interrupes. Cada semforo tem uma fila associada a ele, onde processos bloqueados nele esperam. As principais operaes sobre semforos so: Inicializao: Recebe um valor inteiro indicando a quantidade de processos que podem acessar um determinado recurso. Operao P(S): Decrementa o valor do semforo. Se o semforo est com valor zerado, o processo posto para dormir. Operao V(S): Se o semforo estiver com o valor zerado e existir algum processo adormecido, um processo ser acordado. Caso contrrio, o valor do semforo incrementado.

Quando uma operao V(S) executada, um processo bloqueado retirado da fila para execuo. A disciplina de empilhamento da fila do semforo depende da implementao. Dependendo dos valores que o semforo pode ter, h dois tipos: Semforos Binrios (valor inicial 1): so inicializados pelo sistema e usados para criar excluso mtua no acesso a recursos com uma unidade apenas, porque apenas um processo pode passar pela operao P a cada vez. Semforos de Contagem (valor inicial normalmente maior do que 1): so utilizados para sincronizao e controle de alocao de recursos com mais de uma unidade. O valor inicial do semforo igual ao nmero de unidades do recurso. Monitores Monitor um alto nvel de construo para sincronizao em programao concorrente que pode ser visto como uma classe que pode ser usada em programas concorrentes. Como uma classe, um monitor tem mtodos e atributos para manipular dados. Vrias threads podem acessar um monitor ao mesmo tempo, logo ele possui suporte a mtodos que garantem a excluso mtua. Todo monitor tem uma fila associada com threads aguardando para entrar. Monitores possuem variveis de condio, as quais possuem duas operaes: wait e notify. Para uma varivel de condio x, qualquer thread, t1, que faa chamada para x.wait() bloqueada e colocada em uma fila associada com x. Quando outra thread, t2, fizer uma chamada x.notify(), se a fila associada com x no estiver vazia, uma thread removida da fila e inserida na fila de threads que esto eleitas para executar. Sincronizao de Processos Processos no foram projetados para trabalhar em conjunto. Seus resultados independem das aes de outros processos. Mas para gerar seus resultados eles necessitam de recursos do sitema operacional, como todos os outros processos. Em programao concorrente, no possvel determinar quando e em que ordem os eventos iro ocorrer. Com isso torna-se difcil compartilhar recursos globais e alocar recursos. Portanto necessrio um mecanismo para manter a consistncia dos dados.

Corrupo dos dados: ocorre quando dois processos tm acesso a uma mesma estrutura de dados. Precisa-se de um processo de sincronizao para que sempre o dado escritos/lidos sejam os corretos. Procedure echo(); Var out, in: character; begin input (in, keyboard); out := in; output (out, display) end. Como temos vrios processos em ao paralelamente (concorrncia), temos uma disputa pelos poucos recursos do sistema. Essa disputa pode levar a problemas de acesso indevido (excluso mtua), starvation e deadlock. A sincronizao dos processos serve para evitar essa disputa pelos recursos, tambm conhecida como Condio de Corrida (Race Condition). Tcnicas como Excluso Mtua, Busy Wait e semforo so utilizadas para garantir a sincronizao de forma correta. Essas tcnicas sero abordadas com mais detalhes ao longo do trabalho. Selective Waiting dado o nome de selective waiting a uma declarao que composta por um comando que um operador de mensagem (receive ou send) e outro(s) comando(s) que guardam esses operadores. Em algumas formas de passagem de mensagem, o receptor da mensagem deve esperar at que o processo especfico, ou canal, entregue a comunicao. Entretanto o processo receptor pode desejar esperar por algum processo de certo conjunto para cham-lo. O processo Servidor pode receber mensagens de requisio de um determinado nmero de clientes, sendo que a ordem com que essas requisies so feitas desconhecida para o servidor. Para lidar com esse cenrio, processos receptores so permitidos de esperar de foram seletiva por um nmero de possveis mensagens. Um dos modelos que permite esse tipo de escolha o de Djikstras guarded commands. Nesse modelo, um comando guardado executado apenas quando sua guarda tida como verdadeira. Uma guarda por si s no uma declarao, ela faz parte de um conjunto do comando guardado que composto pela(s) guarda(s) e o comando a ser executado. (1) if x <= y m := x x >= y m := y (2) if x <= then m := x; elseif x >= y m:= y; end if; preciso notar a diferena em relao ao determinismo desse tipo de construo. No primeiro caso observa-se uma escolha no-deterministica, onde o operador (Choice) representa uma escolha interna, ou seja, a escolha arbitrria, no

caso de x = y, as duas guardas so dadas como verdadeiras e o programa no pode determinar qual caminho ser escolhido. Nesse caso os dois caminhos surtem o mesmo efeito. O segundo caso mostra uma de escolha deterministica onde a declarao do if assegura de forma definida quais os caminhos o programa vai seguir em cada caso. Controle de Recursos Em Sistemas de Tempo Real concorrentes, deve-se prestar ateno em um ponto bastante importante que o controle dos seus recursos (dispositivos externos, arquivos, dados compartilhados, etc) . Esses recursos, podem ser requisitados por vrios processos que esto rodando concorrentemente (esses processos so chamados de processos competidores), por isso faz-se necessrio uma cordenao desse acesso, evitando assim situaes de deadlock e alterao indevida do estado desse recurso enquanto outro processo o estava utilizando. Gerenciamento e utilizao de Recursos Processos podem ter vrias classificaes, a mais til classific-los de dois tipos: Servers e Clients. O Server um processo que controla o acesso e encapsula recursos do sistema, j o Client so processos que iro utilizar os recursos disponveis. No que diz respeito ao gerenciamento de recursos, existem duas abordagens: a primeira delas a conditional wait, que diz que todo pedido de utilizao de um recurso aceito, porm se o recurso no est livre para ser usado o processo que o solicitou colocado em uma fila, a segunda avoidance onde os pedidos de utilizao de um recurso apenas aceito se ele est disponvel para ser usado. Os recursos podem ser utilizados nos modos Shared ou Exclusive, quando no modo Shared significa que processos competidores podem utilizar o recurso ao mesmo tempo, j no Exclusive apenas um processo pode utiliz-lo por vez. Deadlock Com muitos processos competindo por recursos o sistema pode ir para uma situao de deadlock. Deadlock se caracteriza em uma situao no sistema onde dois ou mais processos ficam impedidos de continuar suas execues, ou seja, ficam bloqueados. Para que o deadlock ocorra existem alguma condies: Condio de no-preempo: recursos j alocados a processos no podem ser tomados a fora. Eles precisam ser liberados explicitamente pelo processo que detm a sua posse; Condio de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que est com o prximo membro da cadeia. Condio de excluso mtua: cada recurso ou est alocado a exatamente um processo ou est disponvel; Condio de posse-e-espera: cada processo pode solicitar um recurso, ter esse recurso alocado para si e ficar bloqueado esperando por um outro recurso; A preveno de deadlock pode ser feita fazendo com que pelo menos uma das condies citadas acima nunca ocorra. De posse de informaes sobre os padres de alocao de recursos o deadlock pode ser evitado quando toda a vez que um recurso for solicitado por um processo o sistema checa se ele (o sistema)

ir entrar em um estado inseguro, siginificando que pode vir a ocorrer um deadlock. Outra maneira de tratar com deadlocks detect-lo e retomar o controle do sistema, a deteco requer que o sistema fique sabendo de quais recursos j foram alocados para qual processo e quais processos esto bloqueados esperando por recursos que j foram alocados. Detectando o deadlock a recuperao do sistema pode ser feita por: Desabilitando a excluso mtua de algum recurso Abortando um ou mais processos Preempo de alguns recursos de um ou mais processos que esto em deadlock

Das könnte Ihnen auch gefallen