Concorrência STRD. Roteiro Sistemas de Tempo Real Sistemas de Tempo Real Distribuidos Processos X...

Post on 19-Apr-2015

112 views 0 download

Transcript of Concorrência STRD. Roteiro Sistemas de Tempo Real Sistemas de Tempo Real Distribuidos Processos X...

Concorrência STRD

Roteiro

Sistemas de Tempo RealSistemas de Tempo Real DistribuidosProcessos X ThreadsConcorrênciaProblemas

Sistemas de Tempo Real

Trabalham sobre restrições temporais.Subsistemas de controle (computadores) e

subsistemas controlados (ambiente).Interação

Tirar amostras Processar Responder

Respeitando restrições de tempo.

Sistemas de Tempo Real

Hard Real Time Conseqüências catastróficas Ex.: Sistemas de controle de avião

Soft Real Time Sem maiores conseqüências Ex.: Ar-condicionado

Sistemas de Tempo Real Distribuídos

Sistemas distribuídos com restrições temporais.

Processos distintos em diferentes processadores trabalhando nos mesmos requisitos.

Benefícios Concorrência Degradação

Sistemas de Tempo Real Distribuídos

Finalidade Melhorar tempo de resposta Aumentar confiabilidade

Aumento de complexidade Particionamento de tarefas Comunicação entre processos

Sistemas de Tempo Real Distribuídos

Características Operação contínua Restrições de tempo severas Interação assíncrona entre processos Atrasos de comunicação e race conditions Resultados não deterministicos Estado global Múltiplas thread de interação de processos

Processos vs Threads

Processos -Um processo é uma forma abstrata de encarar

um programa em execução.

Threads -Linhas de execução dentro de um processo

Diferenças

Processos Threads

Pode conter uma ou mais threads Tem um único processo como dono

Cara comunicação entre processos(Troca de contexto)

Comunicação barata, usa memória do processo.

Seguro, não podem corromper outros processos

Não é seguro, pois outras threads podem usam a mesma memória do

processo.

Processos vs Threads

Exclusão Mútua

Técnica usada para evitar que dois processos ou threads tenham acesso simultaneamente a um recurso compartilhado

Atende: Único processo em região crítica Todo processo deve eventualmente conseguir

entrar em sua região crítica

Busy waiting

É o método de controle de sincronização onde uma variável compartilhada cujo valor pode ser manipulado (modificado e testado/test-and-set) através de uma primitiva indivisível, cria-se um modo simples para a sincronização de processos concorrentes

Busy waiting

Busy waiting

Busy-waiting possui várias desvantagens, como por exemplo, o gasto supérfluo de CPU.

Programas utilizando tais primitivas são difíceis de entender, depurar e provar que estão corretos, em virtude de serem implementados em baixo nível.

Semáforos são estruturas de dados usadas para resolver problemas de sincronização de tarefas.

Foi inventado por Edsger Dijkstra.

Tem como função o controle de acesso a recursos compartilhados num ambiente multitarefa.

Semáforos

Semáforos

Um semáforo S é uma variável inteiro positiva sobre a qual os processos podem fazer duas operações P(S) e V(S).

Operações de P e V são atômicas e indivisíveis.

Uso de fila para manter processos que esperam no semáforo.

Semáforos

Inicialização: Recebe um valor inteiro indicando a quantidade de processos que podem acessar um determinado recurso.

Operação P(S): Decrementa o valor do semáforo. Se o semáforo está com valor zerado, o processo é posto para dormir.

Operação V(S): Se o semáforo estiver com o valor zerado e existir algum processo adormecido, um processo será acordado. Caso contrário, o valor do semáforo é incrementado.

Tipos de Semáforos

Semáforos Binários Valor inicial é 1. Usado para criar exclusão mútua no acesso a recursos .

Semáforos de Contagem Valor inicial é normalmente maior do que 1. Utilizados para sincronização e controle de alocação de

recursos Valor inicial do semáforo é igual ao número de unidades do

recurso

Monitores

Monitor é um alto nível de construção para sincronização em programação concorrente

Encapsula estados - Um monitor pode ser visto como uma classe que pode ser usada em programas concorrentes

Como uma classe, um monitor tem métodos e atributos para manipular dados

Várias threads podem acessar um monitor ao mesmo tempo, logo ele possui suporte a métodos que garantem a exclusão mútua

Todo monitor tem uma fila associada com threads aguardando para entrar

Monitores

Monitores possuem variáveis de condiçãoUm variável de condição possui duas

operações: wait e notifyPara uma variável de condição x, qualquer

thread, t1, que faça 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 não estiver vazia, uma thread é removida da fila e inserida na fila de threads que estão eleitas para executar

Sincronização de Processos

Recursos do Sistema

Processo

Processo

Processo

Processo

Corrupção de Dados

Procedure echo();Var out, in: character;begin

input (in, keyboard);out := in;output (out, display)

end.

Starvartion

Recursos do Sistema

P1

P2

P3

Deadlock

P1

P2

R1R2

Soluções

Exclusão MútuaBusy WaitSemáforo

Selective Waiting

Se o programa “guardado” for um operador de mensagem (receive, send) então chama-mos a declaração de selective waiting(introduzido em CSP).

Passagem de mensagem: o receptor deve esperar até que o processo ou canal entregue a comunicação.

Problema: a ordem de chegada das mensagens é desconhecida para servidor

Selective Waiting

Selective Waiting

Djikstra’s guarded commands Executado quando a guarda é verdadeira Determinismo

Uso de guardas: Não-determinística (Choice) Uso de declarações definidas: Escolha determinística (if)

Selective Waiting

Validação da guarda: Mais de uma verdadeira: escolha arbitrária. Nenhuma verdadeira: erro de condição => declaração

abortada.

Utilização de Recursos

Controle dos recursos dispositivos externos, arquivos, dados compartilhados,

etc

Podem ser requisitados por vários processos que estão rodando concorrentemente

Evitar deadlocks e inconsistências

Gerenciamento e utilização desses Recursos

• Processos:– Servers: Processos que controla o acesso e encapsula

recursos do sistema– Clients: Processos que irão utilizar os recursos

• Conditional Wait• Avoidance• Utilização:

– Shared– Exclusive

Deadlock

Situação no sistema onde dois ou mais processos ficam impedidos de continuar suas execuções

Condições para que ocorra um deadlock: Condição de não-preempção Condição de espera circular Condição de exclusão mútua Condição de posse-e-espera

Deadlock

• A prevenção pode ser feita garantindo que pelo menos uma das condições citadas nunca ocorra

• Pode ser evitado fazendo com o que o sistema verifique as consequências da alocação de um recurso

• Recuperação do sistema:– Desabilitando a exclusão mútua de algum recurso– Abortando um ou mais processos– Preempção de alguns recursos de um ou mais

processos que estão em deadlock

Referências

Burns, Allan and Wellings, Andy. Real Time System and Their Programming Languages.

Tsai, Jeffrey and Yang, Steve. Monitoring and Debugging of Distributed Real Time Systems.