sistemas operacionais - home - faculdade de...

26
Sistemas Operacionais Programação Concorrente Problemas clássicos Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno

Upload: phungdang

Post on 04-Jan-2019

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Sistemas Operacionais

Programação ConcorrenteProblemas clássicos

Edson [email protected]

http://www.inf.pucrs.br/~emoreno

Page 2: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Sumário Produtor / consumidor

O jantar dos filósofos

O barbeiro sonolento

Page 3: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Produtor / Consumidor Característica de execução Dois processos que compartilham um buffer de tamanho limitado O processo produtor:

Produz um dado

Insere no buffer

Volta a gerar um dado

O processo consumidor:

Consome um dado do buffer (um por vez)

O problema é Como garantir que o produtor não adicionará dados no buffer se este estiver cheio?

Como garantir que o consumidor não vai remover dados de um buffer vazio?

Page 4: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Produtor / Consumidor Solução Para o processo produtor Entrar em Sleep ou descartar o dado se o buffer estiver cheio

Quando o consumidro remover um item do buffer, este notifica o produtor

Para o processo consumidor O mesmo pode ser feito no sentido inverso

Na próxima inserção de dados pelo produtor, este notifica o consumidor

Como implementar a solução? Via IPC, tal como semáforos. Construção deve ser cuidadosa Solução inadequada pode acarretar em deadlock

Ambos processos aguardando notificação

Page 5: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Produtor / Consumidor

Proposta de solução

A partir do uso de semáforos

Implementação de exclusão mútua

Semáforos cheio e vazio

cheio conta os espaços utilizados

Se cheio igual a zero, então o consumidor deve ser bloqueado

vazio conta os espaços não utilizados no buffer

Se vazio igual a zero, então o produtor deve ser bloqueado

Page 6: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Produtor / Consumidorint buffer[TAM_BUFFER];

sem_t cheio, vazio;

void produtor(void *) {

while (true) {

item = produceItem();

sem_wait(&vazio);

putItemIntoBuffer(item);

sem_post(&cheio);

}

}

void consumidor(void *) {

while (true) {

sem_wait(&cheio);

item = removeItemFromBuffer();

sem_post(&vazio);

consumeItem(item);

}

}

int main(){

pthread_t prod, cons;

sem_init(&cheio, 0, ?);

sem_init(&vazio, 0, ?);

pthread_create(&prod, NULL, produtor, NULL);

pthread_create(&cons, NULL, consumidor, NULL);

pthread_join(prod, NULL);

pthread_join(cons, NULL);

}

Page 7: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Produtor / Consumidorint buffer[TAM_BUFFER];

sem_t cheio, vazio;

int main(){

pthread_t prod, cons;

sem_init(&cheio, 0, 0);

sem_init(&vazio, 0, TAM_BUFFER);

pthread_create(&prod, NULL, produtor, NULL);

pthread_create(&cons, NULL, consumidor, NULL);

pthread_join(prod, NULL);

pthread_join(cons, NULL);

}

void produtor(void *) {

while (true) {

item = produceItem();

sem_wait(&vazio);

putItemIntoBuffer(item);

sem_post(&cheio);

}

}

void consumidor(void *) {

while (true) {

sem_wait(&cheio);

item = removeItemFromBuffer();

sem_post(&vazio);

consumeItem(item);

}

}

Page 8: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Sumário Produtor / consumidor

O jantar dos filósofos

O barbeiro sonolento

Page 9: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

O jantar dos filósofos

Page 10: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Jantar dos Filósofos

Definção do problema

Há cinco filósofos em torno de uma mesa.

Um garfo é colocado entre cada filósofo.

Cada filósofo deve, alternadamente, refletir e comer.

Para que um filósofo coma, ele deve possuir dois garfos

Os dois garfos devem ser aqueles logo a sua esquerda e a sua direita

Para pegar um garfo

Somente pode ser pego por um filósofo

Somente pode ser pego não estiver em uso por nenhum outro filósofo

Após comer, o filósofo deve liberar o garfo que utilizou

Um filósofo pode segurar o garfo da sua direita ou o da sua esquerda assim que

estiverem disponíveis

Mas, só pode começar a comer quando ambos estiverem sob sua posse

Page 11: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Solução funciona bem?

Jantar dos Filósofos – Solução 1

Page 12: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Não, pois pode ocorrer deadlock… Como?

Jantar dos Filósofos – Solução 1

Page 13: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Proposta de solução

E se após pegar pegarmos um garfo e não conseguimos pegar o

outro devolvêssemos à mesa o primeiro garfo e esperássemos

um tempo fixo?

Jantar dos Filósofos – Solução 2

Page 14: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Proposta de solução

E se após pegar pegarmos um garfo e não conseguimos pegar o

outro devolvêssemos à mesa o primeiro garfo e esperássemos

um tempo fixo?

Solução é propensa a starvation

Jantar dos Filósofos – Solução 2

Page 15: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Proposta de solução

E se após pegar pegarmos um garfo e não conseguimos pegar o

outro devolvêssemos à mesa o primeiro garfo e esperássemos

um tempo, mas agora ALEATÓRIO?

Jantar dos Filósofos – Solução 3

Page 16: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Proposta de solução

E se após pegar pegarmos um garfo e não conseguimos pegar o outro

devolvêssemos à mesa o primeiro garfo e esperássemos um tempo,

mas agora ALEATÓRIO?

Funcionaria algumas vezes, mas nem sempre

Essas solução é usada em rede local Ethernet quando da colisão de pacotes;

Assim sendo, a solução é válida para alguns caso, mas e se

precisássemos de uma solução que funcionasse corretamente sempre?

Jantar dos Filósofos – Solução 3

Page 17: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Proposta de solução

Usando semáforos

Após a estágio de pensamento tem-se

Ou a captura dos recursos necessário para comer

Ou o aguarde de uma notificação de que está apto a comer

Jantar dos Filósofos – Solução 4

Page 18: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Jantar dos Filósofos – Solução 4

Page 19: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Jantar dos Filósofos – Solução 4

Uma solução para o problema do jantar dos filósofos (parte 2)

Page 20: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Sumário Produtor / consumidor

O jantar dos filósofos

O barbeiro sonolento

Page 21: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

O barbeiro sonolento

Page 22: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

O barbeiro sonolento Descrição do problema A analogia de uma barbearia com um barbeiro.

A barbearia possuir Uma cadeira para corte de cabelo

Uma sala de espera com um número determinado de cadeiras

Quando o barbeiro finaliza o corte de cabelo de um cliente Ele libera o cliente e vai até a sala de espera para ver se há algum cliente esperando

Se há algum cliente esperando, ele trás consigo um dos clientes corta o seu cabelo

Se não há clientes esperando então ele volta para a cadeira de corte para dormir

Quando um cliente chega à barbearia O cliente olha o que o barbeiro está fazendo.

Se o barbeiro estiver dormindo, ele o acorda e senta na cadeira.

Se o barbeiro estiver trabalhando então o cliente vai para a sala de espera

Se houver uma cadeira livre na sala de espera então ele senta e aguarda sua vez

Se não houver cadeira livre na sala de espera então o cliente vai embora.

Page 23: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

O barbeiro sonolento

O problema

Como programar o barbeiro e o(s) cliente(s) para não entrarem

em uma situação de corrida

Situação similar a ambientes que trabalham com fila

Exemplo: Helpdesks para clientes cujo atendimento é enfileirado por um

sistema centralizador de espera em uma fila de vagas limitadas

Page 24: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

O Barbeiro Sonolento

Page 25: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

Solução proposta

Usa três semáforos

Customer: Contabiliza e limita o número de clientes em espera

Waiting: Essencialmente uma cópia de customer

Barber: Contabiliza o número de barbeiros “dormindo”

Mutex: usado para acesso à região crítica

O barbeiro sonolento

Page 26: Sistemas Operacionais - Home - Faculdade de Informáticaemoreno/undergraduate/CC/sisop/class_files/Aula... · A analogia de uma barbearia com um barbeiro. A barbearia possuir Uma

O Barbeiro Sonolento