Você está na página 1de 57

Arquitetura de Sistemas Operacionais – Machado/Maia

Arquitetura de Sistemas
Operacionais

Capítulo 6
Thread

Cap. 6 – Thread 1
Sumário
Arquitetura de Sistemas Operacionais – Machado/Maia

• Introdução
• Ambiente monothread
• Ambiente multithread
• Arquitetura e implementação
• Modelos de programação

Cap. 6 – Thread 2
Introdução
• Até o final da década de 1970, S.O.
Arquitetura de Sistemas Operacionais – Machado/Maia

(Tops-10, MVS, UNIX) eram


monothread;
• Em1979, o S.O. Toth introduziu
processos lightweight (peso leve),
onde o espaço de endereçamento era
compartilhado por vários processos;
• Este conceito, só foi utilizado nos
meados 1980, somente como o
desenvolvimento do S.O. March ficou
claro a separação entre processo e
threads;
Cap. 6 – Thread 3
Introdução
• Usando multithread pode-se
Arquitetura de Sistemas Operacionais – Machado/Maia

desenvolver aplicações concorrentes de


forma mais eficiente;
• Um processo pode ter partes diferentes
do código sendo executada em
paralelo, com menos overhead;
• Como os threads compartilham o
mesmo espaço de endereçamento (no
mesmo processo), a comunicação é
feita de forma eficiente, aumentando o
desempenho;

Cap. 6 – Thread 4
Introdução
• A presença de paralelismo gera
Arquitetura de Sistemas Operacionais – Machado/Maia

problemas de comunicação e
sincronização entre os threads, assim o
desenvolvimento de aplicações não é
trivial;
• Existem vários modelos para a
implementação de threads no S.O.;
• Deve-se considerar:
– Desempenho;
– Flexibilidade;
– Custo.

Cap. 6 – Thread 5
Introdução
Arquitetura de Sistemas Operacionais – Machado/Maia

• Multithreads são utilizados em diversos


S.O. (Solaris, Windows 2000);
• A utilização crescente deve-se:
– Multiprocessadores;
– Modelo cliente-servidor;
– Sistemas distribuídos.

Cap. 6 – Thread 6
Ambiente Monothread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Um programa é uma seqüência de


instruções;
• O ambiente monothread suporta
apenas um programa no seu espaço de
endereçamento;
• Neste ambiente, aplicações
concorrentes são implementadas com o
uso de processos e subprocessos;

Cap. 6 – Thread 7
Ambiente Monothread
Arquitetura de Sistemas Operacionais – Machado/Maia

• O uso de processos e subprocessos


permite dividir uma aplicação em
partes para trabalhar de forma
concorrente;
• Exemplo, um usuário pode ler mails
antigos, enquanto envia e recebe
mails;
• Com múltiplos processos, cada
atividade esta associada a um
processo, aumentado o desempenho;

Cap. 6 – Thread 8
Ambiente Monothread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Concorrência com processos

Su b p ro ce sso s Pro ce sso s In d e p e n d e n te s

Cap. 6 – Thread 9
Ambiente Monothread
Arquitetura de Sistemas Operacionais – Machado/Maia

• O problema desta solução é o consumo de


recursos;
• Quando um processo é criado, o S.O. deve
alocar recursos para o processo, consumindo
tempo de CPU;
• No término do processo, tempo de CPU é
gasto para liberar os recursos;
• Outro problema é o espaço de
endereçamento, pois cada processo possui o
seu, tornando a comunicação difícil e lenta,
tornando necessária mecanismos para
executar a comunicação com segurança;
Cap. 6 – Thread 10
Ambiente Monothread
Arquitetura de Sistemas Operacionais – Machado/Maia

• O compartilhamento de recursos
comuns (arquivos abertos, memória)
não é simples;
• Exemplos de S.O. monothread:
– MS-DOS;
– Primeiras versões do Windows;
– Mesmo em S.O. multiprogramavéis e
multiusuários: VAX/VMS e Unix;

Cap. 6 – Thread 11
Ambiente Monothread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Ambiente monothread
• Três threads necessitam de três
processos;

Th re a d Th re a d Th re a d

Cap. 6 – Thread 12
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Em ambientes multithread, programas


são associados à threads e não a
processos;
• O processo tem pelo menos uma
thread, mas pode compartilhar o seu
espaço de endereçamento com outros
threads;

Cap. 6 – Thread 13
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Ambiente multithread
• 3 threads
• 1 processo
C o n te xto C o n te xto Co n te xto
d e h a rd w a re d e h a rd w a re d e h a rd w a re

C o n te xto d e
so ftw a r e

Th re a d 1 Th re a d 2 Th re a d 3

Esp a ço d e
e n d e r e ça m e n to

Cap. 6 – Thread 14
Ambiente Multithread
• Simplificando, um thread pode ser
Arquitetura de Sistemas Operacionais – Machado/Maia

definido como uma sub-rotina de um


programa, podendo ser executada de
forma assíncrona, ou seja
paralelamente ao programa chamador;
• O programador especifica os threads,
associando-os às sub-rotinas
assíncronas;
• O ambiente multithread permite a
execução concorrente de sub-rotinas
dentro de um mesmo programa;

Cap. 6 – Thread 15
Ambiente MultithreadPr o ce ss o
Arquitetura de Sistemas Operacionais – Machado/Maia

Aplicação
Esp a ço d e
e n d e r e ça m e n to

...
multithread Va riá ve is
Th re a d _1

C o n te xto d e
H a r d w a re
Pr o g r a m a Pr in cip a l PC
SP

C a ll Su b _1

C a ll Su b _2

Fim Th re a d _2

C o n te xto d e
H a r d w a re
PC
Su b _1
SP

Re t Th re a d _3

C o n te xto d e
H a r d w a re
Su b _2 PC
SP

Re t

...

Cap. 6 – Thread 16
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Neste ambiente, cada processo pode


responder a várias solicitações
concorrentemente ou simultaneamente
(multiprocessadores);
• A grande vantagem é minimizar a
alocação de recursos, além de diminuir
o overhread na criação, eliminação,
comunicação e sincronização de
processos;

Cap. 6 – Thread 17
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Threads compartilham o processador


da mesma forma que os processos e
passam pela mesmas mudanças de
estado (execução, espera, pronto);
• Para a troca de contexto, cada thread
possui o seu próprio contexto de
hardware;
• Os threads, dentro do mesmo
processo, compartilham o contexto de
software e espaço de endereçamento;

Cap. 6 – Thread 18
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Threads são implementadas em uma


estrutura de dados chamada de bloco
de controle de thread (thread control
block – TCB)
• O TCB armazena, além do contexto de
hardware, informações relacionadas
exclusivamente ao thread, por
exemplo, prioridade, estado de
execução, bits de estado, etc.

Cap. 6 – Thread 19
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Em ambientes monothread, o processo


é a unidade de alocação de recursos e
a unidade de escalonamento, já no
ambiente multithread, a unidade de
alocação é o processo, e cada thread
representa uma unidade de
escalonamento independente;
• Neste caso, o O.S. não seleciona um
processo para a execução, mas um de
seus threads;

Cap. 6 – Thread 20
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• O uso do espaço de endereçamento é a


grande diferença entre as aplicações
mono e multithread;
• Processos e subprocessos possuem
espaços de endereçamento próprios,
individuais e protegidos, enquanto
threads compartilham-no;
• Assim o compartilhamento de dados
entre threads, do mesmo processo, é
simples e rápido;

Cap. 6 – Thread 21
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Como não existe proteção no acesso à


memória quando se usa threads, pode,
facilmente, alterar os dados de outros
threads, assim é fundamental que se
implemente mecanismos de
comunicação e sincronismo para
garantir a segurança no acesso aos
dados;

Cap. 6 – Thread 22
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Benefícios do uso de multithreads:


– São mais rápidos que programas
concorrentes implementados com
múltiplos processos;
– Compartilham facilmente os recursos,
como descritores de arquivos,
temporizadores, sinais, atributos de
segurança, etc.

Cap. 6 – Thread 23
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

Implementação Tempo de criação Tempo de


(s) sincronização (s)
Processo 1700 200
Processo lightweight 350 390
Thread 52 66

Cap. 6 – Thread 24
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• A utilização de processador, dos discos, etc.


pode ser feita de forma concorrente, usando
múltiplos threads, melhorando, assim, a
utilização de recursos;
• Em alguns casos, o uso de thread melhora o
desempenho da aplicação, apenas por
executar tarefas em backgound enquanto
E/S são executadas;
• Editores de texto, planilhas, aplicativos
gráficos, processadores de imagens são
especialmente beneficiados quando se utiliza
threads;

Cap. 6 – Thread 25
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Aplicação
multithread (a)

Th re a d d e
e n tr a d a

Bu ffe r

Th re a d d e Th re a d d e
e xib içã o g ra va çã o

Cap. 6 – Thread 26
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Em ambientes cliente-servidor são


essências para as solicitações de
serviços remotos;
• Em um ambiente monothread, se uma
aplicação solicita um serviço remoto,
ela tem de esperar indefinidamente até
a solicitação ser atendida;
• Já no multithread, pode-se solicitar um
serviço e continuar com outras
atividades;

Cap. 6 – Thread 27
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Já para o processo que atende a


solicitação, o uso de multithread
permite atender diversos pedidos
concorrentemente/simultaneamente;
• O núcleo do S.O., também, pode ser
implementado utilizando-se de
multithread de forma vantajosa, como
na arquitetura microkernel;

Cap. 6 – Thread 28
Ambiente Multithread
Arquitetura de Sistemas Operacionais – Machado/Maia

• Aplicação Pr o ce ss o se rvid o r

multithread (b)

So licita çõ e s

Th re a d Th re a d Th re a d

Pr o ce ss o clie n te Pr o ce ss o clie n te Pr o ce ss o clie n te

Cap. 6 – Thread 29
Arquitetura e Implementação
Arquitetura de Sistemas Operacionais – Machado/Maia

• O pacote de threads é o conjunto de


rotinas disponíveis para usar os
threads;
• existem as diferentes abordagens para
a sua implementação que influenciará
no desempenho, concorrência e na
modularidade das aplicações
multithreads;

Cap. 6 – Thread 30
Arquitetura e Implementação
Arquitetura de Sistemas Operacionais – Machado/Maia

• Threads podem ser oferecidas por:


– Bibliotecas de rotinas fora do núcleo do
S.O. (modo usuário);
– Pelo núcleo do S.O (modo kernel);
– Combinação dos dois acima (modo
híbrido);
– Scheduler Activations.

Cap. 6 – Thread 31
Arquitetura e Implementação
Arquitetura de Sistemas Operacionais – Machado/Maia

Ambiente Arquitetura

Distributed Computing Environment Modo usuário


(DCE)
Compaq Open VMS versão 6 Modo usuário
Microsoft Windows 2000 Modo kernel
Compaq Unix Modo kernel
Compaq Open VMS versão 7 Modo kernel
Sun Solaris versão 2 Modo híbrido
Fast Threads Scheduler Activations

Cap. 6 – Thread 32
Arquitetura e Implementação
• Uma das dificuldades foi a ausência de
Arquitetura de Sistemas Operacionais – Machado/Maia

padrões, porém em 1995 o padrão


PSIX P1003.1c foi aprovado e depois
atualizado para POSIX 1003.4a,
conhecido, também, como Pthreads;
• A existência do padrão tornou as
aplicações comerciais multithreads
mais simples e de fácil implementação;
• Este padrão é largamente utilizado em
Unix (Sun Solaris Pthreads e Digital
OSF/1);

Cap. 6 – Thread 33
Modo Usuário
Arquitetura de Sistemas Operacionais – Machado/Maia

• Threads em modo usuário (TMU) são


implementadas pela aplicação e não
pelo S.O.;
• Para tanto, existe uma biblioteca de
rotinas para manipulação de threads
(criação, eliminação, troca de
mensagens, escalonamento, etc.);
• O S.O. não sabe a existência dos
threads;

Cap. 6 – Thread 34
Modo Usuário
Arquitetura de Sistemas Operacionais – Machado/Maia

• O trabalho de gerenciar os threads é


de responsabilidade exclusiva da
aplicação;
• Assim, pode-se implementar threads
em S.O. que não possuem suporte a
eles (grande vantagem);
• TMU são rápidos e eficientes por
dispensarem acesso ao kernel do S.O.,
evitando a mudança de modo de
acesso (usuário-kernel-usuário);

Cap. 6 – Thread 35
Modo Usuário
Arquitetura de Sistemas Operacionais – Machado/Maia

• A grande limitação dos TMU é que o


S.O. gerencia cada processo como só
existisse um único threads;
• Quando um thread chama uma rotina
do S.O. que o coloca em estado de
espera (rotina bloqueante) todo o
processo é colocado em estado de
espera, mesmo que existam threads
em estado de pronto;

Cap. 6 – Thread 36
Modo Usuário
Arquitetura de Sistemas Operacionais – Machado/Maia

• Para solucionar este problema a biblioteca


tem de substituir as rotinas bloqueantes por
outras que não causem o bloqueio (não-
bloqueantes);
• Todo este controle é transparente ao usuário
e ao S.O.;
• Um dos maiores problemas é o tratamento
individual de sinais;
• O sistema reconhece apenas o processo, os
sinais enviados ao processo devem ser
reconhecidos e encaminhados a cada um dos
threads para tratamento;
Cap. 6 – Thread 37
Modo Usuário
Arquitetura de Sistemas Operacionais – Machado/Maia

• O sistema reconhece apenas o


processo, os sinais enviados ao
processo devem ser reconhecidos e
encaminhados a cada um dos threads
para tratamento;
• As interrupções de clock esta limitação
é crítica, os sinais de temporalização
devem ser interceptados para que se
possa interromper o thread em
execução e executar a troca de
contexto;
Cap. 6 – Thread 38
Modo Usuário
Arquitetura de Sistemas Operacionais – Machado/Maia

• Em ambientes multiprocessados, não é


possível que threads de um mesmo
processo sejam executados em
processadores diferentes, reduzindo,
drasticamente, o grau de execução
paralela da aplicação;

Cap. 6 – Thread 39
Arquitetura de Sistemas Operacionais – Machado/Maia

Cap. 6 – Thread
Th r e a d 0

Th r e a d 1

Th re a d 2

Ke r n e l
Bib lio te ca

Th r e a d 3

Th r e a d 4
• Threads em modo usuário

Mo d o
Mo d o

ke rn e l
u su á rio
Modo Usuário

40
Modo kernel
• Threads em modo kernel (TMK) são
Arquitetura de Sistemas Operacionais – Machado/Maia

implementadas diretamente pelo


núcleo do S.O., através de chamadas
as rotinas de S.O.;
• O S.O. sabe da existência de todos os
threads, podendo escaloná-los
individualmente;
• Em ambientes multiprocessados os
threads de processo podem ser
executados simultaneamente (um em
cada processador);

Cap. 6 – Thread 41
Modo kernel
Arquitetura de Sistemas Operacionais – Machado/Maia

• O grande problema é o baixo


desempenho;
• No TMU o tratamento é feito sem a
ajuda do S.O., já o TMK utilizam
chamadas as rotinas do S.O.,
consequentemente, várias mudanças
no modo de acesso (usuário-kernel-
usuário);

Cap. 6 – Thread 42
Modo kernel
Arquitetura de Sistemas Operacionais – Machado/Maia

Implementação Operação 1 (s) Operação 2 (s)

Subprocessos 11.300 1.840


TMK 948 441
TMU 34 37

Cap. 6 – Thread 43
Arquitetura de Sistemas Operacionais – Machado/Maia

Cap. 6 – Thread
Th r e a d 0

Th r e a d 1

Th re a d 2
Ke r n e l

Th re a d 3
• Threads em modo kernel

Th re a d 4
Mo d o
Mo d o

ke rne l
u su á rio
Modo kernel

44
Modo híbrido
Arquitetura de Sistemas Operacionais – Machado/Maia

• A arquitetura de threads em modo


híbrido combina as vantagens do TMU
e TMK;
• Um processo pode ter vários TMK e um
TMK pode ter vários TMU;
• O núcleo do S.O. reconhece os TMK,
podendo assim, escaloná-los;
• Um TMU pode ser executado em um
TMK, e em outro instante em outro
TMK;

Cap. 6 – Thread 45
Modo híbrido
Arquitetura de Sistemas Operacionais – Machado/Maia

• O programador desenvolve a aplicação


em termos de TMU e especifica
quantos TMK serão associados;
• Os TMU são mapeados nos TMK
quando o processo esta sendo
executado;
• O programador utilizar somente TMK,
TMU ou uma combinação de ambos;

Cap. 6 – Thread 46
Modo híbrido
Arquitetura de Sistemas Operacionais – Machado/Maia

• O modo híbrido, apesar da maior


flexibilidade, apresenta problemas
herdados de ambas implementações;
• Por exemplo, quando um TMK realiza
uma chamada bloqueante todos os
TMU (associados a esta TMK) são
colocados no estado de espera;
• Um TMU que deseja utilizar vários
processadores devem usar diferentes
TMK, o que influencia no desempenho;

Cap. 6 – Thread 47
Modo híbrido
Arquitetura de Sistemas Operacionais – Machado/Maia

• Threads em modo híbrido

TMU 1
TMU 0

TMU 2

TMU 3

TMU 4

TMU 5
Mo d o
u su á rio

Bib lio te ca

TMK 0 TMK 1 TMK 2 TMK 3


Mo d o
ke r n e l
Ke r n e l

Cap. 6 – Thread 48
Scheduler Activations
Arquitetura de Sistemas Operacionais – Machado/Maia

• Os problemas do threads no modo


híbrido se devem a falta de
comunicação entre as threads TMU e
TMK;
• Modelo ideal: facilidades do TMK e
desempenho e flexibilidade do TMU;
• Scheduler Activations, introduzido na
década de 1990 pela Universidade de
Washington, combina o melhor das
duas arquiteturas;

Cap. 6 – Thread 49
Scheduler Activations
Arquitetura de Sistemas Operacionais – Machado/Maia

• Em vez de dividir os threads em TMU e


TMK, o núcleo do sistema troca
informações com a biblioteca de
threads através de uma estrutura
chamada de Scheduler Activations;

Cap. 6 – Thread 50
Scheduler Activations
Arquitetura de Sistemas Operacionais – Machado/Maia

• Scheduler Activations

Th re a d 1
Th r e a d 0

Th re a d 2

Th r e a d 3

Th r e a d 4
Mo d o
u su á rio

Bib lio te ca

Mo d o
Ke r n e l ke r n e l

Cap. 6 – Thread 51
Scheduler Activations
Arquitetura de Sistemas Operacionais – Machado/Maia

• A maneira de obter o melhor


desempenho é evitar as mudanças de
modo de acesso desnecessárias;
• Caso um thread utilize uma rotina que
o coloque no estado de espera, não é
necessário ativar o kernel, basta que a
própria biblioteca em modo usuário
escalone outro thread;

Cap. 6 – Thread 52
Scheduler Activations
Arquitetura de Sistemas Operacionais – Machado/Maia

• Isto é possível porque a biblioteca (em


modo usuário) e o kernel se
comunicam e trabalham de forma
cooperativa;
• Cada camada implementa seu
escalonamento de forma independente,
mas trocando informação quando
necessário;

Cap. 6 – Thread 53
Modelos de programação
Arquitetura de Sistemas Operacionais – Machado/Maia

• Desenvolver aplicações multithreads


não é simples, pois é necessário
comunicar e compartilhar recursos e
evitar os problemas de concorrência e
deadlock;
• Além das dificuldades do
desenvolvimento de aplicações
concorrentes, o procedimento de
depuração é bastante complexo;

Cap. 6 – Thread 54
Modelos de programação
Arquitetura de Sistemas Operacionais – Machado/Maia

• O número total de threads e a forma


que são criados e eliminados são
fatores importantes;
• A criação de um número excessivo de
threads pode gerar um overhead,
causando uma queda de desempenho;
• a definição do número de threads pode
ser:
– Dinâmica;
– Estática;

Cap. 6 – Thread 55
Modelos de programação
Arquitetura de Sistemas Operacionais – Machado/Maia

• Quando é dinâmica os threads são


criados/eliminados conforme a
demanda da aplicação, oferecendo
grande flexibilidade;
• Já a estática, o número de threads é
definido na criação do processo;
• Para obter os benefícios do uso dos
threads, uma aplicação deve permitir
que diferentes partes de seu código
sejam executados em paralelo;

Cap. 6 – Thread 56
Modelos de programação
Arquitetura de Sistemas Operacionais – Machado/Maia

• Se uma aplicação realiza várias E/S e


trata eventos assíncronos, a
programação multithread aumenta o
desempenho, mesmo em ambientes
monoprocessados;
• Sistemas gerenciadores de banco de
dados (SGBDs), servidores de arquivo
ou impressão são exemplos onde o uso
de multithreads proporciona grandes
vantagens e benefícios;

Cap. 6 – Thread 57

Você também pode gostar