Concorrência STRD.

Slides:



Advertisements
Apresentações semelhantes
Semáforos Eduardo Nicola F. Zagari
Advertisements

Sistemas Operacionais
Sistemas Operacionais Sincronismo e Comunicação entre processos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sincronização de Processos (1)
Sincronismo e Comunicação entre Processos
Sincronismo e Comunicação entre Processos
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Monitores.
Conceitos de Programação Paralela - 2
Capítulo 7: Deadlocks.
Sistemas Operacionais II
Interação Cliente Servidor
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Aula.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Turmas.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Turmas.
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação SSC SISTEMAS OPERACIONAIS I Aulas.
Sistemas Distribuídos de Tempo Real
Sistemas Distribuídos
Walfredo Cirne Threads Walfredo Cirne
Sistemas Distribuídos
Sincronização de Processos (3)
Sincronização de Processos (5) - Monitores -
Sincronização de Processos (2)
Sincronização e Comunicação entre Processos
e comunicação entre Processos
Threads.
Sistemas Operacionais
Exclusão Mútua A solução mais simples para evitar os problemas de compartilhamento é impedir que dois ou mais processos estiver acessando determinado recurso,
Threads sem Sincronização
Monitores.
Concorrência em Java Threads em Java.
Unidade 1-1 Processos e Threads
Unidade 3 Controle de Concorrência
Tópicos em redes e sistemas distribuídos B Carlos Oberdan Rolim Ciência da Computação.
Concorrência entre Threads Java
Sistemas Distribuídos
Alexandre Mota/Augusto Sampaio {acm,
Capítulo 7: Deadlocks.
Processos.
Troca de Mensagens Assíncronas n Canais de comunicação são filas ilimitadas de mensagens. n Processos inserem elementos nessa flia através de comandos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Programação com Threads
Processos.
Semáforos n Variáveis compartilhadas são globais n Acesso a variáveis ocorre em procedimentos, mas podem estar espalhados pelo programa n Exige consulta.
Sistemas operacionais
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos.
Troca de Mensagens Programação concorrente
Sistemas Operacionais
Capítulo 4: Processos.
Engenharia de Sistemas Embarcados Aula 9: Salvo RTOS.
Programação com Threads Threads Java como um Estudo de Caso.
Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Programação concorrente:
Processos Concorrentes
Sistemas Operacionais Distribuídos
Deadlocks.
Programação Concorrente
Sistemas Operacionais
Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA.
Comunicação Interprocesso Condições de Disputa (corrida)
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
ProgramaçãoConcorrente Glêdson Elias
SINCRONIZAÇÃO E COMUNICAÇÃO ENTRE PROCESSOS PROF. HORACIO RIBEIRO Sistemas operacionais.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

Concorrência STRD

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

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 Soft 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 Threads -Um processo é uma forma abstrata de encarar um programa em execução. Threads -Linhas de execução dentro de um processo

Processos vs Threads 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.

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 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 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 Em sincronização, monitores é uma construção em mais alto nível em programação concorrente Quarto ponto – Exclusão mútua é obtida implicitamente.

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

Sincronização de Processos Recursos do Sistema Processo Processo Processo

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

Starvartion P1 Recursos do Sistema P3 P2

Deadlock P1 R1 R2 P2

Soluções Exclusão Mútua Busy Wait Semá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).

Selective Waiting 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 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.