1 threads prof. alexandre monteiro recife. contatos n prof. guilherme alexandre monteiro reinaldo n...

57
1 Threads Prof. Alexandre Monteiro Recife

Upload: internet

Post on 22-Apr-2015

112 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

1

Threads

Prof. Alexandre Monteiro

Recife

Page 2: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Contatos

Prof. Guilherme Alexandre Monteiro Reinaldo

Apelido: Alexandre Cordel

E-mail/gtalk: [email protected]

[email protected]

Site: http://www.alexandrecordel.com.br/fbv

Celular: (81) 9801-1878

Page 3: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

Ambiente Monothread• Em um ambiente monothread um processo só suporta

um programa no seu espaço de endereçamento• Neste ambiente aplicações concorrentes são

implementadas só com o uso de processos independentes ou subprocessos

- Nestes casos a aplicação é dividida em partes que podem trabalhar concorrentemente.

De forma simplificada um thread pode ser definido como uma sub-rotina de um programa que pode ser executada de forma assíncrona. Ou seja, executada paralelamente ao programa chamador.

Page 4: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Ambiente Monothread

A limitação da abordagem monothread é que o uso de processos consomem muitos recursos do sistema

Quando um processo é criado/eliminado deve-se alocar/desalocar recursos do sistema

Além disso, como cada processo tem seu espaço de endereçamento, a comunicação entre processos é mais lenta

• A comunicação pode usar pipes, sinais, trocas de mensagens,...

Na abordagem monothread cada processo tem seu próprio contexto de HW, SW e Espaço de Endereçamento, o que dificulta a comunicação entre processos

Page 5: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Ambiente Multithread

Neste ambiente não existe a idéia de programas associados a processos, mas, sim, a threads

O processo tem pelo menos um thread de execução, mas pode compartilhar o seu espaço de endereçamento com outros threads

Page 6: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

A grande diferença entre ambientes monothread e multithread está no uso do espaço de endereçamento

• Processos independentes ou subprocesso possuem espaços de endereçamento individuais e protegidos

• Multithreads compartilham o espaço de endereçamento dentro de um mesmo processo

- Como os threads compartilham o mesmo espaço de endereçamento, não se exige mecanismos para proteção no acesso a memória

- Isso permite que o compartilhamento de dados entre threads de um mesmo processo seja mais simples e rápido

Page 7: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Ambiente Multithread

Cada thread possui seu próprio contexto de HW, porém divide o mesmo contexto de SW e espaço de endereçamento com os demais threads do processo

Page 8: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

O programador especifica os threads associando-os às sub-rotinas assíncronas

• É assim que se obtém a execução concorrente de subrotinas dentro de um mesmo processo

Por exemplo:• Um programa principal (calculadora) com 4

sub-rotinas assíncronas (+,-,*,/) - Chama-se primeiro o thread do PP, o qual chama os 4

threads- Os 4 threads são executados independentemente do PP- E os 5 threads são executados concorrentemente

Page 9: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

Page 10: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

No ambiente multithread cada processo pode responder a várias solicitações concorrentemente ou simultaneamente (caso haja mais de uma CPU)

A vantagem no uso de threads é a possibilidade de minimizar a alocação de recursos do sistema

Threads compartilham a CPU igualmente a processos

• EX: enquanto um thread espera uma E/S, outro é executado

Page 11: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

Threads passam pelas mesmas mudanças de estado• (a) Pronto -> Execução• (b) Execução -> Bloqueado/Espera• (c) Bloqueado/Espera -> Pronto• (d) Execução -> Pronto

Para permitir a troca de contexto cada thread tem seu próprio contexto de HW• Thread em execução -> registradores ficam na

CPU• Thread parado -> registradores no seu contexto

de HW

Page 12: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

Semelhante a processos, threads são implementados internamente através de uma estrutura de dados

Bloco de Controle de Thread (Thread Control Block - TCB)

• O TCB armazena, além do contexto de HW, dados exclusivos sobre o thread, como prioridade e estado de execução

• PCB X TCB ?

Page 13: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

13

Implementação de Threads de Usuário

Um pacote de threads de usuário

Page 14: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

14

Implementação de Threads de Núcleo

Um pacote de threads gerenciado pelo núcleo

PCB TCB

Page 15: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Threads de Núcleo

Não é necessário o sistema de tempo de execução (runtime), pois o núcleo possui uma tabela de todas as threads no sistema.

As informações são as mesmas das threads de usuário, porém agora estão no espaço do núcleo, mantidas em uma tabela de threads e outra tabela de processos.

Todas as chamadas implementam chamdas de sistema (System Calls) a um custo considerável maior que as chamadas de (runtime).

Tentam executar todas as threads de um processo para só então chavear o processo.

Custo alto de chamadas de sistema = Reciclagem de threads.

Page 16: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

16

Implementações Híbridas

Multiplexação de threads de usuário sobre threads de núcleo

Page 17: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Threads Híbridas

Multiplexar threads de usuários sobre threads de núcleo.

O núcleo sabem apenas sobre as threads de núcleo.

Cada thread de núcleo possui algum conjunto de threads de usuário que aguarda sua vez para usar o processador.

Page 18: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Threads (ou Processo Leve) Thread é uma unidade básica de utilização da CPU, que

consiste em:

1. Apontador de instruções

2. Conjunto de registradores

3. Espaço de pilha Uma Thread compartilha com Threads irmãs:

1. Área de código

2. Área de Dados

3. Recursos do SO (coletivamente conhecidos como tarefas)

Um Processo tradicional é equivalente uma tarefa com uma única Thread.

Page 19: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Interação entre Threads

TCB 1

TCB 2

Page 20: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Múltiplas Threads em uma tarefa

TCBs

Page 21: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread Foi introduzido para reduzir o tempo gasto na criação,

eliminação e troca de contexto de processos

Em um ambiente multithead um processo suporta múltiplos threads (um para cada parte do código da aplicação)

• Neste caso não há a necessidade de vários processos para a implementação da concorrência.

• Isto permite compartilhar o espaço de endereçamento e o contexto de SW entre os threads e garantir que cada thread seja executado de forma independente

Page 22: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

22

ThreadsO Modelo de Thread (1)

(a) Três processos cada um com um thread

(b) Um processo com três threads

Page 23: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread - Benefícios

Numa Thread dotada de múltiplos fluxos de execução, enquanto um fluxo está bloqueado, um outro fluxo na mesma tarefa pode continuar executando

Cooperação de múltiplas threads em uma mesma tarefa aumenta o throughput (quantidade de dados processados em um determinado espaço de tempo) e o desempenho.

Aplicações que requerem o compartilhamento de Buffers (Ex. produtores e consumidores) se beneficiam da utilização de threads.

O mecanismo de thread permite que processos sequenciais sejam executados paralelamente, apesar de poderem fazer chamadas ao sistema que bloqueiam processos

Page 24: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Threads: Motivação Concorrência Problemas:

• Programas que precisam de mais poder computacional

• Dificuldade de implementação de CPUs mais rápidas

Solução:

• Construção de computadores capazes de executar várias tarefas simultaneamente

Page 25: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Problema da Concorrência

Não-determinismo

– x = 1 || x = 2

• Qual o valor de “x” após a sua execução?

Dependência de Velocidade

– [[ f(); x = 1 ]] || [[ g(); x = 2 ]]

– O valor final de x depende de qual das funções, f() e g(), terminar primeiro

Starvation

– Processo de baixa prioridade precisa de um recurso que nunca é fornecido a ele...

Page 26: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Problemas de Concorrência

Deadlock

• Um sistema de bibliotecas só fornece o “nada consta” para alunos matriculados e o sistema de matricula só matricula os alunos perante a apresentação do “nada consta”

– Definição: dois processos bloqueiam a sua execução pois um precisa de um recurso bloqueado pelo outro processo.

Conceitos: starvation e deadlock (Veremos mais detalhes)

Page 27: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

27

O Modelo de Thread (2)

• Items compartilhados por todos os threads em um processo• Itens privativos de cada thread

Compartilhados Privativos

Page 28: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

28

O Modelo de Thread (3)

Cada thread tem sua própria pilha

Page 29: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

Em ambientes cliente-servidor, múltiplos threads permitem que diversos pedidos sejam atendidos simultaneamente

Em multithread um thread pode solicitar um serviço remoto, e a aplicação pode continuar executando outras atividades.

Em monothread uma aplicação pode ficar esperando indefinidamente o resultado de um serviço remoto

Page 30: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

Page 31: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread

Arquitetura e implementação

Pacote de threads = conjunto de rotinas para que uma aplicação utilize threads

Tipos de arquiteturas mais usuais

• Threads em Modo Usuário• Threads em Modo Kernel

Page 32: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread em modo usuário São implementados pela aplicação e não pelo SO

Deve existir uma biblioteca de rotinas que possibilite à aplicação realizar tarefas como:

• Criação/eliminação de threads• Troca de mensagens entre threads• Política de escalonamento

Neste modo o SO desconhece a existência de múltiplos threads, sendo responsabilidade da aplicação gerenciar/sincronizar os threads

A troca de contexto entre threads é feita em modo usuário pelo escalonador embutido em uma biblioteca:

- Não necessita privilégios especiais - Escalonamento depende da implementação

Page 33: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Thread em modo usuário

A vantagem desse modelo é a possibilidade de implementar aplicações multithreads mesmo em SO monothread

É rápida e eficiente, pois dispensa acessos ao kernel,

• Isto evita a mudança de modo de acesso (Usuário-Kernel-Usuário -> realiza TRAP)

Page 34: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

34

Implementação de Threads de Usuário

Um pacote de threads de usuário

Page 35: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Threads em Modo Usuário Inserido no espaço do usuário e implementados por uma

biblioteca, executados em um sistema de tempo de execução (runtime = coleção de rotinas que gerenciam threads).

O núcleo não é informado sobre eles, pois o núcleo gerencia processos normais monothreads, e o chaveamento entre threads de usuário é mais rápido que desviar o controle para o núcleo.

1ª vantagem é que pode ser implementado em um SO que não suportada threads e 2ª vantagem é que permitem a cada processo ter seu próprio algoritmo de escalonamento.

Usa Tabela de Threads (TCB) para manter o controle das threads naquele processo e escalonam melhor, pois dividem o mesmo espaço de endereçamento e contexto de software.

Desvantagem é chavear threads de processos realizando trap.

Page 36: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Threads de Modo Usuário Sua grande limitação é o fato do SO gerenciar cada

processo como se existisse apenas um único thread• No momento que um thread entra em estado

bloqueado/espera todo o processo é colocado em bloqueado/espera

• Para contornar isso, a biblioteca deve ter rotinas que substituam as rotinas bloqueadas por outras que não possam bloquear um thread

- Todo esse controle é transparente para o usuário e SO

O fato do SO gerenciar o processo como um thread, também compromete o escalonamento e o tratamento de sinais

• Os sinais enviados para um processo devem ser reconhecidos e enviado para cada thread

• O escalonamento não é possível, pois os múltiplos threads de um processo não são executados em CPUs diferentes simultaneamente

- Os threads de um processo são executados em uma CPU por vez

Page 37: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Exemplo de Thread (runtime)

Biblioteca: executados em um sistema de tempo de execução (runtime = coleção de rotinas que gerenciam threads).

Page 38: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Exemplo de Thread (runtime) São implementados diretamento pelo Kernel, através de

chamadas a rotinas do SO

O SO conhece cada thread e escalona-os individualmente

No caso de múltiplas CPUs, os threads de um mesmo processo podem ser executados simultaneamente

Sua grande limitação é seu baixo desempenho• Exige muita troca de modo de acesso (Usuário-Kernel-

Usuário)

Page 39: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

39

Implementação de Threads de Núcleo

Um pacote de threads gerenciado pelo núcleo

PCB TCB

Page 40: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Modelo de Programação

Um fator importante em multithread é o total de threads

• Muitos threads poderão sobrecarregar o sistema (desempenho ruim)

Para usufruir de thread, uma aplicação deve permitir que partes do seu código executem em paralelo e independente

Se um aplicativo executa muitas E/S e trata eventos assíncronos, a multithread aumenta o desempenho

• EX: SGBDs, Servidores de Impressão O desenvolvimento multithread não é simples,

exigindo muito sincronismos para evitar problemas de inconsistência e deadlock.

Page 41: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

41

Uso de Thread (1)

Um processador de texto com três threads

Thread formata e reformata o conteúdo em segundo plano a medida em que o usuário digita novos teto do editor

Thread interativo com o usuário, trata dos textos digitados pelo usuário

Thread que realiza backups em disco a cada período de tempo, sem interferir nos outros dois.

Page 42: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

42

Uso de Thread (2)

Um servidor web com múltiplos threads

Page 43: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

43

Uso de Thread (3)

(a) Thread despachante: lê as requisições de trabalho que chegam da rede.

(b) Depois de examinar a requisição ele escolhe o Thread Operário ocioso (bloqueado) e entrega-lhe a requisição, colocando –o em estado de pronto. Em seguida o operário verifica se a requisição está na cache de páginas web. Se estiver entrega-o ao cliente e bloqueia o operário. Senão, bloqueia e procura em disco. Enquanto isso, outra requisição do despachante é atendida.

Page 44: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

44

Uso de Thread (4)

Três maneiras de construir um servidor

Page 45: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

45

Ativações do Escalonador Objetivo – imitar a funcionalidade dos threads de núcleo

• ganha desempenho de threads de usuário Evita transições usuário/núcleo desnecessárias Núcleo atribui processadores virtuais para cada processo

– deixa o sistema supervisor alocar threads para processadores

Problema:Baseia-se fundamentalmente nos upcalls - o núcleo (camada inferior) chamando procedimentos no espaço do usuário (camada superior)

Page 46: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Implementando modelo N:1

Page 47: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Vantagens e Desvantagens

Vantagens: • SO divide o tempo do processado entre os processos

“pesados” e, a biblioteca de threads divide o tempo do processo entre as threads, sem interação/intervenção do SO.

Desvantagens• Uma thread que realiza uma chamada de sistema

bloqueante leve ao bloqueio de todo o processo- Operações de entrada/saída

• Não explora paralelismo em máquinas multiprocessadoras.

Page 48: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Implementando modelo 1:1

Page 49: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Modelo 1:1 Threads a nível de sistema

• Kernel Level Threads ou ainda System Scope

Resolver desvantagens do modelo 1:1• SO mantém informações sobre processos e sobre threads • Troca de contexto necessita da intervenção do SO

O conceito de thread é considerado na implementação do SO.

Vantagens: • Explora paralelismo de máquinas multiprocessadoras• Facilita o recobrimento de entrada/saída por cálculos

Desvantagens • Implementação mais pesada que o modelo N:1

Page 50: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Implementando modelo M:N

Page 51: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Modelo M:N Abordagem que combina modelo N:1 e 1:1

Oferece dois níveis de escalonamento

• Nível usuário: threads sobre unidade de escalonamento

• Nível sistema: unidades de escalonamento sobre processador

Dificuldade é parametrizar M e N

Page 52: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Processos X Threads

Tipos de sistemas

• 1 processo com 1 thread: MSDOS• N processos, cada um com 1 thread: OS/386, VAX/VMS, Windows 3.1, UNIX antigo

• 1 processo com N threads: kernels para sistemas embarcados

• N processos, cada um com N threads: Windows 95/98,NT, UNIX

Page 53: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

53

Threads Pop-Up

Criação de um novo thread quando chega uma mensagem(a) antes da mensagem chegar

(b) depois da mensagem chegar

Requisição de serviço

Page 54: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Threads Pop-up Normalmente usado em sistemas distribuídos são threads

novos sem qualquer história (registradores, pilhas, TCB) que deva ser restaurada e inicia recém-criado e é igual ao demais

Ao novo thread é dada uma mensagem para processar: (mensagem chega, é aceita, conteúdo examinado e então é processada)

A vantagem é que a latência entre a chegada da mensagem e o início do processamento pode ser muito pequena

Pode executar no espaço do núcleo ou do usuário, mas no núcleo é, em geral, mais fácil e rápido

Além disso, no núcleo pode ter acesso a todas as tabelas e aos dispositivos de E/S necessários ao processamento de interrupções.

Planejamento prévio: (em qual processo o thread executa?)

Page 55: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Porque utilizar threads?

Permitir o paralelismo real oferecidos por máquinas multiprocessadores (modelo N:1 e 1:1)

Aumentar o número de atividades executadas por unidade de tempo (throughput)

Diminuir o tempo de resposta• Possibilidade de associar threads a dispositivos

de E/S Sobrepor operações de cálculo com operações de E/S

Page 56: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Vantagens de Mutithreading

Tempo de criação/destruição de threads é inferior ao tempo de criação/destruição de processos

Chaveamento de contexto entre threads é mais rápido em tempo que chaveamento entre processos

Como threads compartilham o descritor do processo que as contem, elas dividem o mesmo espaço de endereçamento o que permite a comunicação por memória compartilhada, sem interação com o núcleo

Page 57: 1 Threads Prof. Alexandre Monteiro Recife. Contatos n Prof. Guilherme Alexandre Monteiro Reinaldo n Apelido: Alexandre Cordel n E-mail/gtalk: alexandrecordel@gmail.comalexandrecordel@gmail.com

Referências

Sistemas Operacionais Modernos – 3ª Edição. A. Tanenbaum, 2008.

Modern Operating Systems 3 e. Prentice-Hall, 2008.