processo internamente dadospara serem



Documentos relacionados
Sincronização de Processos (4) Monitores

Sincronização de Processos (5) Troca de Mensagens

Programação Concorrente

(Aula 17) Threads em Java

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal

Revisão Ultima aula [1/2]

Monitores. Conceito Sistemas Operacionais II

Sistemas Operacionais

Sistemas Operacionais. Técnicas de Implementação de Exclusão Mútua. Aula VI Prof. Rosemary Silveira

Sistemas Operacionais

BC1518-Sistemas Operacionais. Prof. Marcelo Z. do Nascimento

Programação Concorrente em java - Exercícios Práticos Abril 2004

Sincronização. Cooperação entre Processos

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Universidade da Beira Interior. Sistemas Distribuídos

Programação Orientada a Objetos Threads

Computação Concorrente (MAB-117) Monitores

Disciplina: Sistemas Operacionais - CAFW-UFSM Professor: Roberto Franciscatto

Disciplina de Sistemas Distribuídos. Sincronização em SD. Prof. M.Sc. Alessandro Kraemer Kraemer

Fundamentos. Módulo 6: Sincronização de Processos. Bounded-Buffer (Cont.) Bounded-Buffer

1.6. Tratamento de Exceções

SISTEMAS DISTRIBUÍDOS

Sistemas Operacionais. Capítulo 7 Sincronização e Comunicação entre Processos

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação distribuída e paralela (C. Geyer) RPC 1

Comunicação em Sistemas Distribuídos

Sistemas Distribuídos


Threads e Concorrência em Java (Material de Apoio)

Monitores. Setembro de Monitores

UNIVERSIDADE. Sistemas Distribuídos

Java Threads. Introdução

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1

9 - Sincronização e Comunicação entre Processos

Sistemas Operacionais

Comunicação. Parte II

SISTEMAS OPERACIONAIS

Arquitetura de Sistemas Operacionais

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Sistemas distribuídos:comunicação

Processos e Threads (partes I e II)

Sobre a apresentação (About(

Sistemas Distribuídos

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

THREADS EM JAVA. George Gomes Cabral

ALua. asynchronous communication in Lua

Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Introdução a Java. Hélder Nunes

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado

Comunicação entre Processos

Sistemas Operacionais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Comunicação entre processos (2)

MC504 - Sistemas Operacionais

Sistemas Operacionais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Exclusão Mútua em Sistemas Distribuídos

Sistemas Distribuídos

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Fundamentos de Programaçã. ção Concorrente

Nomes e Endereçamento. Nomes e Endereçamento. Paradigmas em Sistemas Distribuídos. Paradigmas em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos

Sistemas Distribuídos. Aleardo Manacero Jr.

Arquitetura de Sistemas Operativos

Sistemas Distribuídos Modelo Cliente-Servidor

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Máquina de estados UNIX O

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Adriano Reine Bueno Rafael Barros Silva

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

Linguagens de Programação Aula 10

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

UFG - Instituto de Informática

Ciência de Computadores Sistemas Distribuídos e Móveis

Permite o acesso remoto a um computador;

EXEMPLO: Processo para atualização da hora Processo para monitoramento da necessidade de proteção de tela. Figura Exemplo

Transcrição:

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

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

Exemplo (Abordagem de Hoare) Exemplo (Abordagem de Hoare) (cont.) Profa. Patrícia D. CostaLPRM/DI/UFES 9 Sistemas Operacionais 2008/1 Profa. Patrícia D. CostaLPRM/DI/UFES Sistemas Operacionais 2008/1 P5 Visão Profa. Patrícia D. CostaLPRM/DI/UFES 11de um da Monitor Estrutura Formato Sistemas Operacionais 2008/1 Profa. Patrícia D. CostaLPRM/DI/UFES 12 um Sistemas Monitor de Operacionais 2008/1 P1 P2 P4 Procedure A Procedure B Procedure C P3 Dados Críticos 10 Condition 1 Condition 2 Sinalizadores P6 P1 P2 Procedure A Condition 1 Dados Críticos Procedure B P5 Condition 2 P4 Procedure C Sinalizadores 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 Código do Procedimento_1 (ex: X:=1; wait(c)) Entry Procedimento_N(Argumentos_do_Procedimento_N) Declaração das variáveis locais do Procedimento_N Código do Procedimento_N (ex: Y:=2; signal(c)) BEGIN Iniciação das variáveis globais do Monitor END P6 P3

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

Profa. Hansen, Monitores Java Patrícia existe. que checar waitingthreadentraráno Portanto, espera) indicação D. estão Baseada CostaLPRM/DI/UFES Isto mas executar a condição esperando um significa sem (para que signal garantias o no abordagem estado antes que monitor. processos éapenas devem os começar desejado monitor! processos sempre que uma uma a 17 Sistemas Operacionais 2008/1 Profa. to Java Monitores uses the synchronized em JavaJava keyword indicate Monitors that only thread at time can monitor the threads notifyall() executing monitor. when places A in thread scheduled. this or can any thread call A other thread wait() back synchronized that to the block has ready been and method queue leave sent of a to the signal the resume monitoruntil objectrepresenting is notguaranteed executioninside a notify() the to or the be Methods with that one Each that next thread executing inside the monitor compared to one that is blocked a call Patrícia Only must notifyall(). of has can Java D. inside back the is CostaLPRM/DI/UFES that been chosen wait() monitor's into a obtained are necessarily synchronized waiting This or the by static signal has the nameless ready synchronized whenever the can a JVM. one single longest queue, also method Finally, waiting one condition nameless be a the methods. is that thread synchronized. may the when thread first has variable one wait(), calls anonymous thread 18 a been Also, with woken notifyall() a corresponds notify(), waiting There to is up get condition notguaranteed with is is back the and called a lock a signal longest. into notifyall() notify(); variable a associated lock the Sistemas all move waiting monitor in that an be Operacionais the arbitrary which the called. with waiting object. threads is the not a Mais class that must be obtained when a static synchronized method iscalled. 2008/1 Próxima Linkprogconcorrente http://www.mcs.drexel.edu/~shartley/concpro Profa. Patrícia D. CostaLPRM/DI/UFES gjava/monitors.html Informações aula em java Implementando Considere Variáveis: nc: sc: 19 Sistemas Operacionais 2008/1 Profa. Patrícia Cadaentry seguinteforma implementa número Semáforo o monitor de processos Monitores X com = 1; apenas bloqueados Condição usando uma C; em filac; Semáforos D. CostaLPRM/DI/UFESprocedure v(x); P(x); a body fila de of processos Fseráimplementadada F; bloqueados. 20 Sistemas Operacionais 2008/1

Implementando As implementadasdaseguinteforma: wait operaçõeswaite nc Monitores usando Semáforos (cont.) Profa. Patrícia D. CostaLPRM/DI/UFES V(X); P(sC); (C): ++; signal signal podemser if 21{nC--; }(nc>0) V(sC); P(X); (C) Motivação: Passagem (Troca) Mensagens Sistemas Operacionais 2008/1 Profa. Solução: Semáforos Patrícia Novo no compartilhamento sistemas e algoritmos de exclusão mútua são baseados D. independentes memória onde baseada distribuídos, de memória de máquinas variáveis. física. Isso Entretanto, implica no em a paradigma sincronização em compartilhada (duas) (nós de novas programação de e comunicação uma entre 22 primitivas: rede), os vários ( messagepassage ), não formam entre sendereceive. existindo processos. processos unidades Sistemas Operacionais é Primitivas 2008/1 send(destination, Profa. Patrícia receive(source, Envia D. Recebe uma a mensagem armazenada em CostaLPRM/DI/UFES de qualquer caixa uma postal. fonte, mensagem message_buffer) para e armazena-a um processo destino ou para 23 de uma fonte em específica, Sistemas Operacionais ou Questões message_buffer. Uma cenário Sincronização ereçamento; 2008/1 Profa. Patrícia D. Formato Disciplinas série Projeto Etc. troca novas entre de os mensagens: questões processos; surgem no CostaLPRM/DI/UFESdas mensagens; filas; 24 Sistemas Operacionais 2008/1

Sincronização Blockingsend, Profa. Patrícia Nonblockingsend, Mecanismo (1) D. Emissor mensagem e receptor blockingreceive : são bloqueados até que a CostaLPRM/DI/UFES (encontro). continua seja conhecido entregue. blockingreceive : processando 25como rendezvous normalmente Nonblockingsend, Sincronização (p.ex., enviando novas mensagens). Esquema Receptor mensagem é bloqueado (ex: servidor). até a recepção Sistemas da Erros Operacionais 2008/1 Profa. Patrícia Nonblockingsend (2) Com sistema, mais usado. blockingreceive (cont.) D. de mensagens bloqueado (soluções: podem incluindo repetidamente, levar tempo a uma do situação consumindo processador onde um os recursos processo do gera CostaLPRM/DI/UFES determinar blockingreceive uso eternamente reconhecimento de a timeout, mensagem coloca o se processo no uso a mensagem 26programador foi de acknowledgment ). ou mais receptor não de enviada e recebida uma memória. a pode responsabilidade fonte, Sistemas se ficar (uso perder Operacionais etc.) Sincronização 2008/1 Nonblockingsend, Nenhuma Com esperar. (3) Profa. Patrícia D. CostaLPRM/DI/UFES bloqueado da ter executado nonblockingreceive parte eternamente, o ser envolvida receivecorrespondente, enviada nonblockingreceive na o receptor comunicação nunca precisa fica 27entretanto, após o processo existe ou Sistemas o receptor seja, perigo Operacionais a mensagem será perdida. ereçamento A (1) 2008/1 Profa. Patrícia D. CostaLPRM/DI/UFES identificação da Direto: pedidos processo destino. sendinclui um identificador específico do processos). (i) transmissor; (ii)usando primitiva requerendo, operação receivepode um impressão (ex: ou parâmetro a processo servidor priori, de a operar duas formas: 28quaisquer transmissor identificação ( source ) impressão, outros para após do que Sistemas retornar processo o término aceita Operacionais a 2008/1

ereçamento As Profa. Patrícia D. Tal CostaLPRM/DI/UFES processos transmissor intermediário as mensagens local é enviam conhecido para (filas) enviadas. (2) não Indireto: o receptor são que como enviadas temporariamente mas diretamente sim um local armazena do 29mailbox. para mailboxese Assim, outros retiram mensagens dos mailboxes. ereçamento Uma desacoplaro flexibilidade vantagem no transmissor uso endereçamento mensagens e receptor, indireto é uma conseguida. Sistemas grande é que, Operacionais ao transmissor Um-para-um: Muitos-para-um: 2008/1 Profa. Patrícia D. Um-para-muitos: o e receptor Indireto: (3) relacionamentos entre CostaLPRM/DI/UFES multicast). mailboxé geralmente permite útil para comunicação referenciado interação aplicações cliente-servidor. privativa. como port. Neste caso, 30de grupo (broadcast Sistemas Operacionais e2008/1 ereçamento Profa. Indireto Formato Patrícia D. CostaLPRM/DI/UFES 31 Sistemas Operacionais 2008/1 Profa. Patrícia Mensagemda D. CostaLPRM/DI/UFES 32 Sistemas Operacionais 2008/1

Exclusão Mútua usando Mensagens Profa. Patrícia D. CostaLPRM/DI/UFES 33 Sistemas Operacionais 2008/1 const int n = //numero de processos void P (i){ message msg; while (true){ receive(box, msg); //blocking //critical section send(box, msg); //nonblocking //resto } void main(){ create_mailbox(box); send(box, null); par (P(1), P(2), P(n)); } 34 Profa. Patrícia D. CostaLPRM/DI/UFES void consumer(void) { #define N 100 /* number of slots in the buffer */ void producer(void) { int item; message m; /* message buffer */ while (TRUE) { produce_item(&item); * generate someth. to put in buffer */ receive(consumer, &m); /* wait for an empty to arrive */ build_message(&m, item); /* construct a message to send */ send(consumer, &m); }} /* send item to consumer */ int item, i; message m; for (i = 0; i < N; i++) send(producer, &m); */Problema /* send N empties while (TRUE) { receive(producer, &m); /* get message containing item extract_item(&m, &item); /* extract item from message */ send(producer, &m); /* send back empty reply */ consume_item(item); }} /* do something with the item Produtor- Consumidor Troca Sistemas de Mensagens Operacionais com 2008/1