Monitores.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Distribuídos
Advertisements

Sistemas Operacionais Sincronismo e Comunicação entre processos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sincronização de Processos (1)
CONTROLE DE CONCORRÊNCIA
Sistemas Operacionais Gerência de Processador
Sincronismo e Comunicação entre Processos
Escalonamento Linux.
Arquitetura de Sistemas Operacionais
Monitores.
Conceitos de Programação Paralela - 2
Capítulo 6: Sincronização de Processos
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 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.
Walfredo Cirne Threads Walfredo Cirne
Sincronização de Processos (4)
Sincronização de Processos (3)
Sincronização de Processos (5) - Monitores -
Sincronização de Processos (2)
Sincronização e Comunicação entre Processos
Sistemas Operacionais I
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
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Unidade 1-1 Processos e Threads
Unidade 3 Controle de Concorrência
Concorrência em Java Threads em Java.
Unidade 2 - Parte 1 Programação Concorrente
Sistemas Distribuídos
Concorrência STRD.
Programação Orientada à Objetos
Sistemas Operacionais Prof. Galvez. PROBLEMA DE SEÇÃO CRITICA.
Processos.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Bruna Rafaella da Costa Moura Silvana dos Santos Lima
Programação com Threads
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.
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos.
Sistemas Concorrentes Capítulo 02 – Threads
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Sistemas Operacionais
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Faculdade Pernambucana - FAPE
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.
Métodos e Classes para Sincronização no JDK 5.0 Vitor Hugo Becker
Programação com Threads Threads Java como um Estudo de Caso.
Exclusão Mútua com Espera Ociosa (1)
Bruno Affonso Diego Chiquito Ruan Berté.   O código de Escalonamento no Windows é implementado no Kernel.  A rotina que desempenha as tarefas do Escalonador.
Processos Concorrentes
Capítulo 8 Threads.
Sistemas Operacionais Distribuídos
Programação Concorrente
Sistemas Operacionais
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
Comunicação Interprocesso Condições de Disputa (corrida)
Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha.
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Bruna Cavallero Martins Universidade Católica de Pelotas.
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
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Transcrição da apresentação:

Monitores

Semáforos  Semáforos são ferramentas importantes para implementar exclusão mútua.  Mas pode ser difícil utilizá-los corretamente em um programa.  Estão sujeitos a erros de programação.  Principalmente se necessário definir várias RCs.  Como tornar o uso de semáforos mais fácil/amigável ?

Monitores  É um construtor de linguagem de programação que oferece a funcionalidade dos semáforos.  Maior facilidade de utilização por parte do programador.  Não tem em muitas linguagens de programação, mas em Java codificar as seções críticas como procedimentos do monitor pode tornar mais modular.  Quando um processo precisa referenciar dados compartilhados chama um procedimento do monitor.  Módulos de linguagens de programação que fornecem uma funcionalidade equivalente aos semáforo.

Monitores  O monitor é um conjunto de procedimentos, variáveis e inicialização definidos dentro de um módulo um processo entra no “monitor”, chamando um dos seus procedimentos.  Como se fosse uma classe. Pode ser uma classe.  A característica mais importante do monitor é a exclusão mútua automática entre os seus procedimentos.  Basta codificar as regiões críticas como procedimentos do monitor e se irá garantir a exclusão mútua.  Como semáforos, só um processo pode estar executando no monitor de cada vez, sendo que outros processos que chamarem o monitor, ficarão bloqueados.  Oferece, portanto, exclusão mútua.

Monitores  Variáveis compartilhadas podem ser protegidas, especificando-as através do monitor.  Um processo pode ser bloqueado quando tentar entrar no monitor, mas este está sendo utilizado por outro.  Quando um processo termina de usar o monitor, tem que liberá-lo.

Monitores monitor monitor-name { declaração de variáveis compartilhadas procedure P1 (…) { . . . } procedure P2 (…) { . . . } procedure Pn (…) { { código de inicialização

Leitores e Escritores Outra situação que ocorre com frequência em sistemas concorrentes é o problema dos leitores/escritores. Neste caso, um conjunto de processos ou threads acessam de forma concorrente uma área de memória comum (compartilhada), na qual podem fazer leituras ou escritas de valores. As leituras podem ser feitas simultaneamente, pois não interferem umas com as outras, mas as escritas têm de ser feitas com acesso exclusivo à área compartilhada, para evitar os erros de inconsistência.

Observações Três tipos de soluções: Priorização dos leitores: sempre que um leitor quiser ler e não houver escritor escrevendo (pode haver escritor esperando), ele tem acesso à fila. Nesta solução, um escritor pode ter de esperar indefinidamente (inanição, ou starvation), pois novos leitores sempre chegam. Priorização dos escritores: quando um escritor desejar escrever, mais nenhum leitor pode fazer leituras enquanto o escritor não for atendido. Nesta solução, um leitor pode ter de esperar indefinidamente (inanição), pois novos escritores sempre chegam. Prioridades iguais: não há risco de inanição, pois leitores e escritores têm as mesmas chances de acesso à fila; pode haver uma queda de desempenho em relação às soluções anteriores.

Leitores e Escritores Escritores precisam de acesso exclusivo ao recurso, ou seja, sua região crítica Leitores podem acessar o recurso concorrentemente (time- sliced default do processador) com outros leitores.

Monitores  Uma thread/processo entra em um monitor, chamando qualquer um de seus procedimentos.   Um processo está em um monitor, quando está pronto ou executando.   Um ponto de entrada somente, para garantir exclusão mútua.   Outros processos ficam em fila de bloqueados se tentarem entrar no Monitor.

Monitores  Para implementar a sincronização é necessário utilizar variáveis de condição, só acessíveis dentro do monitor  Variáveis de condição são tipos de dados especiais dos monitores operados por duas instruções Wait e Signal (notify).  Wait(C): suspende a execução do processo, colocando-o em estado de espera associado a condição C  Signal(C): permite que um processo bloqueado por wait(C) continue a sua execução.  Se existir mais de um processo/thread bloqueado, apenas um é liberado para execução.

Monitores em Java   Uma linguagem atual que oferece o uso de monitores é Java.   Métodos são colocados em estado de monitor através da palavra chave synchronized .   Métodos que testam variáveis de condição são: wait(), notify(), and notifyAll() wait( ) – o respectivo thread vai para bloqueado (estado sleep) até que algum outra thread que entrou no monitor dê notify( ). notify( ) – acorda o primeiro thread que chamou um wait( ) no mesmo objeto. notifyAll( ) – acorda todos as threads que chamaram wait( ), sendo que a thread de maior prioridade executa primeiro.