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

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

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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

2 Silberschatz, Galvin and Gagne  2002 3.2 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

3 Silberschatz, Galvin and Gagne  2002 3.3 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

4 Silberschatz, Galvin and Gagne  2002 3.4 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;

5 Silberschatz, Galvin and Gagne  2002 3.5 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++; }

6 Silberschatz, Galvin and Gagne  2002 3.6 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--; }

7 Silberschatz, Galvin and Gagne  2002 3.7 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

8 Silberschatz, Galvin and Gagne  2002 3.8 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

9 Silberschatz, Galvin and Gagne  2002 3.9 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

10 Silberschatz, Galvin and Gagne  2002 3.10 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)

11 Silberschatz, Galvin and Gagne  2002 3.11 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

12 Silberschatz, Galvin and Gagne  2002 3.12 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

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

14 Silberschatz, Galvin and Gagne  2002 3.14 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)

15 Silberschatz, Galvin and Gagne  2002 3.15 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

16 Silberschatz, Galvin and Gagne  2002 3.16 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

17 Silberschatz, Galvin and Gagne  2002 3.17 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

18 Silberschatz, Galvin and Gagne  2002 3.18 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

19 Silberschatz, Galvin and Gagne  2002 3.19 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

20 Silberschatz, Galvin and Gagne  2002 3.20 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

21 Silberschatz, Galvin and Gagne  2002 3.21 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);

22 Silberschatz, Galvin and Gagne  2002 3.22 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];

23 Silberschatz, Galvin and Gagne  2002 3.23 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);

24 Silberschatz, Galvin and Gagne  2002 3.24 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; }

25 Silberschatz, Galvin and Gagne  2002 3.25 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 }

26 Silberschatz, Galvin and Gagne  2002 3.26 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; }

27 Silberschatz, Galvin and Gagne  2002 3.27 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 }

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

29 Silberschatz, Galvin and Gagne  2002 3.29 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++;

30 Silberschatz, Galvin and Gagne  2002 3.30 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);

31 Silberschatz, Galvin and Gagne  2002 3.31 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

32 Silberschatz, Galvin and Gagne  2002 3.32 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

33 Silberschatz, Galvin and Gagne  2002 3.33 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

34 Silberschatz, Galvin and Gagne  2002 3.34 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

35 Silberschatz, Galvin and Gagne  2002 3.35 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 }

36 Silberschatz, Galvin and Gagne  2002 3.36 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

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


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google