Monitores

Click here to load reader

download Monitores

of 12

description

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 . - PowerPoint PPT Presentation

Transcript of Monitores

Slide 1

Monitores

Semforos

Semforos so ferramentas importantes para implementar excluso mtua. Mas pode ser difcil utiliz-los corretamente em um programa. Esto sujeitos a erros de programao. Principalmente se necessrio definir vrias RCs. Como tornar o uso de semforos mais fcil/amigvel ?

Monitores

um construtor de linguagem de programao que oferece a funcionalidade dos semforos. Maior facilidade de utilizao por parte do programador. No tem em muitas linguagens de programao, mas em Java codificar as sees crticas como procedimentos do monitor pode tornar mais modular. Quando um processo precisa referenciar dados compartilhados chama um procedimento do monitor. Mdulos de linguagens de programao que fornecem uma funcionalidade equivalente aos semforo.Monitores

O monitor um conjunto de procedimentos, variveis e inicializao definidos dentro de um mdulo um processo entra no monitor, chamando um dos seus procedimentos. Como se fosse uma classe. Pode ser uma classe. A caracterstica mais importante do monitor a excluso mtua automtica entre os seus procedimentos. Basta codificar as regies crticas como procedimentos do monitor e se ir garantir a excluso mtua. Como semforos, s um processo pode estar executando no monitor de cada vez, sendo que outros processos que chamarem o monitor, ficaro bloqueados. Oferece, portanto, excluso mtua.Monitores Variveis compartilhadas podem ser protegidas, especificando-as atravs 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 { declarao de variveis compartilhadas

procedure P1 () { . . . } procedure P2 () { . . . } procedure Pn () { . . . } { cdigo de inicializao } }Leitores e EscritoresOutra situao que ocorre com frequncia em sistemas concorrentes o problema dos leitores/escritores. Neste caso, um conjunto de processos ou threads acessam de forma concorrente uma rea de memria comum (compartilhada), na qual podem fazer leituras ou escritas de valores. As leituras podem ser feitas simultaneamente, pois no interferem umas com as outras, mas as escritas tm de ser feitas com acesso exclusivo rea compartilhada, para evitar os erros de inconsistncia.

Observaes

Trs tipos de solues:

Priorizao dos leitores: sempre que um leitor quiser ler e no houver escritor escrevendo (pode haver escritor esperando), ele tem acesso fila. Nesta soluo, um escritor pode ter de esperar indefinidamente (inanio, oustarvation), poisnovos leitoressempre chegam.

Priorizao dos escritores: quando um escritor desejar escrever, mais nenhum leitor pode fazer leituras enquanto o escritor no for atendido. Nesta soluo, um leitor pode ter de esperar indefinidamente (inanio), pois novos escritores sempre chegam.

Prioridades iguais: no h risco de inanio, poisleitores e escritorestm as mesmas chances de acesso fila; pode haver uma queda de desempenho em relao s solues anteriores.

Leitores e Escritores

Escritores precisam de acesso exclusivo ao recurso, ou seja, sua regio crtica

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 excluso mtua. Outros processos ficam em fila de bloqueados se tentarem entrar no Monitor.

Monitores

Para implementar a sincronizao necessrio utilizar variveis de condio, s acessveis dentro do monitor

Variveis de condio so tipos de dados especiais dos monitores operados por duas instrues Wait e Signal (notify). Wait(C): suspende a execuo do processo, colocando-o em estado de espera associado a condio C Signal(C): permite que um processo bloqueado por wait(C) continue a sua execuo. Se existir mais de um processo/thread bloqueado, apenas um liberado para execuo.Monitores em Java Uma linguagem atual que oferece o uso de monitores Java.

Mtodos so colocados em estado de monitor atravs da palavra chave synchronized .

Mtodos que testam variveis de condio so: 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.