• Nenhum resultado encontrado

Sistemas Operacionais Concorrência

N/A
N/A
Protected

Academic year: 2022

Share "Sistemas Operacionais Concorrência"

Copied!
39
0
0

Texto

(1)

Sistemas Operacionais Concorrência

Carlos Ferraz ([email protected])

Jorge Cavalcanti Fonsêca ([email protected])

(2)

POSIX Threads

. . .

(3)

. . .

POSIX Threads (2)

(4)

Exercício

}  Executando n vezes e verificando a ordem de execução das threads criadas …

(5)
(6)
(7)

Threads em Java- Exemplo

Sistema

T2

abc27de... T1 1 2 3

a b c

Sequência de números encontrada

Sequência de letras encontrada

30s

60s

Cada thread detecta e remove a sequência encontrada (uma para números, outra para letras) Não existe interação entre as threads

Até existe uma comunicação de informação/dados

(8)

Comunicação entre processos

}  Processos precisam se comunicar

}  Processo produz um valor que outro processo precisa usar

}  Ex. pipeline do shell

}  IPC (Interprocess Communication)

}  3 “Pilares”

}  Como passar informação

¨  Na prática não existe no contexto de Threads

}  Como não entrar em conflito

¨  também em Threads

}  Como “controlar” dependências

¨  também em Threads

(9)

IPC

2 processos querem acessar uma memória compartilhada ao mesmo tempo Race conditions (Condições de Corrida)

Resultado depende de quem executa Precisamos de Mutual Exclusion (Exclusão Mútua)

}  Caso Impressora

}  Diretório de Spool

}  2 processos

}  O processo que quer imprimir

}  Daemon de impressão

Região Crítica

(10)

Região Crítica

}  Parte do programa em que há acesso à memória compartilhada

}  Se 2 processos nunca estiverem em suas regiões críticas ao mesmo tempo, é possível evitar as

“disputas”.

(11)

Região Crítica

}  Quatro condições necessárias para prover exclusão mútua

1.  Nunca dois processos simultaneamente em uma região crítica

2.  Não se pode considerar velocidades ou números de CPUs

3.  Nenhum processo executando fora de sua região crítica pode bloquear outros processos

4.  Nenhum processo deve esperar eternamente para entrar em sua região crítica

(12)

Região Crítica

Exclusão Mútua usando regiões críticas

(13)

Exclusão Mútua

}  Desabilitar interrupções

}  Seria prudente dar aos processos de usuários o poder de desligar interrupções?

}  E se algum processo desabilitar e nunca mais habilitar de volta?

Apenas o S.O. faz isso (apenas 1 processador)

}  E se o sistema for Multi-processador?

}  Desabilitar afetará somente a CPU que executou a instrução

}  Ao invés de desabilitar interrupção, é válido usar uma variável de trava (lock)?

(14)

Exclusão Mútua

}  Chaveamento obrigatório

Espera Ociosa (Busy waiting) – Como fica a CPU nesse momento?

Trava giratória – Spin Lock

turn = 0 turn = 1 turn = 0 turn = 1

Viola condição 3

(Nenhum processo executando fora de sua região crítica pode bloquear outros processos)

(15)

Exclusão Mútua (Peterson)

Solução de Peterson (1981) para exclusão mútuaO que acontece se 2 processos chamam enter_region(int) ao mesmo tempo?

(16)

Exclusão Mútua (Peterson)

Processo 0 Processo 1

...

Também com Espera Ociosa (Busy waiting)

(17)

Exclusão Mútua

}  Espera ociosa

}  Quando quer entrar em sua região critica, um processo verifica se sua entrada é permitida. Se não for, ele ficará em um laço esperando (ocioso) até que seja permitida a entrada.

}  Efeitos inesperados

}  Problema da inversão de prioridade

¨  Processos: alta e baixa prioridade

¨  Escalonamento: alta prioridade no estado pronto: executa

}  É preciso “dormir” e “acordar”

}  Primitivas do S.O.

(18)

Problema do Produtor-Consumidor

•  se consumo > produção

–  Buffer esvazia; Consumidor não tem o que consumir

•  se consumo < produção

–  Buffer enche; Produtor não consegue produzir mais

Produtor Buffer Consumidor

•  Problema clássico

•  também conhecido como Buffer Limitado

•  Uso das primitivas sleep e wakeup!

(19)

Problema do Produtor-Consumidor

(20)

Problema do Produtor-Consumidor

(21)

Problema do Produtor-Consumidor

Consumidor Produtor

Disputa fatal pode acontecer Consumidor lendo count = 0

e escalonador troca de processo (similar ao Spool) Ambos dormirão para sempre !!!

bit de espera pelo sinal de acordar (wakeup waiting bit)

...

Porém...

(22)

Semáforos

Primitivas de S.O. à com auxílio de Hardware

•  Semáforo é uma variável que tem como função o controle de acesso a recursos compartilhados

•  Evolução do bit de espera pelo sinal de acordar

•  Contador no lugar do bit

}  As operações de incrementar e decrementar devem ser operações atômicas, ou indivisíveis, ou seja,

}  enquanto um processo estiver executando uma dessas duas operações, nenhum outro processo pode executar outra operação sob o mesmo semáforo, devendo esperar que o primeiro processo encerre sua operação.

}  Essa obrigação evita condições de disputa entre vários processos

(23)

Produtor-Consumidor com Semáforos

(24)

Produtor-Consumidor com Semáforos

(25)

Produtor-Consumidor com Semáforos

(26)

Produtor-Consumidor com Semáforos

Mutex (Semáforo simplificado/binário)

(27)

Produtor-Consumidor com Semáforos

Produtor

Consumidor

(28)

Mutex (Semáforo simplificado)

pThreads - Linux

(29)

Mutex (Semáforo simplificado)

pThreads - Linux

(30)

Monitores (1)

Exemplo de um monitor

(31)

Monitores (2)

}  O problema do produtor-consumidor com monitores

}  somente um procedimento está ativo por vez no monitor

}  o buffer tem N lugares

(32)

Barreiras

pthread_barrier_t - inicializa informando quantidade de threads...

int pthread_barrier_wait(pthread_barrier_t *barrier)

(33)

Jantar dos Filósofos

}  Problema clássico de IPC

(34)

Jantar dos Filósofos

}  Solução Óbvia

(35)

Jantar dos Filósofos

}  Verificar se pode pegar o garfo

} Se todos tiverem o mesmo intervalo

}  Tempo randômico

}  Deixar “toda” a função philosopher() como região crítica

}  Daria certo?

(36)

Jantar dos Filósofos

}  Solução

(37)

Jantar dos Filósofos

}  Solução

(38)

Jantar do filósofo

(39)

Sistemas Operacionais Concorrência

Carlos Ferraz ([email protected])

Jorge Cavalcanti Fonsêca ([email protected])

Referências

Documentos relacionados

Em termos de implicações práticas, as conclusões desta pesquisa sinalizam as partes participantes, incluindo a IES, para reconhecer o papel do capital psicológico no

1º - As instituições de ensino das redes pública e privada, no âmbito do Estado do Rio de Janeiro, quando da retomada de suas atividades letivas presenciais, ainda que adotem regime

Dessa forma, as apresentações variadas refletem maior probabilidade de falha e postergação do diagnóstico, por isso a importância de obter história clínica e exame físico

Salvo se estabelecido de forma diversa, por escrito e antes do leilão, o VENDEDOR será responsável pelo pagamento da comissão de venda, a qual recai sobre o valor do

Fora do espaço da reunião anual, considerava-se conveniente fortalecer articulações com outras sociedades de ciên- cias humanas, participar de eventos, publicar e convi- dar

Estaca de concreto moldada in loco, executada mediante a introdução no terreno, por rotação, de um trado helicoidal contínuo. A injeção de concreto é feita pela haste

Ocorre o fenômeno da crase diante dos pronomes relativos “a qual” e “as quais”, quando o verbo da oração introduzida por esses pronomes exigir a

Figura 3- Regressão quadrática do número de brotações por explante de Hylocereus polyrhizus e cúbica para Hylocereus undatus estabelecidos em função da dose de 6-benzilaminopurina