Capítulo 3. Programação Concorrente. Conteúdo. Objetivos. Recordando. Recordando. Objetivos de sistema operacional. DCA-108 Sistemas Operacionais

Documentos relacionados
DCA-108 Sistemas Operacionais

Sistemas Operacionais

Comunicação entre Processos

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

LabSO Gerência de Processos. Retrospectiva da aula passada... Na aula passada... Na aula passada...

Sistemas Operacionais: Sincronização entre processos

Fundamentos de Sistemas Operacionais

Sistemas Operacionais. Comunicação entre processos

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Sincronização e comunicação entre processos

Sistemas Operacionais Concorrência. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Operacionais. Prof. André Y. Kusumoto

Capítulo 2 Processos e Threads

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Sistemas Operacionais

Sistemas Operacionais

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

Sistemas Operacionais. Condição de corrida e Região crítica

Programação concorrente (processos e threads)

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Unidade III Gerência de Processos

Comunicação entre processos

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 28

Sincronização e Comunicação

Programação Concorrente

Concorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa

Sistemas Operacionais. Prof. André Y. Kusumoto

Sincronização e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex)

Sincronização de Processos (2)

Sistemas Operacionais Aula 6

Fundamentos de Sistemas Operacionais

Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização

Comunicação entre processos (2)

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

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

Sincronização de Processos (2)

Sincronização e Comunicação entre Processos

Programação Concorrente Locks

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

Exclusão Mútua (mutex)

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Programação de Sistemas em Tempo Real

Sistemas Distribuídos Aula 5

1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU?

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

Sistemas Operacionais

SSC0640 Sistemas Operacionais I

Sincronização e Comunicação de/entre Processos. Na Aula Anterior... Nesta Aula. Comunicação entre Processos. Pipes 07/09/2016

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos

Threads e Sincronização no Linux

PROCESSOS. Sistemas Operacionais. Vinícius Pádua

Tipos de Soluções (cont.)

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Sistemas Operacionais

Unidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica

Programação Orientada a Objetos. Concorrência

Arquitetura de Computadores Sistemas Operacionais II

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

Aula 2: Tipos de Sistemas Operacionais. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Sistemas Operacionais II

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Modelos de Programação de Tempo Real

Técnicas Avançadas de Programação

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 4. Comunicação e Sincronização de Processos

Notas da Aula 5 - Fundamentos de Sistemas Operacionais

Sincronização e Comunicação entre Processos. Sincronização e Comunicação Volnys Bernal 1. Agenda

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores

Sistemas Operacionais

Revisão Ultima aula [1/2]

Sistemas Distribuídos

Variância dos Tempos de Resposta

Mecanismos de Sincronização com Variáveis Compartilhadas

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 5. Implementação de Exclusão Mútua

Capítulo 3 Programação Concorrente. Nunca encontrei um homem tão ignorante que eu não pudesse aprender algo com ele.

Programação Concorrente. Prof. Hugo Vieira Neto

Sistemas Operacionais

Problema do Produtor -Consumidor. Solução por semáforos

UFRJ IM - DCC. Sistemas Operacionais I. Unidade II Concorrência

OO Engenharia Eletrônica

Sistemas Distribuídos Aula 7

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Questões de Múltipla escolha

Aula 7. Problemas Clássicos de Sincronização. 1.1 O Jantar dos Filósofos. 1.2 Leitores e Escritores. 1.3 O Barbeiro Dorminhoco

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Programação Concorrente e Paralela

Programação Concorrente e Paralela August 28, 2013

Atividades Práticas no Ensino Introdutório de Sistemas Operac

Sistemas Operacionais. Deadlock

Ferramentas para Programação em Processadores Multi-Core

SISTEMAS OPERACIONAIS

Modelos para Concorrência

Problema dos Leitores/Escritores

Sistemas Operacionais

Transcrição:

DCA-108 Sistemas Operacionais Capítulo 3 Luiz Affonso Guedes www.dca.ufrn.br/~affonso affonso@dca.ufrn.br Programação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização e escopo da programação concorrente. Abstrações e Paradigmas em Programação Tarefas, região crítica, sincronização, comunicação. Redes de Petri como ferramenta de modelagem de sistemas concorrentes. Propriedades de sistemas concorrentes Exclusão mútua, Starvation e DeadLock Primitivas de Programação Semáforos, monitores Memória compartilhada e troca de mensagens Problemas clássicos em programação concorrente Produtor-consumidor Leitores e escritores Jantar dos filósofos Objetivos Apresentar os principais conceitos e paradigmas associados com programação concorrente. Apresentar Redes de Petri como uma ferramenta de modelagem de sistemas concorrentes. Associar os paradigmas e problemas de programação concorrente com o escopo dos Sistemas Operacionais Luiz Affonso Guedes 3 Luiz Affonso Guedes 4 Recordando Cenário Atual dos Sistemas Operacionais Uma ou mais CPUs, controladores de devices conectedos via uma barramento comum, acessando memórias compartilhadas. Execução concorrente de CPUs e devices competindo por recursos. Recordando Objetivos de sistema operacional Executar programas de forma conveniente para o usuário. Gerenciar os recursos de software e hardware como um todo. Utilizar os recursos de hardware de forma eficiente e segura. Luiz Affonso Guedes 5 Luiz Affonso Guedes 6

Recordando Conseqüências da Multiprogramação Para se construir SO eficientes, há a necessidade Multiprogramação! Necessidade de controle e sincronização dos diversos programas. Necessidade de se criar conceitos e abstração novas Modelagem Implementação Necessidade de se estudar os paradigmas da Programação! Luiz Affonso Guedes 7 Luiz Affonso Guedes 8 Conceitos de Programação Paralelismo X Concorrência Programação Seqüencial: Programa com apenas um fluxo de execução. Programação : Possui dois ou mais fluxos de execução seqüenciais, que podem ser executados concorrentemente no tempo. Necessidade de comunicação para troca de informação e sincronização. Aumento da eficiência e da complexidade Paralelismo real só ocorre em máquinas multiprocessadas. Paralelismo aparente (concorrência) é um mecanismo de se executar simultaneamente M programas em N Processadores, quando M > N. N = 1, caso particular de monoprocessamento. Programação Distribuída é programação concorrente ou paralela???? E o modelo cliente-servidor? Luiz Affonso Guedes 9 Luiz Affonso Guedes 10 Programação Paradigma de programação que possibilita a implementação computacional de vários programas seqüenciais, que executam simultaneamente trocando informações e disputando recursos comuns. Programas cooperantes Quando podem afetar ou ser afetados entre si. Motivação para o Uso da Programação Aumento do desempenho Possibilidade de se implementar multiprogramação. Possibilidade de desenvolvimento de aplicações que possuem paralelismo intrínseco. SO Modernos, por exemplo. Sistema de Automação Industrial. Luiz Affonso Guedes 11 Luiz Affonso Guedes 12

Desvantagens da Programação Programas mais complexos Pois há, agora, vários fluxos de programas sendo executados concorrentemente. Esses fluxos podem interferir uns nos outros. Execução não determinística Na programação seqüencial, para um dado conjunto de entrada, o programa irá apresentar o mesmo conjunto de saída. Em programação concorrente, isto não é necessariamente verdade. Especificação das Tarefas Quantas tarefas concorrentes haverá no sistema? O quê cada uma fará? Como elas irão cooperar entre si? Comunicação entre tarefas. Quais recursos elas irão disputar? Necessidade de mecanismo de controle de acesso a recursos. Memória, cpu, devices, etc. Qual é a ordem que elas devem executar? Sincronismo entre tarefas. Luiz Affonso Guedes 13 Luiz Affonso Guedes 14 Primitivas de Paralelismo fork/joint (fork/wait) Primitivas de Paralelismo parbegin/parend Luiz Affonso Guedes 15 Luiz Affonso Guedes 16 Problema do Compartilhamento de Recursos Programação concorrente implica em compartilhamento de recursos Como manter o estado (dados) de cada tarefa (fluxo) coerente e correto mesmo quando diversos fluxos se interagem? Como garantir o acesso a um determinado recurso a todas as tarefas que necessitarem dele. Uso de CPU, por exemplo. Problema de Condição de Corrida Ocorre quando duas ou mais tarefas manipulam o mesmo conjunto de dados concorrentemente e o resultado depende da ordem em que os acessos são efetuados. Há a necessidade de um mecanismo de controle, senão o resultado pode ser imprevisível. Luiz Affonso Guedes 17 Luiz Affonso Guedes 18

Problema de Exclusão Mútua Requisitos Básicos Ocorre quando duas ou mais tarefas necessitam de recursos de forma exclusiva: CPU, impressora, dados, etc. esse recurso é modelado como uma região crítica. Eliminar problemas de corridas Criar um protocolo que as diversas tarefas possam cooperar sem afetar a consistência dos dados Controle de acesso a regiões críticas Implementação de mecanismos de exclusão mútua. Luiz Affonso Guedes 19 Luiz Affonso Guedes 20 Exclusão Mútua Idéia Básica Exclusão Mútua Idéia Básica Processo B Processo A Controle de entrada Controle de saída Região Crítica Controle de entrada Controle de saída Luiz Affonso Guedes 21 Luiz Affonso Guedes 22 Propriedades da Região Crítica Regra 1 Exclusão Mútua Duas ou mais tarefas não podem estar simultaneamente numa mesma região crítica. Regra 2 - Progressão Nenhuma tarefas fora da região crítica pode bloquear a execução de uma outra tarefa. Regra 3 Espera Limitada (Starvation) Nenhuma tarefa deve esperara infinitamente para entrar em uma região crítica. Regra 4 Não fazer considerações sobre o número de processadores e nem sobre suas velocidades relativas. Implementação Iniciais de Exclusão Mútua Desativação de Interrupção Uso de variáveis especiais de lock Alternância de execução Luiz Affonso Guedes 23 Luiz Affonso Guedes 24

Desabilitação de Interrupção Não há troca de tarefas com a ocorrência de interrupções de tempo ou de eventos externos. Desvantagens: Uma tarefa pode dominar os recursos. Não funciona em máquinas multiprocessadas, Tarefa 1 pois apenas a CPU que realiza a instrução é Controle afetada (violação da regra 4) Desabilita interupção Habilita interrupção Região Crítica de entrada Luiz Affonso Guedes 25 Variável do Tipo Lock Criação de uma variável especial compartilhada que pode assumir dois valores: Zero livre 1 ocupado Desvantagem: Apresenta condição de corrida.... while (lock == 1); lock = 1; Regiao_critica(); lock = 0;... Espera ocupada Se houver uma interrupção nesse ponto? Luiz Affonso Guedes 26 Alternância As tarefas se intercalam no acesso da região crítica. Desvantagem Teste contínuo do valor da variável Desperdício do processador: espera ocupada Se as tarefas não necessitares utilizar a região crítica com a mesma freqüência. Tarefa 2 Tarefa 2 while(true){ while(vez!= 0); Regiao_critica(); vez = 1; Regiao_nao_critica(); } while(true){ while(vez!= 1); Regiao_critica(); vez = 0; Regiao_nao_critica(); } Mecanismos Modernos de Exclusão Mútua Abordagens Iniciais Algorítmicas Combinações de variáveis do tipo lock e alternância (Dekker 965, Peterson 1981) Ineficientes Abordagens Modernas Primitivas implementadas na linguagem e suportadas pelo SO. Mais eficientes. Não há espera ocupada. Mutex, Semáforo e Monitores Luiz Affonso Guedes 27 Luiz Affonso Guedes 28 Mutex Variável compartilhada para controle de acesso a região crítica. CPU são projetadas levando-se em conta a possibilidade do uso de múltiplos processos. Inclusão de duas instruções assembly para leitura e escrita de posições de memória de forma atômica. Mutex Implementação com espera ocupada (busy waiting) Inversão de prioridade Solução ineficiente lock(flag); Regiao_critica(); unlock(flag); Regiao_nao_critica(); Operações atômicas Luiz Affonso Guedes 29 Luiz Affonso Guedes 30

Mutex Implementação Bloqueante Evita a espera ocupada Ao acessar um flag ocupado lock(flag), o processo é bloqueado. O processo só é desbloqueado quando o flag é desocupado. Implementação de duas primitivas Sleep bloqueia um processo a espera de uma sinalização. Wakeup sinaliza a liberação de um processo. Semárofos Mecanismo proposto por Dijkstra (1965) Semáforo é um tipo abstrato de dados: Um valor inteiro não negativo Uma fila FIFO de processos Há apenas duas operações atômicas: P(Proberem, Down, Testar) V(Verhogen, Up, Incrementar) Luiz Affonso Guedes 31 Luiz Affonso Guedes 32 Semáforos Operações Atômicas V(s) e P(s), sobre um semáforo s. Semáforo binário: s só assume 0 ou 1. Semáforo contador: s >= 0. Usando Semáforo para Exclusão Mútua A iniciação do semáforo s é efetuada em um dos processos Processo 1 Processo 2 s = 1; P(s); Regiao_critica(); V(s); Regiao_nao_critica(); P(s); Regiao_critica(); V(s); Regiao_nao_critica(); Luiz Affonso Guedes 33 Luiz Affonso Guedes 34 Semáforo X Mutex Monitores Mutex As operações lock() e unlock() devem ser executadas necessariamente pelo mesmo processo. Semáforos As primitivas V(s) e P(s) podem ser executadas por processos diferentes S pode assumir valor maior que 1. Gerência de recursos Mais geral que mutex Primitiva de alto nível para sincronização de processo. Bastante adequado para programação orientada a objetos. Somente um processo pode estar ativo dentro de um monitor de cada. Luiz Affonso Guedes 35 Luiz Affonso Guedes 36

Sintaxe de um Monitor Monitores X Semáforos Um monitor agrupar várias funções mutuamente excludentes. Monitores permitem estruturar melhor os programas Pode-se implementar Monitores através de Semáforos e vice-versa. Java inicialmente só implementava monitores. Atualmente também possui Semáforos Luiz Affonso Guedes 37 Luiz Affonso Guedes 38 Troca de Mensagem Primitivas Send e Receive Primitivas do tipo mutex, semáforos e monitores são baseadas no compartilhamento de variáveis Necessidade do compartilhamento de memória Sistemas distribuídos não existe memória comum Necessidade de outro paradigma de programação Troca de mensagens Primitivas Send(mensagem) e Receive(mensagem) RPC (Remote Procedure Call) Primitivas bloqueante ou não bloqueante Exemplos Sockets, MPI, etc. Luiz Affonso Guedes 39 Luiz Affonso Guedes 40 Remote Procedure Call (RPC) Primitiva baseada no paradigma de linguagens procedurais. DeadLock Travamento perpétuo: Problema inerente em sistemas concorrentes. Situação na qual um, ou mais processos, fica eternamente impedido de prosseguir sua execução devido ao fato de cada um estar aguardando acesso a recursos já alocados por outro processo. Luiz Affonso Guedes 41 Luiz Affonso Guedes 42

Condições para Haver Deadlock Ciclo de Desenvolvimento 1. Exclusão mútua Todo recurso ou está disponível ou está atribuído a um processo. 2. Segura/espera requisitos Modelagem modelo propriedades Análise Os processos que detém um recurso podem solicitar novos recursos. 3. Recurso não-preempitível modelo Um recurso concedido não pode ser retirado de um processo por outro. 4. Espera Circular Implementação código Existência de um ciclo de 2 ou mais processos, cada uma esperando por um recurso já adquirido (em uso) pelo próximo processo no ciclo. Luiz Affonso Guedes 43 Luiz Affonso Guedes 44 Ciclo de Desenvolvimento Programas s são mais complexos do que Programas Seqüenciais. Problema de deadlock Travamento perpétuo Problema de starvations Atraso por tempo indeterminado Existência de sincronismo e comunicação entre tarefas. Necessidade de ferramentas de Modelagem e Análise de Sistemas s; Redes de Petri é uma dessas ferramentas! Redes de Petri Rede de Petri é uma ferramenta matematicamente bem formulada, voltada à modelagem e à análise de sistemas a eventos discretos. Permite avaliar propriedades estruturais do sistema modelado. Sistemas a eventos discretos: sistemas de computação e sistemas de manufatura. Redes de Petri possuem representações gráfica e algébrica. Luiz Affonso Guedes 45 Luiz Affonso Guedes 46 Redes de Petri - Histórico Redes de Petri Ciclo de Desenvolvimento Proposta por Carl Adam Petri em 1962, em sua tese de doutorado Komminikation mit Automaten Comunicação assíncrona entre componentes de sistemas de computação. Extensão de Autômatos Finitos Na década de 1970, pesquisadores do MIT mostraram que Redes de Petri poderiam ser aplicadas para modelar e analisar sistemas com componentes concorrentes. requisitos Re-engenharia Sistema Legado Modelagem Rede de Petri Deadlocks? Starvations? Alcançabilidade? Geração Automática de Código Análise Código correto Rede de Petri correta Luiz Affonso Guedes 47 Luiz Affonso Guedes 48

Rede de Petri Comportamento Básico Redes de Petri Elementos Básicos Rede de Petri é um grafo orientado. Símbolo Componente Significado O grafo modela as pré-condições e póscondições dos eventos que podem ocorrer no sistema. Eventos mudam a configuração do sistema. Uma configuração representa o estado do sistema. Lugar Transição Arco Um estado, um recurso. Vértice do grafo Eventos instantâneos. Vértice do grafo Ligam lugares a transições e vice-versa. Aresta do grafo. Marcação Condição, quantificação de recursos (habitam nos lugares) Luiz Affonso Guedes 49 Luiz Affonso Guedes 50 Redes de Petri Regras Básicas Redes de Petri Regras Básicas 1. Arcos só podem ligar lugares a transições e vice-versa. 2. O disparo de uma transição muda a configuração de marcação da Rede. 3. 4. Rede de Petri Correta? Luiz Affonso Guedes 51 Luiz Affonso Guedes 52 Redes de Petri Regras Básicas 1. 2. 3. Uma transição está habilitada a disparar se todos os lugares que levam a ela (lugares de entrada) têm marcações em quantidade igual ou maior aos seus respectivos arcos de ligação. 4. O disparo de uma transição é instantâneo e provoca a retirada de marcações dos lugares de entrada (em quantidade igual a cardinalidade de seus arcos) e coloca marcações nos lugares de saída (em quantidade igual a cardinalidade de seus arcos). Luiz Affonso Guedes 53 Redes de Petri Regras Básicas Rede de Petri Seqüência de Transições T1 T2 T2 T3 T4 T1 Luiz Affonso Guedes 54

Redes de Petri Regras Básicas Rede de Petri Seqüência de Transições T2 T4 T3 T5 T1 Redes de Petri Exemplos de Uso Estado de uma máquina Estado de um processo Máquina de fazer Sanduíche Modelagem de trânsito Luiz Affonso Guedes 55 Luiz Affonso Guedes 56 Redes de Petri Exemplo Redes de Petri Padrões Modelagem da operação de uma CPU Condições a a CPU está esperando um processo ficar apto. b um processo ficou apto e está esperando ser executado. c a CPU está executando um processo. d o tempo do processo na CPU terminou. Eventos 1 um processo fica apto. 2 a CPU começa a executar um processo. 3 a CPU termina a execução do processo. 4 o processo é finalizado. Eventos Póscondições Précondições Evolução dos Processos Cooperação Competição Paralelismo Seqüência Decisões Loops Modelagem Causa-efeito Dependências Repetições Luiz Affonso Guedes 57 Luiz Affonso Guedes 58 Redes de Petri Padrões Seqüência Dependência de precedência linear de causaefeito. Seqüência de um processo de fabricação. Atividades seqüenciais. Redes de Petri Padrões Separação (fork) Evolução em paralelo. Fork de processos. Separação de produtos. início Evolução assíncrona fim Independência entre os disparos de transições. Há várias possíveis seqüências de disparo. evento fork Luiz Affonso Guedes 59 Luiz Affonso Guedes 60

Redes de Petri Padrões Junção (joint) Ponto de sincronização União de processos. Composição de produtos. Redes de Petri Padrões Decisão (If) Um caminho ou outro mutuamente excludentes. Controle de decisão. T1 evento joint T2 Decisão: T1 ou T2 Luiz Affonso Guedes 61 Luiz Affonso Guedes 62 Redes de Petri Padrões Repetição (Loop) Repetir até que Há realimentação. T1 Redes de Petri Padrões Árbitro Guarda região crítica. Implementa exclusão mútua. Mutex, semáforos, monitores. Região crítica T2 Repetir até que T2 ocorra antes de T1 Luiz Affonso Guedes 63 Luiz Affonso Guedes 64 Redes de Petri e Programação Problemas Clássicos de Programação Produtor X Consumidor, com Buffer unitário Produtor X Consumidor, com n Buffers Produtor X Consumidor, com Buffer circular Leitores X Escritores Jantar dos Filósofos (deadlock) Barbeiro Dorminhoco Redes de Petri e Programação Produtor X Consumidor, com Buffer unitário Processos consumidor e produtor acessam um buffer unitário de forma intercalada. Ciclo de produção, consumo, produção, consumo, Faça o modelo em Rede de Petri e depois o Pseudo-código. Há a necessidade de quantos semáforos na solução? Esse é um problema recorrente em Sistemas Operacionais. Produtor Buffer Consumidor Luiz Affonso Guedes 65 Luiz Affonso Guedes 66

Redes de Petri e Programação Redes de Petri e Programação Produtor X Consumidor, com n Buffers O buffer pode suportar até N dados. Produtor Buffer Consumidor Leitores X Escritores Há N processos leitores e K escritores. Os leitores não são bloqueantes, mas os escritores são. Problema típico de leitura e escrita. Faça o modelo em Rede de Petri do problema e depois o seu pseudo-código. Produtor X Consumidor, com Buffer circular. Produtor Consumidor Buffer Circular Luiz Affonso Guedes 67 Luiz Affonso Guedes 68 Redes de Petri e Programação Problema do Jantar dos Filósofos Há 5 filósofos e 5 garfos Cada filósofos possui 2 estados possíveis Comendo ou pensando. Para comer, há a necessidade de se pagar 2 garfos. Os garfos só podem ser pegos 1 de cada vez Faça o modelo em Rede de Petri e depois o pseudo-código livre de deadlock. A solução deve ser o menos restritiva possível. Redes de Petri e Programação Problema do Barbeiro Dorminhoco Há 5 cadeira numa dada barbearia. O barbeiro só pode cortar o cabelo de 1 cliente por vez. Se não houver cliente, o barbeiro fica dormindo. Ao chegar, se não houver lugar, o cliente vai embora. Se houver lugar ele fica esperando. Se não houver ninguém esperando, ele bate na porta do barbeiro. Faça o modelo em Rede de Petri do problema, com o seu respectivo pseudo-código. Luiz Affonso Guedes 69 Luiz Affonso Guedes 70