Sistemas Operacionais II

Tamanho: px
Começar a partir da página:

Download "Sistemas Operacionais II"

Transcrição

1 Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II es Aula 06 Exclusão mútua pode ser obtida com variáveis lock e semáforos São mecanismos primitivos e estão sujeitos a erros no seu uso! lock/ unlock estão sujeitos a erros de: Desatenção na sequência de primitivas lock/unlock Esquecimento de primitiva lock ou unlock Inversão de prioridade! Semáforos estão sujeitos a erros de: Esquecimento de P ou de V Inicialização Ordem e quantidade de primitivas Erros levam a deadlocks e violação da exclusão mútua Sistemas Operacionais II 2 Além disso... Variáveis tipo lock Exclusão mútua Semáforos Exclusão mútua e sincronização condicional! Objetivos diferentes,,programação diferente! Dificuldade adicional para escrever e compreender um programa Solução: construção de mais alto nível es Objeto que contém dados e procedimentos Conjunto de funções, variáveis e estruturas de dados encapsulados em um módulo especial! Possível chamar funções, mas não alterar as variáveis internas Dados internos ao monitor são acessíveis somente dentro dele Global: todos os procedimentos podem acessar Local: apenas o procedimento que o declara pode utilizá-lo A exclusão mútua é garantida pelo ambiente Compilador insere todas as chamadas de sistema e código necessários para criar filas de espera por recursos Diferença entre um objeto (linguagens OO) e um monitor! Um objeto não é compartilhado por processos concorrentes Sistemas Operacionais II 3 Sistemas Operacionais II 4

2 Sintaxe e semântica de um monitor Semântica do monitor: exclusão mútua monitor name { Declaração de variáveis permanentes Inicialização Procedimentos - Compartilhadas por todos os procedimentos - Mantém os valores enquanto o monitor existir (estado) - Interface: especifica métodos e parâmetros - Variáveis locais Propriedades de um monitor: Apenas os procedimentos (nomes) são visíveis do exterior Os procedimentos de um monitor não acessam variáveis externas ao monitor Variáveis permanentes são inicializadas antes de qualquer procedimento! Definição de uma invariante do monitor que deve ser mantida pelos procedimentos Apenas um processo está dentro do monitor (ativo) em um instante de tempo t Responsabilidade do compilador garantir a exclusão mútua! Usa lock e/ou semáforos (uso correto garantido pelo compilador!)! Provida implicitamente pelo monitor (sincronização de acesso a dados) Necessário coordenar os processos (espera e entrada) para que haja apenas um no monitor Surgem as variáveis condicionais! Sincronização de controle (coordenação de ações) Quando se fala em monitor, normalmente é usado o termo processo porque eles foram originalmente definidos nesse contexto. No entanto, o discurso é válido para threads. Sistemas Operacionais II 5 Sistemas Operacionais II 6 Semântica do monitor: Variáveis condicionais Primitivas wait e signal Variáveis especiais ligadas ao conceito de monitor Declaradas e usadas apenas dentro do monitor Possuem um fila associada (política da fila não é imposta)! O valor da variável de condição é a fila, mas ela não vista, nem acessível para o programador Só podem ser usadas via primitivas específicas: wait(cv) e signal(cv) Primitiva wait (condition_variable) Retira do monitor, incondicionalmente, o processo que a executa fila de espera associada à variável de condição Primitiva signal(condition_variable) Libera um único processo da fila associada a condição sinalizada Não guarda memória, isto é, se a fila estiver vazia no momento do signal, ele é perdido. As primitivas wait e signal implementam uma política FIFO wait insere o processo no final da fila e signal acorda o processo da frente da fila Possível haver outras políticas (prioridade, e.g.) Sistemas Operacionais II 7 Sistemas Operacionais II 8

3 Representação genérica de um monitor Simplificações e semânticas possíveis Situação inicial P 1 P 2 Procedure P Condição C P 5 P 6 P 3 P 4 P 1 P 2 Procedure P Condição C P 5 P 6 Procedure Q Condição D Procedure Q Condição D P3 executa signal (C) P 4 Procedure R P 3 Sinalizadores Procedure R Situação final O que fazer com o P 3 quando ele faz o signal? P 1 P 2 P 4 Procedure P Procedure Q Procedure R Condição C P 5 Condição D Sinalizadores P 6 P 3 Uma única fila de espera para entrar no monitor Uma fila para cada variável de condição Questão é o que fazer com os processos sinalizadores? Semânticas para o signal Sistemas Operacionais II 9 Sistemas Operacionais II 10 Estratégias de sinalização Diagrama de estado Signal and Continue (SC): não preemptiva O processo sinalizador continua sua execução e o sinalizado passa para a fila de entrada do monitor! Semântica usada em Java e em ambientes Unix Signal and Wait (SW): preemptiva O processo sinalizador vai para a fila de entrada do monitor e o processo sinalizado inicia sua execução! Semântica proposta por B. Hansen Signal and Urgent Wait (SU) O processo sinalizador vai para a frente da fila de entrada do monitor e o processo sinalizado inicia sua execução! Semântica proposta por Hoare (1974) Signal and Continue Signal and Wait call call signal (cv) fila de entrada fila de entrada fila var. condição monitor fila var. condição Sinalizado (signal(cv)) monitor signal (cv) (sinalizador) wait (cv) execução (monitor) wait (cv) execução (monitor) return return Sistemas Operacionais II 11 Sistemas Operacionais II 12

4 Semáforo implementados como monitor Problemas monitor Semaphore { int s = 1; # s >= 0 cond pos; # signaled when s > 0 Ordenamento FIFO depende da estratégia de inicialização Signal and continue: não garante FIFO procedure Psem( ) { while ( s == 0 ) wait(pos); s = s 1; procedure Vsem( ) { s = s + 1; signal(pos); Porque usar um while e não um if? Problemas!? P1: while (s == 0) wait(pos); P2: name.vsem ( ); - s = s + 1; (s = 1) - signal(pos): P1 saí da fila da condição e vai para fila de entrada do monitor - P3 na fila de entrada do monitor antes do P1 P3: name.psem ( ); - como s > 0, ganha semáforo antes do P1 (viola FIFO) P1: while ( s == 0) wait (pos); - necessita testar novamente a variável s Signal and Wait:! O while do Psem pode ser substituído por um if! Implementa uma política FIFO Sistemas Operacionais II 13 Sistemas Operacionais II 14 Exercício: reflexão para casa... Primitivas adicionais para condition variables (cv) Transformar o código de semáforos para implementar uma política FIFO independente da estratégia de sinalização Dicas: A diferença entre a política SC e SW é o fato que o processo sinalizador continua e incrementa o valor de s. Esse valor pode ser visto por um processo diferente do que está na fila de espera por condição. Lembre que o processo da fila de condição vai para a fila de processos pela espera do monitor. Págs , livro Andrews, mas, compreenda a solução! wait (cv, rank) Processo é posto na fila da cv, mas ordenados de acordo com o valor de rank (crescente). minrank (cv) Consulta o rank do primeiro processo da fila da cv. empty (cv) Retorna true se a fila da cv está vazia, senão, retorna false. signal_all (cv) Sinaliza todos os processo que estão na fila da cv.! Comportamento bem definido para a estratégia SC. (o que ocorre se a estratégia for SW?) Sistemas Operacionais II 15 Sistemas Operacionais II 16

5 O problema do buffer limitado (outra vez...) Buffer limitado: monitor Relação produtor-consumidor: O produtor insere (envia) mensagens em um buffer compartilhado, o consumidor lê (retira) mensagens. O buffer (array buf) contém mensagens que foram inseridas, mas ainda não foram lidas.! Produtor: buf[rear] = data; rear = (rear+1)% n;! Consumidor: result = buf[front];front=(front+1)% n; Com monitor: Exclusão mútua é garantida por definição! Não há necessidade de usar mecanismos para exclusão mútua Duas condições:! Buffer não está cheio possível produzir até completá-lo! Buffer não está vazio possível consumir até esvaziá-lo monitor Bounded_Buffer { typet buf[n]; int front = 0, rear = 0; count = 0; cond not_full, not_empty; procedure deposit(typet data) { while (cont == n) wait(not_ full); buf[rear] = data; rear = (rear+1) % n; count++; signal(not_empty); procedure fetch(typet &result) { while (count == 0) wait(not_empty); result = buf[front]; front = (front+1) % n; count--; signal(not_full); Sistemas Operacionais II 17 Sistemas Operacionais II 18 Leitores e escritores Leitores/escritores: monitor Dois tipos de processos, leitores e escritores, e uma base de dados Leitores consultam registros e escritores modificam registros! Processos escritores devem ter acesso exclusivo a base de dados! Processos leitores podem acessar concorrentemente a base de dados Leitores disputam com escritores e escritores disputam entre si Condições: Leitores devem esperar que não hajam escritores Escritores devem esperar que não hajam leitores nem outro escritores monitor RW_Controller { int nr = 0, nw = 0; cond oktoread, #signaled when nw == 0 oktowrite; #signaled when nr == 0 e nw == 0 procedure request_read( ) { while (nw > 0) wait(oktoread); nr = nr + 1; procedure release_read( ) { nr = nr - 1; if (nr == 0) signal(oktowrite); procedure request_write( ) { while (nr > 0 nw > 0) wait(oktowrite); nw = nw + 1; procedure release_write( ) { nw = nw - 1; signal(oktowrite); signal_all(oktoread); Sistemas Operacionais II 19 Sistemas Operacionais II 20

6 Temporizador com monitores Um outro clássico: a barbearia monitor Timer { int tod = 0; cond check; #signaled when tod has increased procedure delay(int interval) { int wake_time; wake_time = tod + interval; while (wake_time > tod) wait (check); procedure tick( ) { tod = tod + 1; signal_all(check); Pressupõe a existência de um relógio de hardware que acorda um processo que realiza uma chamada ao procedimento tick do monitor. Barbeira possui um barbeiro, uma porta de entrada, uma porta de saída e cadeiras para os clientes esperarem Barbeiro dorme enquanto espera clientes Um cliente ao chegar acorda o barbeiro ou esperam (dormindo) em uma das cadeiras Ao terminar um corte o barbeiro abre a porta de saída e a fecha após o cliente sair, se houver clientes esperando, acorda um deles Condições: O barbeiro deve esperar por clientes Os clientes devem esperar o barbeiro estar disponível O cliente, para sair, deve esperar o barbeiro abrir a porta O barbeiro deve esperar o cliente sair para acordar outro Sistemas Operacionais II 21 Sistemas Operacionais II 22 Barbearia Aninhamento de monitores monitor Barber_Shop { int barber = 0, chair = 0; open = 0; cond barber_available; # signaled when barber > 0 cond chair_occupied; # signaled when chair > 0 cond door_open; # signaled when open > 0 cond customer_left; # signaled when open == 0 procedure get_haircut( ) { while (barber == 0) wait(barber_available); barber = barber 1; char = chair + 1; signal(chair_occupied); while (open == 0) wait(door_open); open = open 1; signal (customer_left); procedure get_next_customer( ) { barber = barber + 1; signal (barber_available); while (chair == 0) wait (chair_occupied); chair = chair 1; procedure finish_cut( ) { open = open + 1; signal (door_open); while (open > 0) wait (customer_left); Procedimento de um monitor chama procedimento de outro monitor Temporariamente é feita a saída do primeiro monitor Duas estratégias: closed call: a exclusão mútua no primeiro monitor é mantida open call: o primeiro monitor é liberado e no retorno a ele o processo deve entrar na fila de espera de entrada Como de costume, relação custo x benefício Sistemas Operacionais II 23 Sistemas Operacionais II 24

7 Aninhamento de monitores: prós e contra Leituras adicionais closed call Por definição não há conflitos com variáveis permanentes Serialização de acessos aos monitores reduz concorrência Aumento a possibilidade de dealock open call Não há conflito com variáveis permanentes se elas não forem passadas por referência Necessário manter invariantes do monitor complexidade Sistemas Operacionais II 25 G. R. Andrews Multithreaded, Parallel and Distributed Programming, Addison Wesley, Capítulo 5 S. Toscani; R. Oliveira; A. Carissimi; Sistemas Operacionais e programação concorrente Editora Sagra-Luzzato, Capítulo 9 A. Silberchatz, P. Galvin, G. Gagne; Sistemas Operacionais: conceitos e aplicações. (1 a edição). Campus Capítulo 7 Sistemas Operacionais II 26

Monitores. Programação Concorrente September 11, 2012

Monitores. Programação Concorrente September 11, 2012 September 11, 2012 mecanismo de sincronização clássico Brinch-Hansen e Hoare, circa 1974 nível de proteção diferente do apresentado em outras propostas o que são? construção sintática: parte da linguagem

Leia mais

Monitores. Setembro de 2009. Monitores

Monitores. Setembro de 2009. Monitores Setembro de 2009 mecanismo de sincronização clássico referência influência de conceitos de programação estruturada C. A. R. Hoare, Monitors: an operating system structuring concept, Communications of the

Leia mais

Sistemas Distribuídos Aula 7

Sistemas Distribuídos Aula 7 Sistemas Distribuídos Aula 7 Aula passada Atomicidade Test-and-set Locks revisitado Semáforos Dois problemas Aula de hoje Limitação dos semáforos Monitores Variáveis de condição Semântica do signal Sincronização

Leia mais

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

Unidade 3. Controle de Concorrência. Primitivas de Programação Concorrente Clássica Unidade 3 Controle de Concorrência Primitivas de Programação Concorrente Clássica Programação Concorrente A abstração de programação concorrente é o estudo de sequênciasde execução intercaladas, de instruções

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Processos - Parte 2 Prof. Dr. Fábio Rodrigues de la Rocha (Processos - Parte 2) 1 / 33 (Processos - Parte 2) 2 / 33 (Processos - Parte 2) 3 / 33 (Processos - Parte 2) 4 / 33 (Processos

Leia mais

Comunicação entre Processos

Comunicação entre Processos Programação Paralela e Distribuída Ordenação e Sincronização Prof. Msc. Marcelo Iury de Sousa Oliveira [email protected] http://sites.google.com/site/marceloiury/ Comunicação entre Processos Processos

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto Sistemas Operacionais Prof. André Y. Kusumoto [email protected] Fundamentos Paradigma do produtor-consumidor Sincronização de Processos Produtor while (count == BUFFER_SIZE) ; //no-op //adiciona

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II O problema da seção crítica... Instituto de Informátic ca - UFRGS Sistemas Operacionais II Exclusão mútua (implementação) Aula 04 Seção crítica Porção de código que não pode ser executado por dois ou mais

Leia mais

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos Sincronização e Comunicação entre Processos Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas.

Leia mais

Sistemas Operacionais: Sincronização entre processos

Sistemas Operacionais: Sincronização entre processos Sistemas Operacionais: Sincronização entre processos Sincronização Programa concorrente Executado por diversos processos Acesso concorrente a dados Paralelismo real x Paralelismo aparente Multiprocessadores:

Leia mais

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

Prof. Silvana Rossetto 9 de julho de DCC/IM/UFRJ Computação Concorrente (MAB117) Gabarito Segunda Prova Prof. Silvana Rossetto 9 de julho de 2015 1 DCC/IM/UFRJ Questão 1 (2,5 pts) O código Java abaixo implementa uma solução para o problema do barbeiro

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto Sistemas Operacionais Prof. André Y. Kusumoto [email protected] Semáforos Sincronização de Processos Um semáforo é uma estrutura de dados que consiste em um número inteiro e em uma fila Seu

Leia mais

Mecanismos de Sincronização com Variáveis Compartilhadas

Mecanismos de Sincronização com Variáveis Compartilhadas Mecanismos de Sincronização com Variáveis Compartilhadas Rômulo Silva de Oliveira Edição do Autor, 2018 www.romulosilvadeoliveira.eng.br/livrotemporeal Outubro/2018 1 Introdução Problema da seção crítica

Leia mais

O PROBLEMA DOS LEITORES E ESCRITORES LABORATORIO 1

O PROBLEMA DOS LEITORES E ESCRITORES LABORATORIO 1 O PROBLEMA DOS LEITORES E ESCRITORES LABORATORIO 1 O PROBLEMA DOS LEITORES E ESCRITORES O problema dos leitores e escritores é o próximo problema abstrato em programação concorrente que resolveremos. É

Leia mais

Comunicação entre processos

Comunicação entre processos Universidade Federal do Acre Centro de Ciências Exatas e Tecnológicas Bacharelado em Sistemas de Informação Comunicação entre processos Macilon Araújo Costa Neto [email protected] Capítulo 2 do livro do

Leia mais

Sincronização de Processos (2)

Sincronização de Processos (2) Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância

Leia mais

Comunicação entre processos (2)

Comunicação entre processos (2) Comunicação entre processos (2) Pedro Cruz EEL770 Sistemas Operacionais Lembretes Proposta de trabalho Enviar para [email protected] Prazo: dia 02 de abril 2 Aula passada Comunicação entre processos é útil

Leia mais

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

Problema do Produtor -Consumidor. Solução por semáforos Problema do Produtor -Consumidor Solução por semáforos Autoria Autores alunos da disciplina SO II Local Instituto de Informática UFRGS Versão v7 agosto de 2008 por C. Geyer Visão geral do assunto...2 Conceito...3

Leia mais

Sincronização e comunicação entre processos

Sincronização e comunicação entre processos Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Sincronização e comunicação entre processos Em um sistema multiprogramável com

Leia mais

Programação concorrente (processos e threads)

Programação concorrente (processos e threads) Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo

Leia mais

Programação Concorrente e Paralela

Programação Concorrente e Paralela Semáforos e Monitores 2010.2 Notação Andrews: atomicidade e await para definir ações atômicas, Andrews introduz a notação e para especificar sincronização, Andrews introduz a notação: await(b)s; que significa

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Processos Exclusão Mútua Mecanismos para se Obter Exclusão MútuaM Mecanismos de Hardware: Inibição de Interrupções Instrução TSL (Test and Set Lock) Mecanismos de Software: Com Espera

Leia mais

Sistemas Distribuídos Aula 5

Sistemas Distribuídos Aula 5 Sistemas Distribuídos Aula 5 Aula passada Sincronização Race condition Região crítica Locks Algoritmo de Peterson Aula de hoje Atomicidade test-and-set Locks revisitado Semáforos Dois problemas Atomicidade

Leia mais

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

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 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 Problemas Clássicos de Sincronização Porque estudá-los: Arquétipos: Representação

Leia mais

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

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

Leia mais

Programação concorrente em Java

Programação concorrente em Java Programação concorrente em Java Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Programação concorrente

Leia mais

Monitores. Conceito Sistemas Operacionais II

Monitores. Conceito Sistemas Operacionais II Monitores Conceito Sistemas Operacionais II Monitores Autores Daniel Artur Seelig Fábio Lutz Local Universidade Federal do Rio Grande do Sul Instituto de Informática Sistemas Operacionais II Professor

Leia mais

Programação Concorrente e Paralela. Noemi Rodriguez

Programação Concorrente e Paralela. Noemi Rodriguez 2013 Objetivos princípios e técnicas de programação concorrente multiprocessadores memória compartilhada troca de mensagens obs: diferentes níveis de abstração! que princípios e técnicas são esses? notações

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais I Índice 2 Processos... 1 2.2.5 Semáforos... 1 2.2.6 Monitores... 2 2.2.7 Passagem de Mensagens... 5 2 Processos 2.2.5 Semáforos Para resolver este problema, Dijkstra propôs em 1965

Leia mais

Problema dos Leitores/Escritores

Problema dos Leitores/Escritores 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

Leia mais

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 e comunicação entre entidades de processamento. Mutex Volnys Bernal 1. Tópicos. Exclusão Mútua (mutex) Exclusão Mútua (Mutex) 2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Tópicos Exclusão Mútua (mutex) Volnys Borges Bernal [email protected] http://www.lsi.usp.br/~volnys Exclusão Mútua () Objetivo, utilidade, requisitos

Leia mais

Sincronização. Cooperação entre Processos

Sincronização. Cooperação entre Processos Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência

Leia mais

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

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores Sistemas Operacionais Sincronização: Semáforos Problema dos Leitores/Escritores Autoria Autores Eduardo André Mallmann 0905/96-9 João Paulo Reginatto 1530/96-0 Local Instituto de Informática UFRGS disciplina:

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Inst tituto de Info ormátic ca - UF FRGS Sistemas Operacionais i Introdução à Programação Concorrente Aula 05 Em sistemas multiprogramados há interação entre processos para comunicação, que

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Processos Semáforos Semáforos Mecanismo de sincronização que não requer espera ocupada Dijkstra propôs usar uma variável inteira para contar o n o de WAKEUPs para uso futuro Menos

Leia mais

Tipos de Soluções (cont.)

Tipos de Soluções (cont.) Sincronização de Processos (2) Tipos de Soluções (cont.) Soluções de Hardware Inibição de interrupções Instrução TSL (apresenta busy wait) Soluções de software com busy wait Variável de bloqueio Alternância

Leia mais

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 6. Primitivas de Sincronização Aula 6 Primitivas de Sincronização Primitivas de Sincronização Lock / Unlock Sleep / Wakeup Semáforo Monitores Mensagens Sincronização no Linux Lock / Unlock Funcionam como as primitivas vistas até agora

Leia mais

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

Sincronização e Comunicação entre Processos. Adão de Melo Neto Sincronização e Comunicação entre Processos Adão de Melo Neto 1 INTRODUÇÃO Em um sistema multitarefa os processos alternam sua execução segundo critérios de escalonamento estabelecidos pelo sistema operacional.

Leia mais

Exclusão Mútua (mutex)

Exclusão Mútua (mutex) 2004-2017 Volnys Bernal 1 Exclusão Mútua (mutex) Volnys Borges Bernal [email protected] Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Tópicos Exclusão Mútua (Mutex)

Leia mais

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

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I SEM/12 PROVA I. Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO SISTEMAS OPERACIONAIS I - 1 0 SEM/12 PROVA I Tempo de Prova: 100 minutos / Escore Máximo: 300 pontos Aluno: G A B A R I T O Escore: Responda às perguntas de forma

Leia mais

Sincronização. Objectivos da aula de hoje

Sincronização. Objectivos da aula de hoje Sincronização Parte II Programação Concorrente Objectivos da aula de hoje Como resolver problemas mais complexos de sincronização Produtores-consumidores, leitores-escritores, jantar dos filósofos Como

Leia mais

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

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela Aula 6: Comunicação entre processos Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela (-- motivação --) Processos em execução no sistema operacional podem ser: Independentes:

Leia mais

Programação Orientada a Objetos. Concorrência

Programação Orientada a Objetos. Concorrência Programação Orientada a Objetos Concorrência Cristiano Lehrer, M.Sc. Níveis de concorrência: Introdução Nível de instrução de máquina: Executando duas ou mais instruções de máquina simultaneamente. Nível

Leia mais

Programação Concorrente e Paralela. Noemi Rodriguez

Programação Concorrente e Paralela. Noemi Rodriguez 2016 o que é programação concorrente e paralela? programação concorrente: composição de linhas de atividades independentes programação paralela: execução simultânea de linhas de atividades Go blog (Rob

Leia mais

1B Conceitos Básicos: Indique Verdade/Falso

1B Conceitos Básicos: Indique Verdade/Falso INE5645 - Programação Paralela e Distribuída - Prova 1B 24/04/2017 Nome 1B Conceitos Básicos: Indique Verdade/Falso a) (Verdade/Falso) Threads distintas em um processo não são tão independentes quanto

Leia mais

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

Concorrência. Condições de Corrida. 5a. Tentativa. Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa Concorrência Dificuldades: Sincronização de Processos (2) Aula 11 Profa. Patrícia Dockhorn Costa Compartilhamento de recursos globais. Gerência de alocação de recursos. Localização de erros de programação

Leia mais

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

INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5) INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5) 1.1 (Verdade/Falso) Itens próprios de processos são: Espaço de endereçamento,

Leia mais

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

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

Leia mais

Sincronização e Comunicação

Sincronização e Comunicação Sincronização e Comunicação Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 28 Sumário 1 Concorrência 2 Sistemas Multiprogramáveis Troca de mensagens

Leia mais

Só podem ser executados por uma Thread que detenha o lock do objecto

Só podem ser executados por uma Thread que detenha o lock do objecto Transferência de controle entre Threads Os métodos wait(), notify() notifyall(), da classe Object, Permitem a transferência de controlo de uma Thread para outra. Só podem ser executados por uma Thread

Leia mais

Sincronização. Cooperação entre Processos

Sincronização. Cooperação entre Processos Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência

Leia mais

Sistemas Operacionais

Sistemas Operacionais AULA 09 Sincronização de Processos - II Monitores Conforme comentamos, o uso equivocado dos semáforos pode levar a uma situação de deadlock, por isso devemos tomar cuidado ao programar utilizando este

Leia mais

Sistemas Operacionais. Comunicação entre processos

Sistemas Operacionais. Comunicação entre processos Sistemas Operacionais Comunicação entre processos Comunicação entre Processos Os SO s hoje são multi-tarefa Alguns processos precisam cooperar para cumprir seus objetivos Sugestões de implementação? Exemplos

Leia mais

MAC422/5753 Sistemas Operacionais

MAC422/5753 Sistemas Operacionais MAC422/5753 Sistemas Operacionais Prof. Marcel P. Jackowski Aula #8 Sincronização: Semáforos, Barreiras e Monitores Jantar dos Filósofos Cinco filósofos que somente comem e pensam Cada um deles precisa

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Problemas clássicos Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Sumário Produtor / consumidor O jantar dos filósofos O barbeiro sonolento

Leia mais

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal [email protected] www.ezequielzorzal.com

Sistemas Operacionais Aula 08: Sincronização de Processos. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 08: Sincronização de Processos Ezequiel R. Zorzal [email protected] www.ezequielzorzal.com Objetivos Introduzir o problema da seção crítica, cujas soluções podem ser usadas

Leia mais

Concorrência e Paralelismo

Concorrência e Paralelismo Concorrência e Paralelismo [email protected] 1 Programação Concorrente e Paralela Na programação sequencial todas as instruções de um programa são executadas através de uma única linha de execução Na

Leia mais

Programação Concorrente

Programação Concorrente Programação Concorrente Monitores e Troca de Mensagens Monitores Considere que, no projeto da solução do produtor-consumidor com semáforos, os 2 downs tenham sido trocados Se o buffer estiver cheio deadlock

Leia mais

Sincronização de Processos (4) Monitores

Sincronização de Processos (4) Monitores Sincronização de Processos (4) Monitores 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

Leia mais

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação Profa: Simone Martins Gabarito - Lista 2 1 Considere um protótipo de uma máquina, utilizado

Leia mais