video capítulo 7: sincronização de processos. silberschatz, galvin and gagne 2002 3.2 video...

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

Upload: luisa-bermudes

Post on 07-Apr-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Video

Capítulo 7: Sincronização de

Processos

Page 2: 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

Silberschatz, Galvin and Gagne 20023.2Operating System Concepts

Video

Assuntos

Cenário O problema da secção crítica Hardware de sincronização Semáfaro Problemas clássicos de sincronização Regiões críticas Monitores

Page 3: 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

Silberschatz, Galvin and Gagne 20023.3Operating System Concepts

Video

Cenário

Acesso concorrente a dadosInconsistência

Manutenção da consistênciaMecanismos para ordenar execução de

processos concorrentes Exemplo: produtor/consumidor

Usando todo o bufferAdiciona-se uma variável “counter” que

dá o número de elementos no buffer

Page 4: 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

Silberschatz, Galvin and Gagne 20023.4Operating System Concepts

Video

Armazenamento Limitado

Dados compartilhados:#define BUFFER_SIZE 10typedef struct {. . .

} item;item buffer[BUFFER_SIZE];int in = 0;int out = 0;int counter = 0;

Page 5: 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

Silberschatz, Galvin and Gagne 20023.5Operating System Concepts

Video

Armazenamento Limitado

Processo Produtor:item nextProduced;

while (1) {while (counter == BUFFER_SIZE); /* do nothing */buffer[in] = nextProduced;in = (in + 1) % BUFFER_SIZE;counter++;}

Page 6: 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

Silberschatz, Galvin and Gagne 20023.6Operating System Concepts

Video

Armazenamento Limitado

Processo Consumidor:item nextConsumed;

while (1) {while (counter == 0); /* do nothing */nextConsumed = buffer[out];out = (out + 1) % BUFFER_SIZE;counter--;}

Page 7: 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

Silberschatz, Galvin and Gagne 20023.7Operating System Concepts

Video

Armazenamento Limitado

As seguintes operações tem de ser atômicascounter++;counter--;

Uma operação é atômica se ela é executada inteiramente sem ser interrompida

Page 8: 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

Silberschatz, Galvin and Gagne 20023.8Operating System Concepts

Video

Armazenamento Limitado

Em linguagem de máquina, as operações são implementadas da seguinte forma

counter--;

reg2 = counterreg2 = reg2 – 1counter = reg2

counter++;

reg1 = counterreg1 = reg1 + 1counter = reg1

Page 9: 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

Silberschatz, Galvin and Gagne 20023.9Operating System Concepts

Video

Armazenamento Limitado

Se ambos produtor e consumidor acessarem o contador simulaneamente, as instruções em linguagem de máquina podem se misturar

A ordem da mistura depende do escalonamento dos processos produtor e consumidor

Page 10: 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

Silberschatz, Galvin and Gagne 20023.10Operating System Concepts

Video

Armazenamento Limitado

Assuma que counter = 5Counter pode ser 4 ou 6Valor 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)

Page 11: 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

Silberschatz, Galvin and Gagne 20023.11Operating System Concepts

Video

Condições de Corrida

Resultado da operação depende da ordem de execução dos processos

Pare prevení-las, processos concorrentes tem de ser sincronizados

Page 12: 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

Silberschatz, Galvin and Gagne 20023.12Operating System Concepts

Video

O Problema da Secção Crítica

Processos competindo pelo uso dos mesmos dados

Em cada processo uma parte do código faz o acesso aos dados compartilhadosSecção crítica

Problema:Apenas um processo pode executar sua

secção crítica por vez

Page 13: 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

Silberschatz, Galvin and Gagne 20023.13Operating System Concepts

Video

Características da Solução

Exclusão mútua Progresso Espera limitada

Page 14: 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

Silberschatz, Galvin and Gagne 20023.14Operating System Concepts

Video

Exclusão Mútua

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)

Page 15: 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

Silberschatz, Galvin and Gagne 20023.15Operating System Concepts

Video

Progresso

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

Page 16: 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

Silberschatz, Galvin and Gagne 20023.16Operating System Concepts

Video

Espera Limitada

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

Page 17: 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

Silberschatz, Galvin and Gagne 20023.17Operating System Concepts

Video

Tentando Resolver...

Dois processos P0 e P1 Estrutura dos processosdo {entry sectioncritical sectionexit sectionreminder section} while (1);

Processos compartilham variáveis para sincronização

Page 18: 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

Silberschatz, Galvin and Gagne 20023.18Operating System Concepts

Video

Algoritmo 1 Variáveis compartilhadas

int turn;inicialmente turn = 0

turn - i Pi entra na secção crítica Processo Pi

do {while (turn != i) ;critical sectionturn = j;reminder section} while (1);

Satisfaz exclusão mútua, mas não progresso

Page 19: 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

Silberschatz, Galvin and Gagne 20023.19Operating System Concepts

Video

Algoritmo 2

Variáveis compartilhadasboolean flag[2];

inicialmente flag [0] = flag [1] = false.

flag [i] = true Pi pronto para entrar na região crítica

Page 20: 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

Silberschatz, Galvin and Gagne 20023.20Operating System Concepts

Video

Algoritmo 2

Processo Pi

do {flag[i] := true;while (flag[j]) ;critical sectionflag [i] = false;remainder section} while (1);

Satisfaz exclusão mútua, mas não progresso

Page 21: 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

Silberschatz, Galvin and Gagne 20023.21Operating System Concepts

Video

Algorítmo 3

Combinação de 1 e 2 Processo Pido {flag [i]:= true;turn = j;while (flag [j] and turn = j) ;critical sectionflag [i] = false;remainder section} while (1);

Page 22: 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

Silberschatz, Galvin and Gagne 20023.22Operating System Concepts

Video

Algorítmo da Padaria

Cada processo recebe um número

O menor número dá acesso à secção crítica

Variáveis compartilhadas

boolean choosing[n];int number[n];

Page 23: 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

Silberschatz, Galvin and Gagne 20023.23Operating System Concepts

Video

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 sectionnumber[i] = 0;

remainder section} while (1);

Page 24: 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

Silberschatz, Galvin and Gagne 20023.24Operating System Concepts

Video

Hardware de Sincronização

Testar e modificar atômico

boolean TestAndSet(boolean &target) {boolean rv = target;tqrget = true;

return rv;}

Page 25: 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

Silberschatz, Galvin and Gagne 20023.25Operating System Concepts

Video

Exclusão mútua com TestAndSet

Variáveis compartilhadasboolean lock = false;

Processo Pi

do {while (TestAndSet(lock)) ;critical sectionlock = false;remainder section}

Page 26: 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

Silberschatz, Galvin and Gagne 20023.26Operating System Concepts

Video

Hardware de Sincronização

Troca atômica de duas variáveis

void Swap(boolean &a, boolean &b) {boolean temp = a;a = b;b = temp;}

Page 27: 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

Silberschatz, Galvin and Gagne 20023.27Operating System Concepts

Video

Exclusão mútua com SWAP Variáveis compartilhadasboolean lock;boolean waiting[n];

Processo Pi

do {key = true;while (key == true) Swap(lock,key);critical sectionlock = false;remainder section}

Page 28: 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

Silberschatz, Galvin and Gagne 20023.28Operating System Concepts

Video

Construções para Sincronização

Semáfaros Regiões Críticas Monitores

Page 29: 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

Silberschatz, Galvin and Gagne 20023.29Operating System Concepts

Video

Semáfaros

Não requer busy-waiting Semáfaro S é uma variável inteira Duas operações atômicas wait (S):

while S 0 do no-op;S--;

signal (S): S++;

Page 30: 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

Silberschatz, Galvin and Gagne 20023.30Operating System Concepts

Video

Usando Semáfaros Para Região Crítica de Vários

Processos Variáveis compartilhadassemaphore mutex; //mutex = 1

Processo Pi:

do { wait(mutex); critical section

signal(mutex); remainder section} while (1);

Page 31: 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

Silberschatz, Galvin and Gagne 20023.31Operating System Concepts

Video

Deadlock & Starvation

Deadlock – dois ou mais processos esperam indefinidamente por um evento que seria gerado por um deles

Starvation – bloqueio indefinido de um processo por outros

Page 32: 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

Silberschatz, Galvin and Gagne 20023.32Operating System Concepts

Video

Problemas Clássicos

Produtor-Consumidor com área limitada

Escritor-Leitor Filósofos “Jantantes”

Todos podem ser resolvidos por qualquer um dos métodos de sincronia

Page 33: 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

Silberschatz, Galvin and Gagne 20023.33Operating System Concepts

Video

Região Crítica

Variáveis compartilhadasv: shared T Variável acessível dentro da

expressãoregion v when B do S Enquanto S está sendo executado,

nenhum outro processo pode acessar a variável v

Page 34: 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

Silberschatz, Galvin and Gagne 20023.34Operating System Concepts

Video

Região Crítica

Regiões com a mesma variável são excludentes no tempo

Ao executar o “region”, se a variável B é falsa o processo espera até que seja verdadeiro Nenhum outro processo está dentro da

região crítica

Page 35: 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

Silberschatz, Galvin and Gagne 20023.35Operating System Concepts

Video

Monitores

Permitem o compartilhamento seguro de tipos abstratos

monitor monitor-name{shared variable declarationsprocedure body P1 (…) {. . .}procedure body P2 (…) {. . .} procedure body Pn (…) { . . .} {initialization code}}

Page 36: 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

Silberschatz, Galvin and Gagne 20023.36Operating System Concepts

Video

Monitores

São definidas variáveis de condição

condition x, y; Estas só podem ser usadas nas

operações wait e signal

Page 37: 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

Silberschatz, Galvin and Gagne 20023.37Operating System Concepts

Video

Visão Esquemática de um Monitor