Video Capítulo 7: Sincronização de Processos. Silberschatz, Galvin and Gagne  2002 3.2 Video Operating System Concepts Assuntos n Cenário n O problema.

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)
Sistemas Operacionais Programação concorrente
Sistema Operacional Sincronização e Comunicação entre Processos
Sistemas operacionais
Arquitetura de Sistemas Operacionais
Sincronismo e Comunicação entre Processos
Sincronismo e Comunicação entre Processos
Arquitetura de Sistemas Operacionais
Monitores.
Conceitos de Programação Paralela - 2
Capítulo 6: Sincronização de Processos
Chapter 4: Threads.
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 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 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.
Walfredo Cirne Threads Walfredo Cirne
Sincronização de Processos (5)
Sincronização de Processos (4)
Sincronização de Processos (1)
Sincronização de Processos (3)
Sincronização de Processos (5) - Monitores -
Sincronização de Processos (6) - Troca de Mensagens -
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,
Threads sem Sincronização
Sincronização de Threads
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.
Capítulo 6: Sincronização de Processos
Capítulo 6: Sincronismo de processo
Capítulo 7: Deadlocks.
Processos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
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.
Transações Concorrentes
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
Sistemas Operacionais
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.
1 Design Pattern Double Checked Locking. 2 Design Pattern Apresenta soluções para problemas que ocorrem repetidamente em nosso ambiente computacional.
Métodos e Classes para Sincronização no JDK 5.0 Vitor Hugo Becker
©André Santos, Concorrência: Sincronização de fina granularidade André Santos CIn-UFPE.
Programação concorrente:
Processos Concorrentes
Redes e Sistemas Distribuídos II – Cód Prof. MSc. Ronnison Reges Vidal.
Silberschatz, Galvin and Gagne  Operating System Concepts Capítulo 7 – Sincronização entre processos Problemas inerentes à gestão de recursos.
Programação Concorrente
Comunicação Interprocesso Condições de Disputa (corrida)
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
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Transcrição da apresentação:

Video Capítulo 7: Sincronização de Processos

Silberschatz, Galvin and Gagne  Video Operating System Concepts Assuntos n Cenário n O problema da secção crítica n Hardware de sincronização n Semáfaro n Problemas clássicos de sincronização n Regiões críticas n Monitores

Silberschatz, Galvin and Gagne  Video Operating System Concepts Cenário n Acesso concorrente a dados F Inconsistência n Manutenção da consistência F Mecanismos para ordenar execução de processos concorrentes n Exemplo: produtor/consumidor F Usando todo o buffer F Adiciona-se uma variável “counter” que dá o número de elementos no buffer

Silberschatz, Galvin and Gagne  Video Operating System Concepts Armazenamento Limitado Dados compartilhados: #define BUFFER_SIZE 10 typedef struct {... } item; item buffer[BUFFER_SIZE]; int in = 0; int out = 0; int counter = 0;

Silberschatz, Galvin and Gagne  Video Operating System Concepts Armazenamento Limitado Processo Produtor: item nextProduced; while (1) { while (counter == BUFFER_SIZE) ; /* do nothing */ buffer[in] = nextProduced; in = (in + 1) % BUFFER_SIZE; counter++; }

Silberschatz, Galvin and Gagne  Video Operating System Concepts Armazenamento Limitado Processo Consumidor: item nextConsumed; while (1) { while (counter == 0) ; /* do nothing */ nextConsumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; counter--; }

Silberschatz, Galvin and Gagne  Video Operating System Concepts Armazenamento Limitado n As seguintes operações tem de ser atômicas counter++; counter--; n Uma operação é atômica se ela é executada inteiramente sem ser interrompida

Silberschatz, Galvin and Gagne  Video Operating System Concepts Armazenamento Limitado n Em linguagem de máquina, as operações são implementadas da seguinte forma counter--; reg2 = counter reg2 = reg2 – 1 counter = reg2 counter++; reg1 = counter reg1 = reg1 + 1 counter = reg1

Silberschatz, Galvin and Gagne  Video Operating System Concepts Armazenamento Limitado n Se ambos produtor e consumidor acessarem o contador simulaneamente, as instruções em linguagem de máquina podem se misturar n A ordem da mistura depende do escalonamento dos processos produtor e consumidor

Silberschatz, Galvin and Gagne  Video Operating System Concepts Armazenamento Limitado n Assuma que counter = 5 F Counter pode ser 4 ou 6 F Valor correto: 5 produtor: reg1 = counter (reg1 = 5) produtor: reg1 = reg1 +1 (reg1 = 6) consumidor:reg2 = counter (reg2 = 5) consumidor:reg2 = reg2 –1 (reg2 = 4) produtor: counter = reg1 (counter = 6) consumidor:counter = reg2 (counter = 4)

Silberschatz, Galvin and Gagne  Video Operating System Concepts Condições de Corrida n Resultado da operação depende da ordem de execução dos processos n Pare prevení-las, processos concorrentes tem de ser sincronizados

Silberschatz, Galvin and Gagne  Video Operating System Concepts O Problema da Secção Crítica n Processos competindo pelo uso dos mesmos dados n Em cada processo uma parte do código faz o acesso aos dados compartilhados F Secção crítica n Problema: F Apenas um processo pode executar sua secção crítica por vez

Silberschatz, Galvin and Gagne  Video Operating System Concepts Características da Solução n Exclusão mútua n Progresso n Espera limitada

Silberschatz, Galvin and Gagne  Video Operating System Concepts Exclusão Mútua n Se um processo está executando sua secção crítica, nenhum outro pode estar também dentro de sua secção crítica (mesmo se nas filas de espera ou prontos)

Silberschatz, Galvin and Gagne  Video Operating System Concepts Progresso n Se não há nenhum processo na secção crítica, um processo que deseje entrar em sua secção crítica não pode esperar indefinidamente

Silberschatz, Galvin and Gagne  Video Operating System Concepts Espera Limitada n Se um processo pediu para entrar em sua secção crítica, existe um limite do número de vezes que outros processos entrem em sua (própria) região crítica antes que este consiga fazê-lo

Silberschatz, Galvin and Gagne  Video Operating System Concepts Tentando Resolver... n Dois processos P0 e P1 n Estrutura dos processos do { entry section critical section exit section reminder section } while (1); n Processos compartilham variáveis para sincronização

Silberschatz, Galvin and Gagne  Video Operating System Concepts Algoritmo 1 n Variáveis compartilhadas F int turn; inicialmente turn = 0 F turn - i  P i entra na secção crítica n Processo P i do { while (turn != i) ; critical section turn = j; reminder section } while (1); n Satisfaz exclusão mútua, mas não progresso

Silberschatz, Galvin and Gagne  Video Operating System Concepts Algoritmo 2 n Variáveis compartilhadas F boolean flag[2]; inicialmente flag [0] = flag [1] = false. F flag [i] = true  P i pronto para entrar na região crítica

Silberschatz, Galvin and Gagne  Video Operating System Concepts Algoritmo 2 Processo P i do { flag[i] := true; while (flag[j]) ; critical section flag [i] = false; remainder section } while (1); n Satisfaz exclusão mútua, mas não progresso

Silberschatz, Galvin and Gagne  Video Operating System Concepts Algorítmo 3 n Combinação de 1 e 2 n Processo P i do { flag [i]:= true; turn = j; while (flag [j] and turn = j) ; critical section flag [i] = false; remainder section } while (1);

Silberschatz, Galvin and Gagne  Video Operating System Concepts Algorítmo da Padaria n Cada processo recebe um número n O menor número dá acesso à secção crítica n Variáveis compartilhadas boolean choosing[n]; int number[n];

Silberschatz, Galvin and Gagne  Video Operating System Concepts Algorítmo da Padaria do { choosing[i] = true; number[i] = max(number[0],number[1], …, number [n – 1])+1; choosing[i] = false; for (j = 0; j < n; j++) { while (choosing[j]) ; while ((number[j] != 0) && (number[j,j] < number[i,i])) ; } critical section number[i] = 0; remainder section } while (1);

Silberschatz, Galvin and Gagne  Video Operating System Concepts Hardware de Sincronização n Testar e modificar atômico boolean TestAndSet(boolean &target) { boolean rv = target; tqrget = true; return rv; }

Silberschatz, Galvin and Gagne  Video Operating System Concepts Exclusão mútua com TestAndSet n Variáveis compartilhadas boolean lock = false; n Processo P i do { while (TestAndSet(lock)) ; critical section lock = false; remainder section }

Silberschatz, Galvin and Gagne  Video Operating System Concepts Hardware de Sincronização n Troca atômica de duas variáveis void Swap(boolean &a, boolean &b) { boolean temp = a; a = b; b = temp; }

Silberschatz, Galvin and Gagne  Video Operating System Concepts Exclusão mútua com SWAP n Variáveis compartilhadas boolean lock; boolean waiting[n]; n Processo P i do { key = true; while (key == true) Swap(lock,key); critical section lock = false; remainder section }

Silberschatz, Galvin and Gagne  Video Operating System Concepts Construções para Sincronização n Semáfaros n Regiões Críticas n Monitores

Silberschatz, Galvin and Gagne  Video Operating System Concepts Semáfaros n Não requer busy-waiting n Semáfaro S é uma variável inteira n Duas operações atômicas wait (S): while S  0 do no-op; S--; signal (S): S++;

Silberschatz, Galvin and Gagne  Video Operating System Concepts Usando Semáfaros Para Região Crítica de Vários Processos n Variáveis compartilhadas semaphore mutex; //mutex = 1 n Processo Pi: do { wait(mutex); critical section signal(mutex); remainder section } while (1);

Silberschatz, Galvin and Gagne  Video Operating System Concepts Deadlock & Starvation n Deadlock – dois ou mais processos esperam indefinidamente por um evento que seria gerado por um deles n Starvation – bloqueio indefinido de um processo por outros

Silberschatz, Galvin and Gagne  Video Operating System Concepts Problemas Clássicos n Produtor-Consumidor com área limitada n Escritor-Leitor n Filósofos “Jantantes” n Todos podem ser resolvidos por qualquer um dos métodos de sincronia

Silberschatz, Galvin and Gagne  Video Operating System Concepts Região Crítica n Variáveis compartilhadas v: shared T n Variável acessível dentro da expressão region v when B do S n Enquanto S está sendo executado, nenhum outro processo pode acessar a variável v

Silberschatz, Galvin and Gagne  Video Operating System Concepts Região Crítica n Regiões com a mesma variável são excludentes no tempo n Ao executar o “region”, se a variável B é falsa o processo espera até que seja verdadeiro F Nenhum outro processo está dentro da região crítica

Silberschatz, Galvin and Gagne  Video Operating System Concepts Monitores n Permitem o compartilhamento seguro de tipos abstratos monitor monitor-name { shared variable declarations procedure body P1 (…) {... } procedure body P2 (…) {... } procedure body Pn (…) {... } { initialization code }

Silberschatz, Galvin and Gagne  Video Operating System Concepts Monitores n São definidas variáveis de condição condition x, y; n Estas só podem ser usadas nas operações wait e signal

Silberschatz, Galvin and Gagne  Video Operating System Concepts Visão Esquemática de um Monitor