Sistemas Operativos
Threads
3º ano - ESI e IGE (2011/2012)
Engenheiro Anilton Silva Fernandes
([email protected])
Dos Processos para os Threads
●
O conceito de thread foi introduzido na
tentativa de reduzir o tempo gasto em
criação, eliminação e troca de contexto de
processos nas aplicações concorrentes,
bem como economizar recursos do
sistema como um todo.
●
Em um ambiente multithread, um único
processo pode suportar múltiplos threads,
cada qual associado a uma parte do código da
aplicação.
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Dos Processos para os Threads
●
Neste caso, não é necessário haver
diversos processos para a implementação
da concorrência.
●
Threads compartilham o processador da
mesma maneira que um processo, ou seja,
enquanto um thread espera por uma operação
de E/S, outro thread pode ser executado.
–
cada thread possui seu próprio contexto de hardware,
porém compartilha o mesmo contexto de software e
espaço de endereçamento com os demais threads do
processo.
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Dos Processos para os Threads
●
O compartilhamento do espaço de
endereçamento permite que a
comunicação de threads dentro do mesmo
processo seja realizada de forma simples e
rápida.
●
Ambiente MONOTHREAD
Processo
Thread
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Dos Processos para os Threads
●
Ambiente MULTITHREADS
Processo
Contexto de
Hardware
Contexto de
Hardware
Contexto de
Hardware
Contexto de
Software
Thread 1
Thread 2
Thread 3
Espaço de
Endereçamento
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Dos Processos para os Threads
●
Ambiente MULTITHREADS
Thread de
Entrada
Buffer
Thread de
Exibição
Sistemas Operativos [2011/12]
Thread de
Gravação
-
Eng.º Anilton Silva Fernandes <[email protected]>
Dos Processos para os Threads
●
Ambiente MULTITHREADS
Processo Servidor
Solicitações
Thread
Thread
Thread
Processo Cliente
Processo Cliente
Processo Cliente
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Processos Leves (lightweight process)
●
●
Contador de programa
●
●
●
Pois possuem somente algumas propriedades
dos processos
Indica qual a próxima instrução a ser
executada
Registradores que contém as variáveis
atuais
Pilha sobre a história de execução
●
Um para cada procedimento não retornado
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Diferença entre thread e processo
●
●
●
Processos são usados para agrupar recursos
Threads são entidades escalonadas para a
execução sobre a CPU
Threads permitem que múltiplas
execuções ocorram no mesmo ambiente
do processo de forma independente
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
●
●
●
Múltiplas threads executando em paralelo é
semelhante a múltiplos processos
executando em um computador
Threads compartilham um mesmo espaço
de endereçamento
Processos compartilham um espaço físico
de memória, discos e impressoras e
recursos semelhantes
Multithread: possibilidade de execução de
vários threads para um mesmo processo
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
a) Três
Cadaprocessos.
thread opera
Cada
emum
umpossui
espaçoseu
de próprio
endereçamento
espaço de
diferente
endereçamento e thread de controle
b) Todos os threads compartilham o mesmo espaço de endereçamento
b) Um único processo com três threads de controle
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Execução de múltiplos threads em sistema
com uma única CPU
●
●
Semelhante a execução de vários processos
A CPU alterna entre os threads
●
Ilusão de paralelismo
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Threads distintos em um processo não são
tão independentes quando processos
distintos
●
●
●
Pois compartilham o mesmo espaço de
endereçamento
Compartilham variáveis globais
Pode ler e escrever a pilha de execução do
outro thread
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
●
●
●
Não há proteção entre threads
●
É impossível
●
Não há necessidade
No caso de processos, há utilizadores
diferentes e possivelmente hostis
Cada processo é propriedade do usuário
Todos threads de um processo são
propriedades de um único usuário
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Itens compartilhados entre threads
Se um thread abre um arquivo, este arquivo é visível para todos os
threads do processo, podendo ler e escrever nesse arquivo
●
Os threads podem compartilhar recursos e
cooperar na realização de uma tarefa
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Assim como em processos tradicionais
●
●
Processos com um único thread
Um thread pode estar em um dos vários
estados
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Cada thread possui sua própria pilha
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Modelo de Threads
●
Cada thread chama procedimentos
diferentes
●
●
Por isso cada thread possui sua própria pilha
Exemplo:
●
Se o procedimento X chamar o procedimento
Y e esse chamar o procedimento Z
●
enquanto Z estiver executando
●
X, Y e Z estarão todos na pilha
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
●
●
O que são?
Qual a diferença entre threads e
processos?
Porque usar threads?
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
Em uma aplicação ocorrem muitas
atividades ao mesmo tempo
●
●
Muitas vezes as atividades são independentes
Muitas vezes elas podem bloquear de
tempos em tempos
●
Parando a aplicação
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
●
O modelo de programação fica mais
simples se decompormos a aplicação em
múltiplos threads
Com os threads há a capacidade de
entidades paralelas compartilharem o
endereço e os dados entre elas mesmas
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
Thread são mais fáceis de criar e destruir
do que processos
●
●
●
São mais simples
Em alguns sistemas é 100 vezes mais rápido
criar um thread do que um processo
Há um aumento de desempenho quando
os threads são orientados à E/S e têm
grande computação para ser feita
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
●
Exemplo: dada uma planilha eletrônica.
Os cálculos são dependentes das entradas
do usuário. Dada a entrada os cálculos são
efetuados de forma encadeada.
Podemos criar threads para
●
Efetuar os cálculos
●
Interagir com o usuário
●
Fazer backups
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
●
Exemplo: servidores WEB. Requisições
de páginas que chegam a um servidor são
devolvidas aos clientes.
As páginas principais são mais acessadas
do que outras páginas.
●
A página principal da Sony é mais acessada
do que a página sobre configurações de uma
determinada câmera
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
●
Esse fato é usado para melhorar o
desempenho
As páginas mais acessadas são colocas
na memória
●
●
Essa coleção é chamada de cache
Uma forma de organizar o servidor é
utilizando threads
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Threads
●
●
Threads tornam possível manter a idéia de
processos sequenciais que fazem
chamada ao sistema de bloqueio e mesmo
assim conseguem obter paralelismo
Essas chamadas tornam a programação
mais fácil e o paralelismo melhora o
desempenho
Sistemas Operativos [2011/12]
-
Eng.º Anilton Silva Fernandes <[email protected]>
Download

Threads - Anilton Silva Fernandes