Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuísa Bermudes Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.