A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Claudio de Oliveira – claudio@infocao.com.br Thread 09/03/10 20:13 Claudio de Oliveira – claudio@infocao.com.br.

Apresentações semelhantes


Apresentação em tema: "Claudio de Oliveira – claudio@infocao.com.br Thread 09/03/10 20:13 Claudio de Oliveira – claudio@infocao.com.br."— Transcrição da apresentação:

1 Claudio de Oliveira – claudio@infocao.com.br
Thread 09/03/10 20:13 Claudio de Oliveira –

2 Claudio de Oliveira – claudio@infocao.com.br
O que é um Thread Em sistemas tradicionais, cada processo tem seu espaço de endereçamento individual e apenas um fluxo de controle (thread). No entanto, algumas vezes desejamos ter vários fluxos de controle(threads) no mesmo espaço de endereçamento simulando uma execução em paralelo, como se cada fluxo fosse visto realmente como um processo distinto (exceto pelo fato de compartilharem um único espaço de endereçamento). Muitos threads podem existir dentro de um único contexto de processo, cooperando entre si a fim de realizar um dado cálculo e compartilhando o espaço de endereçamento e o restante do contexto desse processo. (multithread) 09/03/10 20:13 Claudio de Oliveira –

3 Representação Gráfica
09/03/10 20:13 Claudio de Oliveira –

4 Conceitos importantes
Uma interrupção é um sinal de hardware, que faz com que o processador sinalizado interrompa a execução do programa que vinha executando (aguardando informações para poder continuar, mais tarde, a execução desse programa) e passe a executar uma rotina específica que trata da interrupção. Não confundir Interrupção com Exceções. As exceções são geradas quando ocorre algum erro de hardware ou software e também paralisam o processo corrente, podendo até encerrá-lo. 09/03/10 20:13 Claudio de Oliveira –

5 Conceitos importantes...
Em ambientes de multiprogramação e de rede, é comum que processos se comuniquem uns com os outros. Muitas vezes, esses processos podem trabalhar juntos na solução de um problema e, portanto, utilizarem um mesmo recurso, ou seja, um recurso compartilhado entre eles. Muitos sistemas operacionais fornecem mecanismos para comunicações inter-processos (Inter Process Comunication – IPC), essenciais para permitir acesso concorrente a um recurso compartilhado. 09/03/10 20:13 Claudio de Oliveira –

6 Situação de concorrência em um spool de impressão.
09/03/10 20:13 Claudio de Oliveira –

7 Ilustração do clássico problema do Produtor-Consumidor.
09/03/10 20:13 Claudio de Oliveira –

8 Conceitos importantes...
Região Crítica: Também chamada de Seção Crítica. É a parte do sistema que permite acesso concorrente entre os processos. Exemplo: spool de impressão, buffer de memória, etc.; Exclusão Mútua: É uma técnica usada em programação concorrente para evitar que dois ou mais processos ou threads tenham acesso simultaneamente a um recurso compartilhado do sistema, ou seja, a uma regição crítica; Sinais: São interrupções de software que notificam ao processo que um evento ocorreu. Os sinais não permitem que processos especifiquem dados para trocar com outros processos. São utilizados para sincronização entre processos e S.O, ou seja, os sinais só ocorrem entre processos ou entre um processo e o S.O. 09/03/10 20:13 Claudio de Oliveira –

9 Conceitos importantes...
Trap: É o sinal que o processo envia para o S.O solicitando um serviço protegido do mesmo (como por exemplo sua entrada em uma região crítica). Um trap bloqueia o processo até que o serviço requerido pelo mesmo, ao sistema operacional, seja realizado. Pode-se dizer que o trap é uma interrupção prevista, programada no sistema pelo próprio programador. Uma interrupção propriamente dita, por outro lado, é completamente imprevisível, ocorrendo em pontos que não podem ser pré-determinados. O trap é uma chamada ao sistema (System Call) que passa o controle da CPU do processo corrente ao S.O, para que o mesmo possa atender ao serviço solicitado. O trap possui um parâmetro, que indica o serviço solicitado pelo processo; 09/03/10 20:13 Claudio de Oliveira –

10 Principais Problemas a Serem Evitados pelo IPC
Processos podem solicitar recursos, mesmo que estejam de posse de recursos obtidos anteriormente. Caso estes recursos já estejam alocados a outros processos, o processo solicitante deve aguardar pela liberação do mesmo. Essa é a condição natural do sistema de alocação de recursos, porém, alguns problemas naturalmente podem ocorrer. Condição de Corrida Starvation Deadlock 09/03/10 20:13 Claudio de Oliveira –

11 Claudio de Oliveira – claudio@infocao.com.br
Condição de Corrida: Também chamada de Corriza de Hazards, é uma das conseqüências da sincronização incorreta, gerando a disputa de recursos do sistema por múltiplos processos, ou threads, causando o corrompimento dos dados, onde parte dos dados são modificados por um processo/thread e parte por outro, ou seja, acontecequando dois ou mais processos entram simultaneamente na região crítica. Neste caso, ao tentar resolver esse problema, algumas considerações devem ser consideradas: 09/03/10 20:13 Claudio de Oliveira –

12 Claudio de Oliveira – claudio@infocao.com.br
Starvation: Também chamado de Livelock, acontece quando processos/threads estão em execução, mas nada acontece, isso ocorre geralmente quando dois ou mais processos/threads então trabalhando com intenções contrarias, o que é feito por um processo/thread é desfeito pela outro. Também ocorre quando um processo/thread tenta o acesso a um recurso que está sendo utilizado por outro processo/thread, o S.O pede para que o mesmo aguarde sua liberação, porém o processo/thread não está preparado para o aguardo, ou seja, ele vai continuar solicitando o recurso indefinidamente, mesmo que o recurso seja liberado, pois o processo/thread não foi programado para uma “rejeição”. 09/03/10 20:13 Claudio de Oliveira –

13 Claudio de Oliveira – claudio@infocao.com.br
Deadlock: É o problema mais terrível e mais estudado em sistemas operacionais. É uma situação em que dois ou mais processos/threads estão em estado simultâneo de espera, cada um aguardando que um dos demais libere um bloqueio para ele poder prosseguir, ou seja, um conjunto de N processos está em deadlock quando cada um dos N processos está bloqueado à espera de um recursos que somente pode ser liberado por um processo desse conjunto. 09/03/10 20:13 Claudio de Oliveira –

14 Situação de um deadlock no trânsito.
09/03/10 20:13 Claudio de Oliveira –

15 Seqüência lógica para que processo utilizem recursos do sistema
Pedido: o processo cria um trap para solicitar um recurso. Se o processo não tiver seu pedido atendido, pois o recurso não está livre, ele é bloqueado e ficará esperando até ganhar a posse do recurso. 2. Uso: tendo posse do recurso ele poderá utilizá-lo. 3. Liberação: desalocar o recurso adquirido pelo processo o liberando para outro processo. O gerenciamento desses recursos é feito pelo sistema operacional através de uma tabela, que registra se cada recurso está livre ou ocupado. Caso o recurso esteja ocupado, também é especificado o processo que tem a posse do recurso. 09/03/10 20:13 Claudio de Oliveira –

16 Condições necessárias para a ocorrência de deadlock
Condição de não-preempção: recursos já alocados a processos não podem ser tomados a força. Eles precisam ser liberados explicitamente pelo processo que detém a sua posse; Condição de exclusão mútua: cada recurso ou está alocado a exatamente um processo ou está disponível; Condição de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que está com o próximo membro da cadeia e onde cada um destes membros monopoliza o recurso de tal forma que só o libera com o progresso de sua execução, sem nunca “ceder sua vez” a outros processos; 09/03/10 20:13 Claudio de Oliveira –

17 Tratamento de deadlock
As situações de deadlock podem ser tratadas ou não em um sistema, e cabe aos desenvolvedores avaliar o custo/benefício que essas implementações podem trazer. Normalmente, as estratégias usadas para detectar e tratar as situações de deadlocks geram grande sobrecarga, podendo até causar um dano maior que a própria ocorrência do deadlock, sendo, às vezes, melhor ignorar a situação. Existem três estratégias para tratamento de deadlocks: 1. Ignorar a situação; 2. Detectar o deadlock e recuperar o sistema; 3. Evitar o deadlock; 09/03/10 20:13 Claudio de Oliveira –

18 Tratamento de deadlock...
Algoritmo do Avestruz (Ignorar a situação): A estratégia mais simples para tratamento (ou não) do deadlock, é ignorá-lo, pois muitos defendem que a freqüência de ocorrência deste tipo de evento é baixa demais para que seja necessário sobrecarregar a CPU com códigos extras de tratamento, e que, ocasionalmente, é tolerável reiniciar (leia-se resetar) o sistema como uma ação corretiva. 09/03/10 20:13 Claudio de Oliveira –

19 Tratamento de deadlock...
Detectar o deadlock e recuperar o sistema: Nessa estratégia, o sistema permite que ocorra o deadlock e só então executa o procedimento de recuperação, que resume-se na detecção da ocorrência e na recuperação posterior do sistema. 09/03/10 20:13 Claudio de Oliveira –

20 Tratamento de deadlock...
Evitar o deadlock: Para evitar o deadlock é necessário a implementação do algoritmo de exclusão mútua, que veremos mais adiante. 09/03/10 20:13 Claudio de Oliveira –

21 Problemas Clássicos de IPC
Para sintetizar os três grandes problemas a serem resolvidos pelo IPC (Condição de Corrida,Starvation e Deadlock) em um único problema, tornado assim a solução mais dirigida, foram criados alguns problemas figurativos que representam essa síntese. 09/03/10 20:13 Claudio de Oliveira –

22 Problema dos Filósofos Glutões (Jantar dos Filósofos)
Esse o mais conhecido e mais completo problema figurativo do IPC. Ele reúne claramente a Condição de Corrida, o Starvation e o Deadlock, em um contexto bem simples. Caso o IPC esteja apto a resolver todas as situações do problema dos filósofos glutões, automaticamente ele estará resolvendo todos os grandes problemas a qual ele é proposto. 09/03/10 20:13 Claudio de Oliveira –

23 Problema do Barbeiro Dorminhoco
Uma barbearia tem um dado número de barbeiros e um dado número de cadeiras. Sempre há um numero maior de cadeiras do que de barbeiros para que os clientes possam esperar os barbeiros sentados. Sempre que um barbeiro não tem clientes ele aproveita para dormir. Quando um cliente chega a barbearia, ele dever acordar o barbeiro para lhe cortar o cabelo, caso haja algum barbeiro dormindo. Caso contrario o cliente deve esperar alguma cadeira vaga. Se não houver cadeiras vagas o cliente deve ir embora. 09/03/10 20:13 Claudio de Oliveira –

24 Ilustração do problema dos barbeiros
09/03/10 20:13 Claudio de Oliveira –

25 Problema dos Leitores e Escritores
É uma generalização do problema do Produtor/Consumidor. O problema dos Leitores e Escritores representa um padrão habitual de comportamento de processos concorrentes, que acessam simultaneamente a base de dados compartilhada Os processos leitores, que apenas consultam essa base de dados, podem acessar simultaneamente a base. Os processos escritores, que modificam o conteúdo da base, exigem acesso exclusivo. Durante uma operação de escrita o acesso à tabela deve ser restrito a um único processo escritor. E agora, como resolver este impasse? 09/03/10 20:13 Claudio de Oliveira –


Carregar ppt "Claudio de Oliveira – claudio@infocao.com.br Thread 09/03/10 20:13 Claudio de Oliveira – claudio@infocao.com.br."

Apresentações semelhantes


Anúncios Google