formato de vis o da estrutura
play

Formato de Viso da Estrutura Entry - PowerPoint PPT Presentation

Monitores (1) Sugeridos por Dijkstra (1971) e desenvolvidos por Hoare (1974) e Brinch Hansen (1975), so estruturas de sincronizao de alto nvel, que tm por objetivo impor Sincronizao de Processos (5) (forar) uma boa


  1. Monitores (1) � Sugeridos por Dijkstra (1971) e desenvolvidos por Hoare (1974) e Brinch Hansen (1975), são estruturas de sincronização de alto nível, que têm por objetivo impor Sincronização de Processos (5) (forçar) uma boa estruturação para programas concorrentes. � Motivação: Aula 14 – Monitores e Troca de Mensagens � Sistemas baseados em algoritmos de exclusão mútua ou semáforos estão sujeitos a erros de programação. Embora estes devam estar inseridos no código do processo, não existe nenhuma reivindicação formal da sua presença. Assim, erros e omissões (deliberadas ou não) podem existir e a exclusão mútua pode não ser atingida. Prof a . Patrícia D. Costa LPRM/DI/UFES 2 Sistemas Operacionais 2008/1 Monitores (2) Monitores (3) � São elementos de uma linguagem de programação que provêm � Um monitor pode ser visto como um bloco que funcionalidade equivalente a dos semáforos mas que são de contém internamente dados para serem controle mais fácil. compartilhados e procedimentos para manipular � Solução: � Tornar obrigatória a exclusão mútua. Uma maneira de se fazer isso é esses dados. colocar as seções críticas em uma área acessível somente a um processo de cada vez. � Os dados declarados dentro do monitor são � Idéia central: compartilhados por todos os processos, mas só � Em vez de codificar as seções críticas dentro de cada processo, podem ser acessados através dos procedimentos do podemos codificá-las como procedimentos ( procedure entries ) do monitor. Assim, quando um processo precisa referenciar dados monitor, isto é, a única maneira pela qual um compartilhados, ele simplesmente chama um procedimento do processo pode acessar os dados compartilhados é monitor. indiretamente, por meio das procedure entries . � Resultado: o código da seção crítica não é mais duplicado em cada processo. Prof a . Patrícia D. Costa LPRM/DI/UFES 3 Prof a . Patrícia D. Costa LPRM/DI/UFES 4 Sistemas Operacionais 2008/1 Sistemas Operacionais 2008/1

  2. Monitores (4) Variáveis de Condição (1) � As procedure entries são executadas de forma � Mecanismo usado por monitores para realizar mutuamente exclusiva. A forma de implementação do sincronização monitor já garante a exclusão mútua na manipulação � São variáveis que estão associadas a condições que dos seus dados internos. provocam a suspensão e a reativação de processos. � Apenas um processo pode “estar executando” em um Permitem, portanto, sincronizações do tipo sleep- monitor. Qualquer outro processo que tenha invocado o wakeup. monitor é bloqueado (esperando pela disponibilidade do � Só podem ser declaradas dentro do monitor e são monitor). sempre usadas como argumentos de dois comandos � Monitor é um conceito incluído em algumas linguagens especiais: de programação: � Wait (ou Delay ) � Módula, Pascal Concorrente, Java. � Signal (ou Continue ) Prof a . Patrícia D. Costa LPRM/DI/UFES Prof a . Patrícia D. Costa LPRM/DI/UFES 5 6 Sistemas Operacionais 2008/1 Sistemas Operacionais 2008/1 Variáveis de Condição (3) Variáveis de Condição (2) � Wait (condition) � O que acontece após um Signal (condition) ? � Faz com que o monitor suspenda o processo que fez a chamada � Hoare propôs deixar o processo Q recentemente acordado (suspende processo na condição). O monitor armazena as executar, bloqueando o processo P sinalizador . P deve informações sobre o processo suspenso em uma estrutura de esperar em uma fila pelo término da operação de monitor dados (fila) associada à variável de condição. Monitor é liberado realizada por Q . para outro processo. � Fila de Sinalizadores (pode ter prioridade) � Signal (condition) � Brinch Hansen propôs que o processo P conclua a operação � Faz com quer o monitor reative UM dos processos suspensos na em curso, uma vez que já estava em execução no monitor fila associada à variável de condição. Se um processo der um (i.e., Q deve esperar). Neste caso, a condição lógica pela qual signal e não tiver outra tarefa esperando na condição, o sinal é o processo Q estava esperando pode não ser mais verdadeira perdido. quando Q for reiniciado. � Simplificação: o comando signal só pode aparecer como a declaração final em um procedimento do monitor. Prof a . Patrícia D. Costa LPRM/DI/UFES 7 Prof a . Patrícia D. Costa LPRM/DI/UFES 8 Sistemas Operacionais 2008/1 Sistemas Operacionais 2008/1

  3. Exemplo (Abordagem de Hoare ) Exemplo (Abordagem de Hoare ) (cont.) P1 P2 Procedure A Condition 1 P5 P6 P1 P2 Procedure A Condition 1 P6 Dados Críticos Dados Críticos Procedure B Condition 2 Procedure B P5 Condition 2 P4 Procedure C P3 Sinalizadores P4 Procedure C Sinalizadores P3 Prof a . Patrícia D. Costa LPRM/DI/UFES Prof a . Patrícia D. Costa LPRM/DI/UFES 9 10 Sistemas Operacionais 2008/1 Sistemas Operacionais 2008/1 MONITOR <NomedoMonitor>; Declaração dos dados a serem compartilhados pelos processos (isto é, das variáveis globais acessíveis a todos procedimentos do monitor); Exemplos: X,Y: integer; C, D: condition; Entry Procedimento_1(Argumentos_do_Procedimento_1) Declaração das variáveis locais do Procedimento_1 Begin ... Código do Procedimento_1 (ex: X:=1; wait(C)) ... End Formato de Visão da Estrutura Entry Procedimento_N(Argumentos_do_Procedimento_N) um Monitor de um Monitor Declaração das variáveis locais do Procedimento_N Begin ... Código do Procedimento_N (ex: Y:=2; signal(C)) ... End BEGIN ... Iniciação das variáveis globais do Monitor ... END Prof a . Patrícia D. Costa LPRM/DI/UFES 11 Prof a . Patrícia D. Costa LPRM/DI/UFES 12 Sistemas Operacionais 2008/1 Sistemas Operacionais 2008/1

  4. Problema do Produtor- monitor ProducerConsumer Consumidor condition full, empty ; Processo P1 integer count ; //Processo Produtor Begin ... procedure producer ; Chamada a um procedimento do monitor procedure enter ; begin ... begin while true do End if count = N then wait (full) ; begin enter_item ; produce_item ; Processo P2 count := count + 1; ProducerConsumer.enter Begin if count = 1 then signal (empty) end Chamada de ... end ; Chamada a um procedimento do monitor end ; procedure remove ; ... procedimento begin End //Processo Consumidor do Monitor if count = 0 then wait (empty) ; procedure consumer ; Processo P3 remove_item ; begin Begin count := count - 1; while true do ... if count = N - 1 then signal (full) begin Chamada a um procedimento do monitor end ; ... End ProducerConsumer.remove ; count := 0; consume_item end monitor ; end end ; Prof a . Patrícia D. Costa LPRM/DI/UFES Prof a . Patrícia D. Costa LPRM/DI/UFES 13 14 Sistemas Operacionais 2008/1 Sistemas Operacionais 2008/1 Filósofos Glutões Filósofos Glutões (cont.) void pickup(int i) { void putdown(int i) { monitor dp state[i] = hungry; state[i] = thinking; { test[i]; // test left and right neighbors enum {thinking, hungry, eating} state[5]; if (state[i] != eating) test((i+4) % 5); condition self[5]; self[i].wait(); test((i+1) % 5); void pickup(int i) // prox. slide } } void putdown(int i) // prox. slide void test(int i) { void test(int i) // prox. slide if ( (state[i] == hungry) && void init() { (state[(i + 4) % 5] != eating) && for (int i = 0; i < 5; i++) (state[(i + 1) % 5] != eating)) { state[i] = thinking; state[i] = eating; } self[i].signal(); } } Prof a . Patrícia D. Costa LPRM/DI/UFES 15 Prof a . Patrícia D. Costa LPRM/DI/UFES } 16 Sistemas Operacionais 2008/1 Sistemas Operacionais 2008/1

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend