Download - Deadlocks e threads

Transcript
Page 1: Deadlocks e threads

Deadlocks / Comunicação de processos / Threads

Jéssica Valeska da Silva

Pedro Neves Zito

Presidente PrudenteAgosto/2014

Page 2: Deadlocks e threads

2

Deadlocks

Comunicação de processos

Threads

TÓPICOS

Page 3: Deadlocks e threads

3

Os sistemas de computadores têm inúmeros recursos adequados ao uso de somente um processo a cada vez. Entre os exemplos comuns estão impressoras, unidades de fita e entradas nas tabelas internas do sistema.Se dois processos quiserem escrever simultaneamente na mesma impresso haverá um impasse. Tentativa de dois processos usarem a mesma entrada da tabela os sistema de arquivos consequentemente conduzira a um sistema de arquivo corrompido, todos os sistemas operacionais devem ser capazes de garantir temporariamente, o acesso exclusivo de um processo a certos recursos.

DEADLOCKS

Page 4: Deadlocks e threads

4

quando um processo não tem acesso exclusivo a um recurso do sistema, a uma chance de existir uma concorrência entre dois processos, um impasse, situação onde os processos ficam bloqueados e permanecem bloqueados para sempre, isso é chamado Deadlock.

DEADLOCKS

Page 5: Deadlocks e threads

5

A sequencia de eventos necessários ao uso de um determinado recurso é dada abaixo de maneira abstrata.• Executar• Liberar recurso• Ser acordado

Caracterizando um Deadlock

Exclusão Mutua; cada recurso alocado apenas em um processo por vez ou livremente; Manter e esperar: processos mantendo recursos podem requisitar recursos adicionais; sem preempção: um recurso previamente garantido não pode ser retirado do processo; Espera circular: deve haver uma cadeia circular de dois ou mais processos, cada um esta esperado por recurso mantido pelo próximo membro da cadeia.

DEADLOCKS

Page 6: Deadlocks e threads

6

DEADLOCKS; Exemplo.

Page 7: Deadlocks e threads

7

DEADLOCKS

Estratégias para tratar DeadlocksAssegurar através da prevenção que o sistema nunca vai entrar em estado de deadlock; permitir que o sistema em estado de deadlock então detectar e recuperar; evitar através de alocação cuidadosa dos recursos; ignorar o problema e fazer de conta que os deadlocks nunca ocorrem no sistema.

Page 8: Deadlocks e threads

8

A comunicação entre processos acontece quando dois ou mais processos precisam se comunicar, ou seja, compartilhar dados entre si. Um exemplo é o envio de arquivos para impressão.

É através da utilização de recursos comuns entre os processos que geralmente se dá a comunicação. Para ocorrer a comunicação entre os processos é necessário um mecanismo bem estruturado. Temos como exemplos os buffers, os semáforos e a memória compartilhada.

COMUNICAÇÃO DE PROCESSOS

Page 9: Deadlocks e threads

9

BUFFERS E OPERAÇÕES DE SLEEP E WAKEUP

Buffer é uma área de dados de tamanho fixo que se comporta como uma reservatório temporário. No problema produtor-consumidor é utilizado um buffer por dois processos distintos. O processo produtor coloca informações no buffer enquanto o processo consumidor as retira de lá.

Tanto o buffer como a variável que controla a quantidade de dados que o buffer contém suas regiões críticas, portanto deveriam ter seu acesso limitado através de primitivas de exclusão mútua, desde que isto não impusesse esperas demasiadamente longas aos processos envolvidos.

COMUNICAÇÃO DE PROCESSOS

Page 10: Deadlocks e threads

10

BUFFERS E OPERAÇÕES DE SLEEP E WAKEUP

Dado que o buffer tem um tamanho limitado e fixo podem ocorrer problemas tais como:

o produtor não pode colocar novas informações no buffer porque ele já está cheio; ou

o consumidor não pode retirar informações do buffer porque ele está vazio.

COMUNICAÇÃO DE PROCESSOS

Page 11: Deadlocks e threads

11

BUFFERS E OPERAÇÕES DE SLEEP E WAKEUP

Nestes casos tanto o produtor como o consumidor poderiam ser adormecidos, isto é, ter sua execução suspensa, até que existisse espaço no buffer para que o produtor coloque novos dados ou existam dados no buffer para o consumidor possa retirá-los. Uma tentativa de solução deste problema utilizando as primitivas sleep e wakeup.

COMUNICAÇÃO DE PROCESSOS

Page 12: Deadlocks e threads

12

Toda civilização, velha ou nova, precisa de energia para sua sobrevivência.

A fonte de energia da Primeira Onda provinha de animais, pessoas e recursos da natureza.

A fonte de energia da Segunda Onda provinha do carvão de pedra, gás, petróleo (fontes não renováveis).

Pela primeira vez uma civilização passou a viver do capital da natureza em vez de apenas viver do rendimento que ela fornecia.

COMUNICAÇÃO DE PROCESSOS

SEMÁFOROS

Uma solução proposta pelo Dijkstra para a resolução do problema produtor-consumidor, seria a utilização de variáveis inteiras a fim de controlar o número de sinais wakeup para uso futuro. Estas variáveis foram denominadas semáforos, e sobre elas estabeleceu-se duas diferentes operações: P (conhecida também como Down) e V (conhecida também como Up), que são generalizações das operações sleep e wakeup.

Page 13: Deadlocks e threads

13

Toda civilização, velha ou nova, precisa de energia para sua sobrevivência.

A fonte de energia da Primeira Onda provinha de animais, pessoas e recursos da natureza.

A fonte de energia da Segunda Onda provinha do carvão de pedra, gás, petróleo (fontes não renováveis).

Pela primeira vez uma civilização passou a viver do capital da natureza em vez de apenas viver do rendimento que ela fornecia.

COMUNICAÇÃO DE PROCESSOS

SEMÁFOROS

Os semáforos são frequentemente utilizados para sincronização de processos, ou seja, são utilizados para garantir a ocorrência de certas sequências de eventos ou para impedir que outras sequências nunca ocorram ou para que ocorram de uma forma específica.

Page 14: Deadlocks e threads

14

COMUNICAÇÃO DE PROCESSOS

MEMÓRIA COMPARTILHADA

A memória compartilhada é um mecanismo frequentemente utilizado para a comunicação entre processos diferentes onde uma região de memória é reservada para uso comum dos processos envolvidos na comunicação. A área de memória reservada para os processo ´e semelhante a um buffer, mas nesta situação todos os processos envolvidos podem escrever e ler neste buffer.

Page 15: Deadlocks e threads

15

COMUNICAÇÃO DE PROCESSOS

MEMÓRIA COMPARTILHADA

De forma geral, a solução é semelhante aquela do problema de produtores e consumidores, aplicada a n processos que podem tanto ler ou escrever numa região de memória específica, sendo frequentemente utilizada para passagem de mensagens entre processos.

Page 16: Deadlocks e threads

16

COMUNICAÇÃO DE PROCESSOS

OUTROS MECANISMOS DE IPC

Contadores de eventos

Uma outra solução para o problema produtor-consumidor, proposta por Reed e Kanodia, que assim como os semáforos, não é necessário obter a exclusão mútua. Essa solução utiliza uma variável chamada contador de eventos que possui três definições definidas:

read (E) - retorna o valor corrente de E. advance (E) – incrementa, automaticamente, o valor de E de uma

unidade. await (E, v) – espera que E tenha o valor igual ou superior a v.

Page 17: Deadlocks e threads

17

COMUNICAÇÃO DE PROCESSOS

OUTROS MECANISMOS DE IPC

Monitores

Um monitor é um conjunto de procedimentos, variáveis e estruturas de dados, todas agrupadas em um módulo especial. Somente um processo pode estar ativo dentro do monitor em um instante.

Page 18: Deadlocks e threads

18

THREADS

Linha ou Encadeamento de execução, é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte à thread é fornecido pelo próprio sistema operativo (SO), no caso da linha de execução ao nível do núcleo, ou implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT). Uma thread permite, por exemplo, que o usuário de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.

Page 19: Deadlocks e threads

19

REFERÊNCIAS

1. JANDL JR, Peter. Notas sobre sistemas operacionais. 2004.

2. TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Pearson Brasil, 2003.