Sincronização de Processos (3)

Slides:



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

Sistemas Operacionais
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 e organização de computadores
Sistemas operacionais
Técnicas para operações E/S
Escalonamento Linux.
Introdução à Computação - Jorge Macêdo
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Monitores.
Capítulo 6: Sincronização de Processos
Sistemas Operacionais II
Sistemas Operacionais
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 Aulas.
Walfredo Cirne Threads Walfredo Cirne
Sincronização de Processos (5)
Sincronização de Processos (4)
Processos Conceitos Básicos.
Concorrência Aula X.
Sincronização de Processos (1)
Introdução (3) Aula 3.
Sincronização de Processos (5) - Monitores -
Sincronização de Processos (6) - Troca de Mensagens -
Escalonamento Aula 7.
Sincronização de Processos (2)
Arquitetura de Computadores
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,
Monitores.
Unidade 3 Controle de Concorrência
Fundamentos da Arquitetura de Computadores
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Sistemas operacionais
Concorrência STRD.
Zeque - Grad. CC1 Sistemas Operacionais l Processos Plano de Apresentação  O Modelo de Processo  Definição  Características  Hierarquia  Implementação.
Pilhas Profa. Nádia Félix.
Processos.
Unidade Central De Processamento: Processador
Cap 2 – Processos e Threads
Problema do Produtor - Consumidor
SISTEMAS OPERACIONAIS I
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
Sistemas Distribuídos Aula 04 – Programação Multithread/Paralela
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.
©André Santos, Concorrência: Sincronização de fina granularidade André Santos CIn-UFPE.
Processos Concorrentes
Profa. Maria Augusta Constante Puget
Sistemas Operacionais 6º Semestre Aula 6 Prof. Carlos Vinícius SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA.
Comunicação Interprocesso Condições de Disputa (corrida)
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
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:

Sincronização de Processos (3) Aula 10

Prof. José Gonçalves - DI/UFES A Instrução TSL (1) TSL = “Test and Set Lock” Solução de hardware para o problema da exclusão mútua em ambiente com vários processadores. O processador que executa a TSL bloqueia o barramento de memória, impedindo que outras CPUs acessem a MP até que a instrução tenha terminado. A instrução TSL faz o seguinte: Lê o conteúdo de um endereço de memória (variável compartilhada “lock”, usada para proteger a R.C.) para um registrador e armazena um valor diferente de zero (normalmente 1) nesse endereço. Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

Prof. José Gonçalves - DI/UFES A Instrução TSL (2) Se lock = 0  R.C. livre; Se lock = 1  R.C. ocupada. (Lock é iniciada com o valor 0). A instrução TSL é executada de forma atômica. As operações de leitura e armazenamento da variável lock são garantidamente indivisíveis, sem interrupção. Nenhuma outra CPU pode acessar lock enquanto a instrução não tiver terminado. Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

Prof. José Gonçalves - DI/UFES A Instrução TSL (3) boolean testset (int lock) { if (lock == 0) { lock = 1; return true; } else { return false; Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

Prof. José Gonçalves - DI/UFES A Instrução TSL (4) enter_region: tsl register,lock cmp register,#0 jnz enter_region ret <critical region> leave_region: move lock,#0 Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

Prof. José Gonçalves - DI/UFES A Instrução TSL (5) Vantagens da TSL: Simplicidade de uso (embora sua implementação em hardware não seja trivial). Não dá aos processos de usuário o poder de desabilitar interrupções. Presente em quase todos os processadores atuais. Funciona em máquinas com vários processadores. Desvantagens: Espera ocupada (busy wait). Possibilidade de postergação infinita (“processo azarado” sempre pega a variável lock com o valor 1). Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

As Primitivas Sleep e Wakeup A idéia desta abordagem é bloquear a execução dos processos quando a eles não é permitido entrar em suas regiões críticas. Isto evita o desperdício de tempo de CPU, como nas soluções com busy wait. Sleep(): bloqueia o processo e espera por uma sinalização, isto é, suspende a execução do processo que fez a chamada até que um outro o acorde. Wakeup(): sinaliza (acorda) o processo anteriormente bloqueado por Sleep(). Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

O Problema do Produtor e Consumidor com Buffer Limitado Processo produtor gera dados e os coloca em um buffer de tamanho N. Processo consumidor retira os dados do buffer, na mesma ordem em que foram colocados, um de cada vez. Se o buffer está cheio, o produtor deve ser bloqueado, se está vazio, o consumidor é quem deve ser bloqueado. Apenas um único processo, produtor ou consumidor, pode acessar o buffer num certo instante. dado dado dado . . . 1 2 3 N Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

Uso de Sleep e Wakeup para o Problema do Produtor e Consumidor #define N 100 /* number of slots in the buffer */ int count = 0; /* number of items in the buffer */ void producer(void) { produce_item(); /* generate next item */ if (count == N) sleep(); /* if buffer is full, go to sleep */ enter_item(); /* put item in buffer */ count = count + 1; /* increment count of items in buffer*/ if (count == 1) wakeup(consumer); /* was buffer empty? */ } void consumer(void){ if (count == 0) sleep(); /* if buffer is empty, got to sleep */ remove_item(); /* take item out of buffer */ count = count - 1; /* decrement count of items in buffer*/ if (count == N-1) wakeup(producer); /* was buffer full? */ consume_item(); /* print item */ Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES

Uma Condição de Corrida ... Buffer está vazio. Consumidor testa o valor de count, que é zero, mas não tem tempo de executar sleep, pois o escalonador selecionou agora produtor. Este produz um item, insere-o no buffer e incrementa count. Como count = 1, produtor chama wakeup para acordar consumidor. O sinal não tem efeito (é perdido), pois o consumidor ainda não está logicamente adormecido. Consumidor ganha a CPU, executa sleep e vai dormir. Produtor ganha a CPU e, cedo ou tarde, encherá o buffer, indo também dormir. Ambos dormirão eternamente. Sist. Operacionais - 2003/2 Prof. José Gonçalves - DI/UFES