Escolar Documentos
Profissional Documentos
Cultura Documentos
FATEC-SCS
Profª MSc. Aletéia
Threads
• http://www.tecmundo.com.br/9669-o-que-sao-threads-
em-um-processador-.htm
Silberschatz, Galvin e Gagne (c) 2003
1
Threads
THREADS
Como todas os threads tem exatamente o mesmo
espaço de endereçamento, eles também compartilham
as mesmas variáveis globais.
Assim, como cada thread pode acessar qualquer posição
de memória dentro do espaço de endereçamento do
processo, é possível a um thread ler, escrever ou até
apagar informações usadas por outra thread.
Não existe um meio de proteção para isso, fica sob
responsabilidade do usuário este cuidado já que
normalmente criamos threads para cooperar e não
competir.
O escalonamento entre threads acontece da mesma
forma que entre processos.
2
Exemplo
Um processador de texto pode ter um
thread para exibir imagens, outro thread
para ler seqüências de teclas do usuário e
um terceiro thread para efetuar a correção
ortográfica em segundo plano.
Onde todos os threads pertencentes ao
mesmo processo compartilham a sessão de
código, arquivos abertos, endereço de
memória e demais recursos do sistema.
3
O Modelo de Thread (2)
Buffer
Espaço de
endereçamento
Thread de Thread de
exibição gravação
4
Sistemas Operacionais com Java
Exemplo
Um exemplo pode ser dado através de um jogo onde o
mesmo pode ser modelado com linhas de execução
diferentes, sendo uma para desenho de imagem e outra
para áudio.
Nesta aplicação, teríamos uma thread para tratar rotinas
de desenho e outra thread para tratar instruções do
áudio.
Para o usuário, a imagem é desenhada ao mesmo tempo
em que o áudio é emitido pelos auto-falantes.
No entanto,para sistemas com uma única CPU, cada
linha de execução é processada por vez
10
5
Comunicação entre processos
É comum processos que trabalham juntos
(concorrentes) compartilharem recursos do
sistema, como arquivos, registros,
dispositivos e áreas de memória.
11
Sincronização
gr
av
aç ra
Processo ão i tu Processo
gravador le leitor
dado
Buffer
12
6
Um exemplo
13
Regiões críticas
O que fazer para evitar condições de disputa?
14
7
Sistemas Operacionais com Java
• Dados compartilhados
– Semáforo chopStick[] = novo Semaphore[5];
Silberschatz, Galvin e Gagne (c) 2003
15
16
8
O Problema do Barbeiro
Sonolento (1)
17
18
9
Deadlocks
Uma forma de explicar o que é um deadlock seja
com uma lei aprovada pela assembléia do estado
norte-americano de Kansas no início do século XX.
Dizia, em parte:
19
Deadlocks
20
10
Sistemas Operacionais com Java
O Problema do Deadlock
Exemplo do Cruzamento da Ponte
21
Deadlocks
22
11
Sincronização e Comunicação entre Processos
Deadlock – Espera Circular
Processo A
Processo A Recurso 1
solicita o alocado ao
Recurso 2 Processo A
Recurso 2 Recurso 1
Processo B
Recurso 2 Processo B
alocado ao solicita o
Processo B Recurso 1
23
24
12
Sistemas Operacionais com Java
Prevenção de Deadlock
25
Prevenção de Deadlock
• Sem preempção –
– Se um processo que estiver mantendo alguns
recursos requisitar outro recurso que não possa ser
alocado imediatamente para ele, então todos os
recursos atualmente mantidos são liberados
– Os recursos preemptados são acrescentados à lista
de recursos pelos quais o processo está esperando
– O processo será reiniciado somente quando puder
reaver seus recursos antigos, assim como os novos
que ele está requisitando
26
13
Sistemas Operacionais com Java
Prevenção de Deadlock
27
Evitar Deadlock
28
14
Starvation (inanição)
É a situação onde um processo nunca consegue executar sua
região crítica e conseqüentemente, acessar o recurso
compartilhado.
29
Exemplo de Starvation
Dizem que, quando desativaram o
IBM 7094 no MIT em 1973,
encontraram um processo de baixa
prioridade que tinha sido submetido
em 1967 e ainda não tinha sido
executado.
30
15
Referências
Arquitetura de Sistemas Operacionais, disponível em
http://www.training.com.br/aso/
31
16