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

Documentos relacionados
Sistemas Operacionais. Comunicação entre processos

Sistemas Operacionais

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

Comunicação entre processos

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

Estrutura deste arquivo.. Comunicação Interprocesso Parte 1 de 2 - Cap. 2. Introdução 1 CONDIÇÕES DE CORRIDA

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

Sincronização e Comunicação

Unidade III Gerência de Processos

Comunicação entre Processos

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

Revisão Ultima aula [1/2]

Comunicação entre processos (2)

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)

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais: Sincronização entre processos

Exclusão Mútua (mutex)

Sistemas Operacionais

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

Capítulo 2 Processos e Threads

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

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

( ) ( ) Auto Avaliação F ( ) M ( ) D ( ) Seqüência: Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Exercícios - Dia 20/04/2011

Sistemas Operacionais

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

Programação Concorrente Locks

Sincronização de Processos (2)

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais Aula 6

Sistemas Operacionais

Sistemas Operacionais

Sincronização de Processos (2)

Sistemas Operacionais

Sistemas Distribuídos Aula 7

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

Revisão Ultima aula [1/2]

Sistemas Distribuídos Aula 5

SSC0640 Sistemas Operacionais I

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

Fundamentos de Sistemas Operacionais

Sistemas Operacionais II

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

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

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais II

SISTEMAS OPERACIONAIS

Sistemas Operacionais

Tipos de Soluções (cont.)

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

Programação Concorrente. Prof. Hugo Vieira Neto

Introdução a Programação Concorrente. Aula 02. Prof. André Luis Meneses Silva

7 SINCRONIZAÇÃO DE PROCESSOS

Programação concorrente (processos e threads)

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

Sistemas Operacionais

Sistemas Distribuídos

Modelos de Programação de Tempo Real

Sistemas Operacionais

Algoritmos de escalonamento

Threads e Sincronização no Linux

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

Lista de Exercícios de INF1019

Solução para o Problema do Produtor-Consumidor

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

SISTEMAS OPERACIONAIS

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

Sistemas Operacionais

Sistemas Operacionais

Barramento. Prof. Leonardo Barreto Campos 1

Sistemas Operacionais. Prof. André Y. Kusumoto

6. Mostre os principais modelos de organização interna de um sistema operacional.

DCA-108 Sistemas Operacionais

Notas da Aula 5 - Fundamentos de Sistemas Operacionais

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

Montador (assembler)

Semáforo Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

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 a Sistemas Operacionais. Adão de Melo Neto

OO Engenharia Eletrônica

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

Laboratório de Informática. Leopoldo Teixeira

LEIC/LERC 2008/09 Primeiro Teste de Sistemas Operativos

Fundamentos de Sistemas Operacionais

Semáforos. Gerenciamento de Recursos I

Sincronização e comunicação entre processos

Fundamentos de Sistemas Operacionais

Concorrência entre Processos

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

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

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

Tipos de Soluções (cont.)

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

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

INFORMÁTICA: Informação automática

Programação Concorrente

Semáforos. Gerenciamento de Recursos I

Transcrição:

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

Região Crítica Parte do código que acessa a área compartilhada Condição em que dois processos lêem e escrevem um dado compartilhado e o resultado final depende da ordem em que os processos são executados. Lembre-se que em um sistema multitarefa um processo pode ser retirado da execução para pronto a qualquer momento. Essas condições são muito difíceis de debuggar, encontrar falhas, que podem ocorrer dependendo de fatores externos

Algumas soluções possíveis Desabilitar interrupções Variáveis de trava(lock) Chaveamento origratório Solução de Peterson Dormir e acordar Semáforos Mutex Monitores Tadeu Ferreira IFRN 2015

Desabilitar interrupções Ao entrar na região crítica ficam desabilitadas as interrupções Evita que ocorra troca de contexto por tempo. Em um sistema multiprocessado pode ser complexo ou impossível desabilitar a interrupção em todos os processadores Entregar o controle das interrupções ao usuário pode ser perigoso se o processo não habilitar novamente estas interrupções.

Variáveis de trava(lock) Uma única variável lock indica quando há algum processo em uma região crítica Se lock == 0 não há processo na região crítica. Se lock == 1 há processo na região crítica. A ideia é: se o seu processo quer entrar na região crítica ele deve ler lock e só poderá entrar quando lock == 0 Quando ele entrar deve fazer lock = 1

Lock com espera ocupada //enquanto o lock está ocupado while (obter(lock)==1){ //faz nada (espera ocupada) } lock=1; ler(inicio); pilha[inicio] = arquivo; incrementa(inicio); gravanovoinicio(); lock=0; //libera o lock

Chaveamento obrigratório Alterna entre dois processos A variável turn indica qual processo tem direito a entrar na região crítica Viola a condição que um processo em região não crítica bloqueia um processo

Solução de Peterson Define duas funções enter_region e leave_region Usa um vetor de interessados em entrar na região crítica Usa uma variável turn para definir quem é a vez para usar a região crítica

Test and Set Utiliza uma instrução especial do processador Assembly TSL RX, LOCK

Dormir e acordar As soluções anteriores são corretas mas empregam a espera ocupada também chamada espera ociosa Se um processo não consegue entrar na região crítica ele fica preso em um loop consumindo tempo de CPU Pode gerar um problema de inversão de prioridades Para resolver este problema podemos usar chamadas do SO sleep e wakeup

sleep() e wakeup() A diferença mais importante desta estratégia para as outras é que estas permitem que o S.O. bloqueie o processo em sleep Assim o processo não consumirá CPU enquanto espera para entrar em sua região crítica

Problema do produtor consumidor

Semáforos Um semáforo é uma estratégia que permite que 2 ou mais processos se alternem no uso de um recurso compartilhado Corrigindo o problema do sinal wakeup perdido, os semáforos tem um contador interno para os sleep e wakeup. Para manter a clareza nos semáforos as instruções são chamadas down (equivalente ao sleep) e up (equivalente ao wakeup).

Produtor consumidor usando semáforos

Mutex Mutex são tipos especiais de semáforos que tem apenas uma variável binária, permitindo que apenas 1 processo acesse a região crítica. É equivalente a um semáforo iniciado em 1. A implementação é mais simples e mais rápida. Muito usado para garantir exclusão mútua a uma variável compartilhada.

Monitores A última estratégia para problema da condição de corrida (race condition) são os monitores. Um monitor é um artifício de algumas linguagens de programação Permite que se defina um conjunto de métodos e propriedades dentro de um pacote ou módulo. O importante aqui é que Somente 1 processo pode estar ativo em um monitor por vez.

Monitores

Atividade Descreva como dois processos podem se comunicar, usando memória compartilhada. O que é um condição de corrida? Descreva uma situação em que pode haver uma condição de corrida. O que é uma região crítica de um processo? Por que ela precisa ser protegida de execução simultânea? O que é espera ocupada? Descreva as seguintes estratégias de comunicação/sincronização entre processos. Monitores Semáforos Mutex Test Set and Lock (variável de lock) Endereço de entrega: https://goo.gl/06r5yv