1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4....

33
1 Conteúdo •1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação

Transcript of 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4....

Page 1: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

1

Conteúdo

•1. Introdução Threads2. Ambiente Monothread3. Ambiente Multithread4. Arquitetura e Implementação5. Modelos de Programação

Page 2: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Thread•Até o final da década de 1970, SOs suportavam apenas processos com um único thread

•um processo com apenas um único programa fazendo parte do seu contexto

•Em 1979, durante o desenvolvimento do SO Toth, foi introduzido o conceito de processos lightweight (peso leve), onde o espaço de endereçamento de um processo era compartilhado por vários programas.

•Este conceito revolucionário só foi utilizado comercialmente em meados de 1980, com o desenvolvimento do sistema operacional Mach na Universidade de Carnegie Mellon, ficou clara a separação entre o conceito de processo e thread.

Page 3: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Thread•A partir do conceito de múltiplos threads é possível projetar e implementar aplicações concorrentes de forma eficiente, pois um processo pode ter partes diferentes do seu código sendo executadas em paralelo, com um menor overhead do que utilizando múltiplos processos.

•Como os threads de um mesmo processo compartilham o mesmo espaço de endereçamento, a comunicação entre threads não envolve mecanismos lentos de intercomunicação entre processos, aumentando o desempenho da aplicação.

Page 4: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Thread

•A programação multithread não é simples. A presença do paralelismo introduz um novo conjunto de problemas como a comunicação e sincronização de threads.

•O conceito de multithread pode ser encontrado em diversos sistemas operacionais, como no Sun Solaris e Microsoft Windows 2000.

• A utilização comercial de SOs multithread é crescente em função do aumento da popularidade dos sistemas com múltiplos processadores, do modelo cliente-servidor e dos sistemas distribuídos.

Page 5: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MONOTHREAD •Um programa é uma seqüência de instruções, composta por desvios, repetições e chamadas a procedimentos e funções.

•Em um ambiente monothread, um processo suporta apenas um programa no seu espaço de endereçamento.

•Neste ambiente, aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos, que permitem dividir uma aplicação em partes que podem trabalhar de forma concorrente, como por exemplo, em um software de gerenciamento de e-mails.

•Com o uso de múltiplos processos, cada funcionalidade do software implicaria a criação de um novo processo para atendê-la, aumentando o desempenho da aplicação.

Page 6: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

6 – Thread Subprocessos e Processos Independentes

6/1

Subprocessos Processos Independentes

Page 7: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MONOTHREAD •Ao usar múltiplos processos, têm-se um problema de utilizar processos de desenvolvimento de aplicações concorrentes, que demanda consumo de diversos recursos do sistema.

•Sempre que um novo processo é criado, o sistema deve alocar recursos para cada processo, consumindo tempo de processador neste trabalho.

•No caso do término do processo, o sistema dispensa tempo para desalocar recursos previamente alocados.

•Outro problema é que cada processo possui seu próprio espaço de endereçamento, a comunicação entre processos torna-se difícil e lenta, pois utiliza mecanismos como pipes, sinais, semáforos, memória compartilhada ou troca de mensagens. O compartilhamento entre processos concorrentes não é simples.

Page 8: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

6 – Thread Ambiente Monothread

6/2

Th rea d Th rea dTh rea d

•São exemplos de sistemas monothread, o Microsoft MS-DOS, as primeiras versões do MS-Windows, VAX/VMS e Unix.

Page 9: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MULTITHREAD•Em um ambiente multithread, ou seja, com múltiplos threads, não existe a idéia de programas associados a processos, mas, sim, a threads.

•O processo, neste ambiente, tem pelo menos um thread de execução, mas pode compartilhar o seu espaço de endereçamento com inúmeros outros threads.

•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.

•O programador deve especificar os threads, associando-os às sub-rotinas assíncronas. Um ambiente multithread, possibilita a execução concorrente de sub-rotinas dentro de um mesmo processo.

Page 10: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

6 – Thread Ambiente Multithread

6/3

C on textod e h a rd w a re

C on textod e h a rd w a re

C on textod e h a rd w a re

Esp aço d een dereça m en to

Co

nte

xto

de

soft

wa

re

Th rea d 3Th rea d 2Th rea d 1

Page 11: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MULTITHREAD•Programas não são associados a processos, mas sim, a threads;

•Um processo tem pelo menos uma thread em execução, todavia, pode compartilhar seu espaço de endereçamento com inúmeras threads;

•Uma thread pode ser definida como uma sub-rotina de um programa que pode ser executada de forma assíncrona, ou seja, executada paralelamente ao programa chamador;

· Threads compartilham o processador da mesma forma que processos e passam pelas mesmas mudanças de estado;

· Cada thread possui seu próprio contexto de hardware, porém, dentro de um mesmo processo, compartilham seus contextos de software e espaço de endereçamento.

Page 12: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

6 – Thread Aplicação Multithread

6/4

Esp aço d een dereça m en to

Processo

Program a Pr in cipa l

Co

nte

xto

de

Ha

rdw

are

Co

nte

xto

de

Ha

rdw

are

Co

nte

xto

de

Ha

rdw

are

C a l l Su b_1

C a ll Su b_2

Th rea d_1

Th rea d_2

Th rea d_3

PCSP

PCSP

PCSP

Fim

Sub _2

Va riáve is

Ret

Sub _1

Ret

...

...

•Os 3 threads são executados concorrentemente.

Page 13: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MULTITHREAD· Threads são implementadas através de uma estrutura de dados denominada Thread Control Block ( TCB );

•Como todas as threads de um processo acessam um mesmo espaço de endereçamento, não há qualquer proteção à memória, permitindo que uma thread altere dados de outras. Para que threads trabalhem de forma cooperativa, é fundamental que a aplicação implemente mecanismos de comunicação esincronização entre threads, a fim de garantir o acesso seguro aos dados compartilhados na memória;

•A utilização de threads pode melhorar o desempenho da aplicação executando tarefas em background enquanto operações E/S estão sendo processadas;

Page 14: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

6 – Thread Aplicação Multithread

6/5

Th rea d d een trada

Th rea d d eg ravaçã o

Th rea d d eexib ição

Bu ffer

Page 15: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MULTITHREAD•Em ambientes cliente-servidor, threads são essenciais para solicitações de serviços remotos, pois no Monothread uma solicitação de serviço pode esperar indefinidamente , enquanto aguarda o resultado; No multithreads, múltiplos threads permitem que diversos pedidos sejam atendidos simultaneamente.

· O próprio núcleo do sistema operacional pode fazer uso do multithreading. Por exemplo, na arquitetura microkernel.

Page 16: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

6 – Thread Aplicação Multithread

6/6

So licita ções

Processo se rvido r

Th rea dTh rea d

Processo clienteProcesso cliente Processo cliente

Th rea d

Page 17: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MULTITHREAD•O uso de multithreads proporciona uma série de benefícios.

•Programas concorrentes com múltiplos threads são mais rápidos do que programas concorrentes implementados com múltiplos processos, pois operações de criação, troca de contexto e eliminação dos threads geram menor overhead.

•Como os threads dentro de um processo dividem o mesmo espaço de endereçamento, a comunicação entre eles pode ser realizada de forma rápida e eficiente.

•Além disso, threads em um mesmo processo podem compartilhar facilmente outros recursos, como descritores de arquivos, temporizadores, sinais, atributos de segurança, etc.

Page 18: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

AMBIENTE MULTITHREAD•Latência de Processos e Threads – (Vahalia, 1996)

Page 19: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

ARQUITETURA E IMPLEMENTAÇÃO•Pacote de threads é o conjunto de rotinas disponíveis para que uma aplicação utilize as facilidades dos threads;

· Um pacote de threads pode ser implementado sob diversas abordagens em um SO, o que influi diretamente no desempenho, na concorrência e na modularidade das aplicações multithread;

· Threads podem ser oferecidas por uma biblioteca de rotinas fora do núcleo do SO ( modo usuário ), pelo próprio núcleo do sistema ( modo Kernel ), por uma combinação de ambos ( modo híbrido ) ou por um modelo conhecido como SchedulerActivations;

Page 20: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

ARQUITETURA E IMPLEMENTAÇÃO•Diversas arquiteturas para diferentes ambientes operacionais:

Page 21: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

ARQUITETURA E IMPLEMENTAÇÃO•Uma das grandes dificuldades para a utilização de threads foi a ausência de um padrão.

•Em 1995, o padrão POSIX P1003.1c foi aprovado e posteriormente atualizado para a versão P1003.4a. Com este padrão, também conhecido como Pthreads, aplicações comerciais multithreading tornaram-se mais simples e de fácil implementação.

•O padrão Pthreads é largamente utilizado em ambientes Unix, como o Sun Solaris Pthreads e o DECthreads para Digital OSF/1.

Page 22: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

THREADS EM MODO USUÁRIO ( TMU )•São implementadas pela aplicação e não pelo sistema operacional;

•Deve existir uma biblioteca de rotinas que possibilite à aplicação realizar tarefas como criação/eliminação de threads, troca de mensagens entre threads e uma política de escalonamento.

•O sistema operacional não sabe da existência de múltiplas threads, sendo responsabilidade exclusiva da aplicação gerenciar e sincronizar os diversos threads existentes.

•A vantagem deste modelo é a possibilidade de implementar aplicações multithreads mesmo em sistemas operacionais que não suportam threads. Utilizando a biblioteca, múltiplos threads podem ser criados, compartilhando o mesmo espaço de endereçamento do processo, além de outros recursos.

Page 23: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

THREADS EM MODO USUÁRIO ( TMU )•TMU são rápidos e eficientes por dispensarem acessos ao kernel do sistema operacional, evitando assim a mudança do modo de acesso.

M odou suá rio

M odokernel

Kernel

Bib lio teca

Thre

ad

0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1

M odou suá rio

M odokernelKernel

Thre

ad

0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1

Page 24: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

THREADS EM MODO USUÁRIO ( TMU )•TMU possuem uma grande limitação, pois o SO gerencia cada processo como se existisse apenas um único thread.

•No momento em que um thread chama uma rotina do sistema que o coloca em estado de espera (rotina bloqueante), todo o processo é colocado no estado de espera, mesmo havendo outros threads prontos para execução.

•Um dos maiores problemas na implementação de TMU seja o tratamento individual de sinais.

•Como o sistema reconhece apenas processos e não threads, os sinais enviados para um processo devem ser reconhecidos e encaminhados a cada thread para tratamento.

Page 25: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

THREADS EM MODO USUÁRIO ( TMU )VANTAGENS:

· Permitem a implementação de threads mesmo em sistemas operacionais que não suportam threads;

· São rápidos e eficientes por dispensarem o acesso ao kernel do sistema;

Page 26: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

THREADS EM MODO USUÁRIO ( TMU )DESVANTAGENS

•O SO gerencia o processo como se houvesse uma única thread.

•Quando uma thread chama uma rotina do sistema que o coloca em estado de espera, todo o processo é colocado em estado de espera, mesmo havendo outras threads prontas para execução;

· Tratamento individual de sinais. Como o SO reconhece apenas processos e não threads, os sinais enviados para um processo devem ser reconhecidos e encaminhados a cada thread para tratamento;

· Redução do grau de paralelismo. Não é possível que múltiplos threads possam ser executados em diferentes UCP’s simultaneamente. O sistema seleciona apenas processos para execução e threads de um processo podem ser executadassomente em um processador de cada vez.

Page 27: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

THREADS EM MODO KERNEL ( TMK )· São implementadas diretamente pelo núcleo do sistema operacional;

VANTAGENS:

· O sistema operacional sabe da existência de cada thread e pode escaloná-las individualmente;

· Caso haja múltiplos processadores, threads de um mesmo processo podem ser executadas simultaneamente;

Page 28: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

THREADS EM MODO KERNEL ( TMK )DESVANTAGENS:

· Baixo desempenho. Enquanto nos pacotes em modo usuário todo o tratamento é feito sem a ajuda no SO , no modo kernel são utilizadas chamadas a rotinas do sistema e, conseqüentemente, há várias mudanças no modo de acesso;

Page 29: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

6 – ThreadTHREADS EM MODO HÍBRIDO

6/7

•Combina vantagens de threads implementadas em modo usuário ( TMU ) e threadsem modo Kernel ( TMK );

•Um processo pode ter vários TMK e, por sua vez, um TMK pode ter vários TMU;

•Um TMU pode ser executado em um TMK e, em um instante seguinte, ser executadoem outro;

VANTAGENS

· Maior flexibilidade

Page 30: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

6 – ThreadTHREADS EM MODO HÍBRIDO

6/7

DESVANTAGENS:

· Apresenta problemas herdados de ambas implementações. Por exemplo, umachamada de bloqueio de uma TMK bloqueia todos os TMU, que são colocados emespera;

· TMU’s que precisam utilizar diferentes processadores precisam utilizar diferentesTMK, o que reduz o desempenho.

Page 31: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

6 – ThreadSCHEDULER ACTIVATIONS

6/7

•Os problemas apresentados no pacote de threads em modo híbrido existem devido àfalta de comunicação entre os threads em modo usuário e modo kernel;· Usa o melhor do modo usuário e do modo kernel, através de uma estrutura de dadoschamada scheduler activations;

· Alcança um melhor desempenho evitando mudanças de modos de acesso que nãosejam necessárias;

· Caso uma thread utilize uma chamada ao sistema que o coloque no estado de espera,não é necessário que o kernel seja ativado, basta que a própria biblioteca escaloneoutra thread;

· Bibliotecas em modo usuário e kernel se comunicam, trabalhando de formacooperativa;

Page 32: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Arqu

itetu

ra d

e Si

stem

as O

pera

cion

ais

– M

acha

do/M

aia

MODELOS DE PROGRAMAÇÃO

6/7

•O desenvolvimento de aplicações multithread não é simples, pois exige que acomunicação e o compartilhamento de recursos entre as diversas threads sejam feitosde forma sincronizada para evitar inconsistências e deadlock;

· O número máximo de threads é um fator importante. Caso um número muito grandeseja criado, poderá haver um overhead no sistema, ocasionando uma queda dedesempenho;

· O número de threads pode ser dinâmico ou estático;

· Para permitir a implementação de threads, uma aplicação deve permitir que partesdiferentes do seu código sejam executadas em paralelo, de forma independente.

· Exemplos de aplicações de multithreading:o SGBDso Servidores de arquivos ou impressão

Page 33: 1 Conteúdo • 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.

Threads em Modo Híbrido e Scheduler Activations

6/8

M odou suá rio

M odokernel

Kernel

TM K 0 TM K 3TM K 2TM K 1

Bib lio teca

TMU

0

TMU

4

TMU

5

TMU

3

TMU

2

TMU

1

M odou suá rio

M odokernelKernel

Bib lio teca

Thre

ad

0

Thre

ad

4

Thre

ad

3

Thre

ad

2

Thre

ad

1