Problema dos Leitores/Escritores

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

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto

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

ANEXO II PARTILHA DO SIMPLES NACIONAL - INDÚSTRIA

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

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

CÁLCULO DIFERENCIAL E INTEGRAL (CDI) PROF. APARECIDO E. MORCELLI

Sistemas Distribuídos Aula 5

Sistemas Operacionais: Sincronização entre processos

Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ

Cardans de Trat ores

Semáforos. Gerenciamento de Recursos I

CURSO DE TECN OLOGI A DO VÁCUO

MATEMÁTICA DISCRETA E LÓGICA MATEMÁTICA PROF. APARECIDO EDILSON MORCELLI

Ar qu it e t u r a a de e Sist e m a s Ope r a cion a is Fa bia n o o Ut iy a m a Ca pít u lo o 8 Ge r ê n cia a do o Pr oce ssa dor

Semáforos. Gerenciamento de Recursos I

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

INE5645 PROGRAMAÇÃO PARALELA E DISTRIBUÍDA - Prova 1 12/05/2014 Aluno: Bosco

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Sistemas Operacionais

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Classif. Opção Nome Média Enem Situação 3 2 MIQUEIAS RAMOS DOS SANTOS 632,44 Pré-Selecionado em 2ª Chamada. Classif. Opção Nome Média Enem Situação

Programação Orientada a Objetos. Concorrência

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

Fundamentos de Sistemas Operacionais

O PROBLEMA DOS LEITORES E ESCRITORES LABORATORIO 1

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

Programação Concorrente Locks

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

Sincronização e Comunicação entre Processos

UNIVERSIDADE DO ESTADO DE SANTA CATARINA PLANO DE TRABALHO INDIVIDUAL ATIVIDADES EM DESENVOLVIMENTO ENSINO ORIENTAÇÃO

Podemos representar a relação existente entre as entidades de um relacionamento 1:1 através do conjunto abaixo:

Sincronização de Processos (2)

Resposta da questão. ÐR(s) = -45R/77. Resposta da questão. Resposta da questão. Resposta da questão R = R³ (Ë2) / 2. Resposta da questão.

Sistemas Distribuídos Aula 7

Comunicação entre processos

OO Engenharia Eletrônica

ILMO(A). SR.(A) PRESIDENTE DA JUNTA COMERCIAL DO ESTADO DE MINAS GERAIS

ILMO(A). SR.(A) PRESIDENTE DA JUNTA COMERCIAL DO ESTADO DE MINAS GERAIS

METODOLOGIA DE PROJETO

ILMO(A). SR.(A) PRESIDENTE DA JUNTA COMERCIAL DO ESTADO DE MINAS GERAIS

Cooperação entre Processos

Este é um manual de procedimentos básicos padronizados para os Formulários on-line da Coleta Seletiva.

MÓDULO 16 PLANEJAMENTO DE CONSTRUÇÃO, TESTES E DOCUMENTAÇÃO DO SISTEMA

Veja o gráfico a seguir. Ele mostra o histórico das vendas do produto.

Variância dos Tempos de Resposta

Sistemas Operacionais

RESOLUÇÃO Nº 19 / CONPRESP / 2012

Sistemas Operacionais

Ar qu it e t u r a a de e Sist e m a s Ope r a cion a is Fa bia n o o Ut iy a m a Ca pít u lo o 9 Ge r ê n cia a de e M e m ór ia

LEIC/LERC 2008/09 Primeiro Teste de Sistemas Operativos

Sincronização e Comunicação

Sistemas Operacionais

Sincronização. Cooperação entre Processos

Notas da Aula 5 - Fundamentos de Sistemas Operacionais

Dumping, Subsídios e Salvaguardas

Contato. professorluisleite.wordpress.com

AFRF Exercícios Tele-Transmitido. Prof. Sérgio Altenfelder Estatística - 01

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

Projeções Econômicas para 2008 (Final)

Ano / Turma: Data: / / Classificação: Observações: Espaço do aluno

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

Tipos de Soluções (cont.)

Comunicação entre processos

INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5)

MC504 Sistemas Operacionais MC514 Sistemas Operacionais: Teoria e

Gestão Emocional Uma abordagem cognitivo comportamental

SSC0640 Sistemas Operacionais I

UNIVERSIDADE DO ESTADO DE SANTA CATARINA PLANO DE TRABALHO INDIVIDUAL ATIVIDADES EM DESENVOLVIMENTO ENSINO ORIENTAÇÃO


Sincronização. Objectivos da aula de hoje

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

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

O PROGRAMA 5 S. Prof.ª Ghislaine Bonduelle, Drª UFPR

Questões de Provas de Períodos Anteriores

Comunicação entre Processos

Retrospectiva da aula passada... Escalonamento. Na aula passada... Comunicação entre processos (-- O jantar dos filósofos --)

SISTEMA DE ARQUIVOS DO SISTEMA OPERACIONAL

Sistemas Operacionais

Nilson do Rosário Costa 1, Ana Paula Coelho 2, Maria Thereza Fortes 3 e Vanina Matos 4

private void btapresentanomeactionperformed(java.awt.event.actionevent evt) {

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

Princípios Orçamentários

A nossa catedral, concebida na primeira metade do século passado, foi projetada para um número de pessoas hoje não mais compatível quando em grandes

Algoritmos de escalonamento

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

Capítulo 2 Processos e Threads

Arquitetura de Sistemas Operativos

As mudanças na política de financiamento da saúde a partir da segunda metade dos anos 90

TAREFAS COORDENAÇÃO ENTRE TAREFAS AULA 09 Sistemas Operacionais Gil Eduardo de Andrade

A T I V O CODIGO DESCRIÇÃO DA CONTA SALDO ANTERIOR DEBITOS CREDITOS SALDO ATUAL A T I V O , ,37 (22.026,09) 353.

SISTEMAS OPERACIONAIS

Trincos Lógicos: Implementações. Trincos lógicos: Propriedades

METODOLOGIA DE PROJETO

Transcrição:

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

Autores Eduardo André Mallmann 0905/96-9 João Paulo Reginatto 1530/96-0 Local Instituto de Informática UFRGS disciplina: Sistemas Operacionais II Versão V7, 2007-2

Versões janeiro de 2002 por C. Geyer setembro 2005 por C. Geyer

Essas transparências são baseadas na apostila do Prof. Simão Sirineo Toscani - Introdução aos Sistemas Operacionais - 1996

O problema de sincronização do tipo leitores/escritores surge quando vários processos acessam para leitura ou (exclusivo) vários processos acessam para leitura ou (exclusivo) escrita uma mesma estrutura de dados.

Leitor é aquele processo que acessa mas não altera a informação. Dessa forma notamos que, podemos ter vários processos leitores utilizando ao mesmo tempo a informação compartilhada uma vez que nenhum desses processos realizará alterações na mesma.

Por sua vez o processo escritor é aquele que acessa a informação e faz alterações na mesma. Este acesso deverá ser exclusivo a este processo já que o dado será alterado.

No exemplo que será mostrado a seguir usaremos como informação a ser compartilhada um arquivo global, acessado por vários processos.

Então a sincronização a ser implementada no acesso ao arquivo global deverá permitir que qualquer número de leitores tenham acesso a ele simultaneamente. Entretanto, qualquer processo escritor alterando o arquivo deverá ter acesso exclusivo ao mesmo.

Serão mostradas duas soluções para o problema A diferença entre elas é que a primeira dá prioridade aos leitores enquanto a segunda dá prioridade de acesso ao arquivo para os escritores. dar prioridade significa que em certas situações especiais de concorrência, somente os processos com prioridade conseguirão acessar o somente os processos com prioridade conseguirão acessar o arquivo

A primeira solução garante a prioridade de acesso aos leitores. Primeiro subproblema: como manter acesso exclusivo ao arquivo entre os leitores e qualquer escritor? entre os escritores?

Primeiro subproblema: como manter acesso exclusivo ao arquivo entre os leitores e qualquer escritor? entre os escritores? Solução: Um semáforo do tipo mutex Segundo subproblema: Como, tendo um mutex entre leitores e escritores, garantir que vários leitores possam acessar o arquivo concorrente? Ao menos nas situações usuais

Segundo subproblema: Como, tendo um mutex entre leitores e escritores, garantir que vários leitores possam acessar o arquivo concorrente? Solução (idéia): Somente um leitor bloqueia os escritores (e eventualmente bloqueia os outros leitores) Novo subproblema Qual leitor?

Novo subproblema Qual leitor? Solução O primeiro Como implementar o controle do primeiro leitor?

Como implementar o controle do primeiro leitor? Solução: Através de um contador de leitores O primeiro leitor executa a primitiva P(mutex) Compete com os escritores Os outros não executam P(mutex) Não competem Como e quando liberar o acesso aos escritores?

Como e quando liberar o acesso aos escritores? Solução: O último leitor libera o acesso aos escritores Executando a primitiva V(mutex) Se não houver último leitor (sempre há um Se não houver último leitor (sempre há um novo leitor concorrente)?

Se não houver último leitor (sempre há um novo leitor concorrente)? Solução Os escritores podem morrer de fome As operações sobre o contador de leitores necessitam de sincronização?

As operações sobre o contador de leitores necessitam de sincronização? Resposta: sim; mais um semáforo do tipo mutex; seção crítica somente entre leitores Quando um escritor estiver escrevendo, o que deve ocorrer com novos leitores que pedem leitura?

Quando um escritor estiver escrevendo, o que deve ocorrer com novos leitores que pedem leitura? Resposta: devem ficar bloqueados Onde? Mutex entre leitores e escritores? Ou mutex do contador de leitores? Ou um novo mutex?

Onde? Mutex entre leitores e escritores? Ou mutex do contador de leitores? Ou um novo mutex? Resposta: mutex do contador de leitores Observação: O primeiro leitor está em...?

Serão utilizadas as seguintes variáveis: duas variáveis semáforas: mutex e e, ambas inicializadas em 1. exclusão mútua uma variável inteira nl, inicializada em 0, que contará o número de processos leitores acessando o arquivo.

Abaixo mostramos o código que cada processo (leitor ou escritor) deve executar. P(mutex) nl:= nl+1 if nl = 1 then P(e) V(mutex) Semáforo mutex, e initial (1, 1) Integer nl initial 0 P(e) Escreve Lê V(e) P(mutex) nl := nl-1 if nl = 0 then V(e) V(mutex) Leitor Escritor

Agora o código apresentado será comentado: Procedimento do Leitor: P(mutex) nl := nl+1 if nl = 1 then P(e) V(mutex) esta chamada faz com que apenas um leitor altere a variável nl incrementa nl, número de leitores ativos se for o primeiro leitor a ter acesso, bloqueia o acesso por escritores libera o acesso de leitores a variável nl Depois de executar estas instruções o leitor tem acesso ao arquivo global. Observação: P(mutex) bloqueia novos leitores quando...

Após ler o arquivo o leitor executa estas instruções: P(mutex) novamente faz com que apenas um leitor altere a variável nl nl := nl-1 decrementa nl, número de leitores ativos if nl = 0 then V(e) se for o último leitor a deixaro o arquivo, libera o acesso por escritores V(mutex) libera o acesso de leitores a variável nl

No processo escritor são executadas as seguintes instruções P(e) faz com que o escritor tenha acesso exclusivo ao arquivo Escreve no arquivo V(e) libera o acesso ao arquivo

Questão A) na situação de 1 ou mais leitores lendo, onde escritores ficam bloqueados? Questão B) na situação de 1 escritor escrevendo, onde os leitores ficam bloqueados (considere 2 ou mais leitores)? Questão C) quando 1 escritor termina sua escrita e leitores e quando 1 escritor termina sua escrita e leitores e escritores estão esperando, quem prossegue?

A segunda solução garante a prioridade de acesso aos escritores. Requisitos Anteriores Múltiplos leitores concorrentes 1 único escritor escrevendo Novo Enquanto houver escritores em um lote de escritores concorrentes : leitores ficam bloqueados

Serão utilizadas as seguintes variáveis: uma variável inteira ne, inicializada em zero, para contar o número de processos que esperam para escrever no arquivo ne = 1 significa que um processo está escrevendo e nenhum está esperando duas variáveis semáforas mx e l, inicializadas duas variáveis semáforas mx e l, inicializadas em 1.

Semáforo mutex, e initial (1, 1) Integer nl initial 0 Integer ne initial 0 Semáforo mx, l initial (1,1) P(l) P(mutex) nl := nl+1 if nl = 1 then P(e) V(mutex) V(l) Lê P(mutex) nl := nl-1 if nl = 0 then V(e) V(mutex) Escritor Leitor P(mx) ne := ne+1 if ne = 1 then P(l) V(mx) P(e) V(e) Escreve P(mx) ne := ne-1 if ne = 0 then V(l) V(mx)

Leitor (1): P(l) tenta obter permissão de leitor P(mutex) restringe acesso à variável nl nl := nl+1 incrementa número de leitores ativos if nl = 1 then P(e) se for primeiro leitor ativo bloqueia escritores V(mutex) libera acesso a nl V(l) libera semáforo leitor Depois de executar estas instruções o processo lê o arquivo

Leitor (2): Depois da leitura do arquivo são estas instruções que o processo executa: P(mutex) faz com que apenas um leitor altere a variável nl nl := nl-1 decrementa nl, número de leitores ativos if nl = 0 then V(e) se for o último leitor a terminar a leitura, libera o acesso por escritores V(mutex) libera o acesso de leitores a variável nl Como vemos esta parte do código é idêntica ao outro algoritmo.

Escritor : P(mx) V(mx) P(e) faz com que apenas um escritor altere a variável ne ne := ne+1 incrementa número de escritores na fila de espera if ne = 1 then P(l) se for o primeiro escritor, fecha semáforo de leitores libera semáforo da variável ne fecha semáforo de escritor Altera arquivo V(e) abre semáforo de escrita P(mx) fecha semáforo para alteração de ne ne := ne-1 decrementa número de escritores na fila if ne = 0 then V(l) se processo estava escrevendo, libera leitura V(mx) libera acesso a ne

Como podemos ver o raciocínio utilizado nesta solução é o mesmo usado na solução anterior, agora tratando de bloquear os processos leitores. Como evitar que leitores continuamente concorrentes bloqueiem todos os escritores? Solução: Um novo semáforo l, inicializado em 1 (aberto) Fechado (P(l)) pelo primeiro escritor de um lote de escritores concorrentes Aberto (V(l)) pelo último escritor do lote Esse semáforo, quando fechado, bloqueia todos os leitores

Note ainda que esta solução não garante prioridade absoluta para os escritores. Consideremos a situação de ne=1: lote de um (1) único escritor com 5 leitores na fila do semáforo l. Após a escrita o último escritor do lote muda ne para 0, e então surge um novo escritor (novo lote) Neste caso, o novo escritor deverá esperar todos os leitores acabarem a leitura para poder acessar o arquivo.

Então, para os escritores obterem prioridade total para os escritores poderíamos criar um semáforo mz inicializado em 1 e colocar operações P(mz) e V(mz), respectivamente antes de P(r) e depois de V(r), no código dos leitores. Desta maneira a fila do semáforo r passará a ter no máximo um processo leitor.

Aqui acaba este mini-curso. Nele foi apresentado o problema dos leitores/escritores assim como duas soluções para este problema utilizando o conceito de semáforos. Esperamos que esses conceitos lhe tenham sido úteis.

Exercício A) Escreva o código da 3a solução sugerida nos últimos slides (mais o semáforo mz) Analise seu comportamento; por exemplo, é possível haver vários leitores concorrentes? Justifique. Exercício B) Porque é necessário manter o semáforo e sobre os escritores com contador associado (nl) na solução prioridade aos escritores?

Problema dos leitores/escritores Caracterize os leitores Caracterize os escritores Qual a diferença na questão de acesso a recurso comum com relação ao problema dos produtores/consumidores? Quais as diferenças nas questões de exceção com relação ao problema dos produtores/consumidores?

Como resolver o problema de acesso concorrente entre escritores? Como garantir acesso concorrente entre leitores mas evitar entre os leitores e os escritores? Algum outro semáforo é necessário? Tipo? Motivo? Explique a prioridade aos leitores

This document was created with Win2PDF available at http://www.win2pdf.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only. This page will not be added after purchasing Win2PDF.