A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Concorrência STRD. Roteiro Sistemas de Tempo Real Sistemas de Tempo Real Distribuidos Processos X Threads Concorrência Problemas."— Transcrição da apresentação:

1 Concorrência STRD

2 Roteiro Sistemas de Tempo Real Sistemas de Tempo Real Distribuidos Processos X Threads Concorrência Problemas

3 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.

4 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

5 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

6 Sistemas de Tempo Real Distribuídos Finalidade  Melhorar tempo de resposta  Aumentar confiabilidade Aumento de complexidade  Particionamento de tarefas  Comunicação entre processos

7 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

8 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

9 Diferenças ProcessosThreads Pode conter uma ou mais threadsTem 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

10 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

11 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

12 Busy waiting

13 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.

14 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

15 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.

16 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.

17 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

18 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

19 Monitores Monitores possuem variáveis de condição Um variável de condição possui duas operações: wait e notify Para 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

20 Sincronização de Processos Recursos do Sistema Processo

21 Corrupção de Dados Procedure echo(); Var out, in: character; begin input (in, keyboard); out := in; output (out, display) end.

22 Starvartion Recursos do Sistema P1 P2 P3

23 Deadlock P1 P2 R1 R2

24 Soluções Exclusão Mútua Busy Wait Semáforo

25 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).

26 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

27 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)

28 Selective Waiting  Validação da guarda:  Mais de uma verdadeira: escolha arbitrária.  Nenhuma verdadeira: erro de condição => declaração abortada.

29 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

30 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

31 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

32 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

33 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.


Carregar ppt "Concorrência STRD. Roteiro Sistemas de Tempo Real Sistemas de Tempo Real Distribuidos Processos X Threads Concorrência Problemas."

Apresentações semelhantes


Anúncios Google