©André Santos, 1998-2000 Concorrência: Sincronização de fina granularidade André Santos CIn-UFPE.

Slides:



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

Sistemas Operacionais
Deadlocks Professora: Lúcia Drummond. Deadlocks Recursos: hardware ou informação Preemptivo Não preemptivo Uso do Recurso: 1. Pedido (Request ou Open)
Sistemas Operacionais Sincronismo e Comunicação entre processos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sincronização de Processos (1)
Estruturas de Repetição
Sistema Operacional Sincronização e Comunicação entre Processos
Arquitetura de Sistemas Operacionais
Sincronismo e Comunicação entre Processos
Sincronismo e Comunicação entre Processos
Gestão de transacções noções básicas modelo simples modelo elaborado
Introdução à Computação - Jorge Macêdo
Arquitetura de Sistemas Operacionais
Conceitos de Programação Paralela - 2
Capítulo 6: Sincronização de Processos
Capítulo 7: Deadlocks.
Sistemas Operacionais II
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 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 Aulas.
Sincronização de Processos (3) Exercícios - Semáforos
Sincronização de Processos (1)
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
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,
O Portal do Estudante de Computação
Threads sem Sincronização
Monitores.
Unidade 3 Controle de Concorrência
SVA e SVL Sidney Nogueira e André Didier. Roteiro Criar um algoritmo usando seções atômicas. Verificar as propriedades de seção crítica. – Usar diretiva.
PROGRAMAÇÃO I UNIDADE 4.
Concorrência STRD.
Alexandre Mota/Augusto Sampaio {acm,
©André Santos, 2000 Concorrência e Sincronização André Santos CIn-UFPE Concorrência.
Capítulo 6: Sincronização de Processos
Capítulo 7: Deadlocks.
Processos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009.
Bruna Rafaella da Costa Moura Silvana dos Santos Lima
SVA e SVL Sidney Nogueira e André Didier. Ambiente Versão mais nova de sva (sva2) – Descompactar versao mais nova ant run Java 1.6 FDR 2.91 (busca no.
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
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Sistemas Operacionais
Protocolo de Bloqueios
Capítulo 4: Processos.
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Faculdade Pernambucana - FAPE
©André Santos, Concorrência: Sincronização de fina granularidade II André Santos CIn-UFPE.
Implementação de Sincronização n Protocolos que usam busy waiting:  Difíceis de projetar, compreender e provar corretos  Complexos  Variáveis usadas.
Video Capítulo 7: Sincronização de Processos. Silberschatz, Galvin and Gagne  Video Operating System Concepts Assuntos n Cenário n O problema.
1 Design Pattern Double Checked Locking. 2 Design Pattern Apresenta soluções para problemas que ocorrem repetidamente em nosso ambiente computacional.
Gerenciamento de Processos
Programação concorrente:
Processos Concorrentes
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 08) Prof. Alessandro Bernardo.
Deadlocks Impasses Vinícius Pádua.
Interpretação do Teorema de Herbrand
ALGORITMOS Profº Antonio Carlos Marcelino de Paula 1.
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Sistemas Operacionais Sincronização e Comunicação Introdução Aplicações concorrentes (mecanismos de sincronização: variáveis compartilhadas e troca de.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Professor: Gustavo Wagner.
ProgramaçãoConcorrente Glêdson Elias
Transcrição da apresentação:

©André Santos, Concorrência: Sincronização de fina granularidade André Santos CIn-UFPE

©André Santos, Busy Waiting n Tipo de sincronização em que um processo continuamente verifica uma condição até que ela se torne verdadeira n Pode ser implementada com o conjunto de instruções de qualquer processador moderno n Ineficiente para multiprogramação

©André Santos, Busy waiting n Utilizado em dispositivos de hardware multiprocessados Pode ser usado para implementar await

©André Santos, O Problema da Exclusão Mútua (Região Crítica) n N processos executam um loop infinito:  Seção crítica  Seção não crítica n O programa deve satisfazer a propriedade de exclusão mútua  instruções das regiões críticas de dois ou mais processos não podem ser executadas ao mesmo tempo.

©André Santos, Exclusão Mútua para N processos n N processos executando loop infinito  Seção crítica  Seção não crítica n Programa deve satisfazer a propriedade de exclusão mútua  Em um dado instante no máximo um processo está executando sua região crítica.

©André Santos, solução: instruções adicionais n protocolo de entrada e de saída n P[i: 1..n]:: while (TRUE) { entry protocol critical section exit protocol non-critical section }

©André Santos, outras condições n um processo pode parar ou terminar fora da região crítica, sem interferir com outros processos. n Ausência de deadlock (ou livelock)  se dois ou mais processos tentam entrar em sua região crítica, um deles deve conseguir.

©André Santos, Outras condições n Ausência de espera desnecessária  Se um processo quer entrar em sua região crítica e os outros processos estão fora da sua região crítica ou terminaram, ele não será impedido de entrar n Entrada eventual (ausência de starvation)  se um processo quer entrar na região crítica, em algum momento ele entrará.

©André Santos, Tentativa 1: variável Turn n int Turn = 1; void P1() { void P2() { while (TRUE) { while (TRUE) { /* Non_Cr_S_1 */ /* Non_Cr_S_2 */ while (Turn != 1) {}; while (Turn != 2) {}; /* Crit_S_1 */ /* Crit_S_2 */ Turn = 2; Turn = 1; } } } }

©André Santos, Verificação da solução n A solução satisfaz o requisito de exclusão mútua  assuma que ela não satisfaz  contradição n A solução não entra em deadlock  assuma que o programa está em deadlock  contradição

©André Santos, Verificação da solução n Não há starvation  ao sair da região crítica cada processo passa a vez ao outro

©André Santos, Verificação da solução n A solução pode falhar se um processo parar fora da região crítica  se um processo pára em sua região não crítica, o outro não pode prosseguir. n Corrotinas n Execução “sincronizada”

©André Santos, Tentativa 2: 2 variáveis n int In1, In2 = FALSE; void P1 () { void P2 () { while (TRUE) while (TRUE) { Non_Cr_S_1; { Non_Cr_S_2; while (In2) {}; while (In1) {}; In1 = TRUE; In2 = TRUE; Crit_S_1; Crit_S_2; In1 = FALSE; In2 = FALSE; } } } }

©André Santos, Verificação da solução n P1 e P2 podem entrar na seção crítica simultaneamente  P1 verifica In2 e encontra In2 = FALSE  P2 verifica In1 e encontra In1 = FALSE  P1 seta In1 para TRUE  P2 seta In2 para TRUE  P1 entra na seção crítica  P2 entra na seção crítica

©André Santos, Tentativa 3: n Int In1, In2 = FALSE; void P1 () { void P2() { while (TRUE) while (TRUE) { Non_Cr_S_1; { Non_Cr_S_2; In1 = TRUE; In2 = TRUE; while (In2) {}; while (In1) {}; Crit_S_1; Crit_S_2; In1 = FALSE; In2 = FALSE; } } } }

©André Santos, Verificação da solução n A solução satisfaz a propriedade de exclusão mútua

©André Santos, Verificação da solução n A solução pode entrar em deadlock  P1 atribui TRUE a In1  P2 atribui TRUE a In2  P1 testa In2 e fica no loop  P2 testa In1 e fica no loop

©André Santos, Tentativa 4: passando a vez n Int In1, In2 = 1; void P1 () { void P2 () { while (TRUE) while (TRUE) { Non_Cr_S_1; { Non_Cr_S_2; In1 = TRUE; In2 = TRUE; while (In2) while (In1) { In1 = FALSE; { In2 = FALSE; In1 = TRUE; In2 = TRUE; }; }; Crit_S_1; Crit_S_2; In1 = FALSE; In2 = FALSE; } } } }

©André Santos, Verificação da solução n Um processo pode ser starved  P1 seta In1 para TRUE  P2 seta In2 para TRUE  P2 verifica In1 e seta In2 para FALSE  P1 faz um ciclo completo: verifica In2, entra na região crítica, seta In1 para FALSE, executa região não-crítica, seta In1 para TRUE  P2 seta In2 para TRUE...

©André Santos, Verificação da solução n A solução pode entrar em livelock n deadlock: nenhuma sequência resulta em sucesso n livelock: existe uma ou mais sequências que evita que os processos entrem na região crítica

©André Santos, Entretanto... n É possível inserir um delay entre as mudanças nas variáveis, para aumentar a possibilidade de context-switch ocorrer com variável alterada. n Uso prático: algorítimo semelhante é usado em redes Ethernet

©André Santos, Solução Ideal 1 n int In1, In2 = FALSE; void P1 () { void P2 () { while (TRUE) while (TRUE) { Non_Cr_S_1; { Non_Cr_S_2; In1 = TRUE;> In2 = TRUE;> Crit_S_1; Crit_S_2; In1 = FALSE; In2 = FALSE; } } } }

©André Santos, Solução Ideal 2 n int lock = FALSE; void P1 () { void P2 () { while (TRUE) while (TRUE) { Non_Cr_S_1; { Non_Cr_S_2; lock = TRUE;> Iock = TRUE;> Crit_S_1; Crit_S_2; lock = FALSE; lock = FALSE; } } } }

©André Santos, Exclusão mútua assistida por hardware n load e store em uma única instrução n test e set:  TS(lock, cc) = n Exchange(A,B)  =

©André Santos, Exclusão mútua com Test and Set n int lock = FALSE; void P1 () { void P2 () { int C1; int C2; while (TRUE) while (TRUE) { Non_Cr_S_1; { Non_Cr_S_2; TS (lock,C1); TS (lock,C2); while (C1) { while (C2) { TS (lock,C1); TS (lock,C2); }; }; Crit_S_1; Crit_S_2; lock = FALSE; lock = FALSE; } } } }

©André Santos, Vantagens n Funciona facilmente para vários processos.

©André Santos, Desvantagens n Escrita frequente nas variáveis n Todos os processos acessam a mesma variável lock.

©André Santos, Exclusão mútua com Exchange n int InCS = FALSE; void P1 () { void P2 () { int L1 = TRUE; int L2 = TRUE; while (TRUE) while (TRUE) { Non_Cr_S_1; { Non_Cr_S_2; Exchng (L1,InCS); Exchng (L2,InCS); while (L1) { while (L2) { Exchng (L1,InCS); Exchng (L2,InCS); }; }; Crit_S_1; Crit_S_2; Exchng (L1,InCS); Exchng (L2,InCS); } } } }