0% acharam este documento útil (0 voto)
5 visualizações36 páginas

Introdução a Threads em Sistemas Operacionais

Enviado por

Felipe Correia
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
5 visualizações36 páginas

Introdução a Threads em Sistemas Operacionais

Enviado por

Felipe Correia
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Conteúdo dos Slides: Prof.

Humberto Brandão

Sistemas
Operacionais
Aula V – Threads
Prof. Fellipe Rey

Bacharelado em Ciência da Computação


20/08/2024
Revisão da última aula
• Execução sequencial
 Um contador de programa;

• Paralelismo: Modelo conceitual de 4 processos


sequenciais, independentes;
 Quatro contadores de programa;
2
• Pseudo-paralelismo: Somente um programa está ativo –
a cada momento
 Um contador de programa para cada processo; 36
Revisão da última aula

Revisão da última aula


Entra Despacho Sai
Pronto Executando
Pausa

Fila
Entra Despacho Sai
CPU

Pausa 3

36
Revisão da última aula

Revisão da última aula


Entra Despacho Sai
Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

Fila de prontos
Entra Despacho Sai
CPU

4
Pausa

Ocorre evento
Lista de bloqueados Espera evento

36
Threads

Threads
• O conceito de processo define que somente o próprio
processo tem acesso ao seu espaço de endereçamento.
FFFF
Pilha

Lacuna

Dados dinâmicos Espaço de


endereçamento
Dados estáticos

Texto

Reservado 5
0000

• Esta questão é fundamental para segurança e
consistência das aplicações, de forma geral. 36
Threads

Threads
• Contudo, frequentemente existem situações em que é
desejável ter execuções separadas acessando o mesmo
bloco de endereços na memória do computador.

• Por questões de eficiência no compartilhamento de


informações, ou para aproveitar melhor a ociosidade do
processador.
6

36
Threads

Threads
• Assim como os processos, os threads possuem:
 Um contador de programa que indica qual é a próxima
instrução a ser executada;
 Uma pilha de execução específica, que traz a história da
execução do thread, para indicar todas as chamadas que
ainda não obtiveram retorno;
 Registradores, que indicam suas variáveis atuais de trabalho.

7

36
Threads

Threads
• Processos são utilizados para agrupar recursos;

• Threads são entidades escalonadas, podendo


compartilhar recursos com outros threads irmãos.

8

36
Threads

Threads
• As vezes, pelas características semelhantes, threads são
denominados processos leves.

• Comumente, encontramos o termo multithread para


descrever um sistema que permite múltiplos threads no
mesmo processos.

9

36
Threads

Threads
10
3 threads, mas habitando 3 3 threads, mas habitando o –
processos distintos mesmo processo
36
Threads

Threads
11
Threads distintos em um processo não Threads compartilham as mesmas variáveis
são tão independentes quanto threads globais do processo, tendo “independência” –
em processos distintos. apenas em suas variáveis armazenadas na
sua própria pilha de execução.
36
Threads

Threads
• Além de compartilhar o mesmo espaço de endereçamento,
os threads compartilham o mesmo conjunto de arquivos
abertos, processos filhos, etc.
Itens por processo Itens por thread
Espaço de endereçamento Contador de programa
Variáveis Globais Registradores
Arquivos abertos Pilha
Processos filhos Estado
Alarmes pendentes 12
Sinais e tratadores de sinais –
Informação de contabilidade
36
Estados de Threads

Estados de Threads
• Assim como um processo normal, um thread pode
assumir estados distintos:
 Inicio *;
 Pronto;
 Executando; Entra Despacho Sai
 Bloqueado;
Pronto Executando
Pausa

 Finalizado *;
O evento Aguardando

13
ocorreu evento


Bloqueado

* Apenas no livro do Silberschatz 36


Operações com Threads

Operações com Threads


• Este por sua vez, pode criar quantos threads forem
necessários, de acordo com a necessidade de sua
aplicação.

• A criação é através de um procedimento de biblioteca:


thread_create.

14
• Quando o thread finaliza seu trabalho, ele pode invocar a –
chamada thread_exit.
36
Operações com Threads

Operações com Threads


• Depois disso ele desaparece e não mais fará parte da fila
dos threads escalonáveis, passando ao estado finalizado.
Neste caso libera totalmente o seu subespaço no espaço
de endereçamento do processo.

• O thread também pode se bloquear para esperar outro


thread terminar sua execução, através da chamada
thread_wait.
15

36
Operações com Threads

Operações com Threads


• O thread pode desistir voluntariamente da utilização da
CPU, para deixar outro thread executar. Este
procedimento é feito através da chamada thread_yield;
 Mas é o escalonador de processos que decide qual é o próximo
a entrar no processador. O programador não tem como
controlar isso.
Entra Despacho Sai
Pronto Executando
Pausa

O evento Aguardando

16
ocorreu evento

Bloqueado


• Em Java, a função que invoca esta chamada de sistema é
a yield da classe Thread. 36
Operações com Threads

Operações com Threads


• O thread pode também entrar no estado bloqueado,
assumindo assim que aguarda um evento externo para
continuar seu processamento.
Entra Despacho Sai
Pronto Executando
Pausa

O evento Aguardando
ocorreu evento

Bloqueado

• Em Java, a função que invoca esta chamada de sistema é


a wait da classe Object (bloqueia o thread corrente que 17
invocou o método). –
 Apenas o próprio thread pode se bloquear!
36
O uso de Threads

O uso de Threads
• Mas afinal, quais são as razões de utilizarmos Threads?

1) Algumas vezes, a execução em paralelo de atividades,


que poderiam ser implementadas sequencialmente,
pode oferecer um ganho considerável de performance.
 Exemplos:
 Navegadores. Ao carregar as imagens de um site.
 Máquinas de busca requisitando diferentes sites da rede.
18

36
O uso de Threads

O uso de Threads
• Mas afinal, quais são as razões de utilizarmos Threads?

2) É muito mais rápido criar um thread do que criar um


processo. Em alguns sistemas operacionais, este
procedimento chega a ser 100 vezes mais rápido.

19

36
O uso de Threads

O uso de Threads
• Mas afinal, quais são as razões de utilizarmos Threads?

3) Em muitas aplicações, é necessária a ocorrência de


múltiplas atividades distintas, “ao mesmo tempo”.
Talvez esta seja a principal razão para
utilizarmos threads.
 O modelo de programação se torna bem mais simples quando
decompomos o processo em vários threads para o gerenciamento
de todas as atividades. 20
 Exemplo: –
 Software para troca de mensagens.
36
Outro fica responsável
O uso de Threads pela atualização visual

O uso de Threads
da aplicação.

• Seja o exemplo de um editor de texto simples:

Outro pelo salvamento


Um thread fica automático do
responsável por documento.
capturar a entrada do
teclado
21

36
O uso de Threads

O uso de Threads
• É possível que 3 (três) processos gerenciem este editor de
textos?

22

36
O uso de Threads

O uso de Threads
• É possível que 1 (um) processo, com 1 (um) thread
gerencie este editor de textos?

23

36
O uso de Threads

O uso de Threads
• Vamos imaginar um servidor web recebendo dezenas de
requisições por segundo.

24

36
O uso de Threads

O uso de Threads
• Vamos imaginar um servidor web recebendo dezenas de
requisições por segundo. O thread operário
consulta se a
requisição está na
O thread despachante cache das últimas
recebe as requisições e páginas visitadas. Se
encaminha cada uma não estiver, ela efetua
para um thread acesso ao disco (mais
operário. lento).
25

36
O uso de Threads

O uso de Threads
• Faz sentido cada thread operário invocar a chamada
thread_exit sempre que retornar uma requisição? Sim?
Não? Por quê?

26

36
Implementação de Threads
Implementação de Threads

• Implementação a nível de usuário.


 Quais são as vantagens?
 E as desvantagens?

27

36
Implementação de Threads
Implementação de Threads

• Implementação a nível de usuário.


 Vantagens:
 Podemos utilizar o recurso de threads,
mesmo se o S.O. não suportar.
 As operações são mais rápidas a nível de
usuário, se comparadas com o nível de
kernel.
 Cada processo pode ter seu próprio
algoritmo de escalonamento
(customizado). Isso pode ser bom?
28

36
Implementação de Threads
Implementação de Threads

• Implementação a nível de usuário.


 Desvantagens:
O usuário precisa garantir o
funcionamento do sistema.
 Cada thread precisa avisar o supervisor
que está passando a sua vez.

29

36
Implementação de Threads
Implementação de Threads

• Implementação a nível de kernel.


 Quais são as vantagens?
 E as desvantagens?

30

36
Implementação de Threads
Implementação de Threads

• Implementação a nível de kernel.


 Vantagens:
 Uma vez validado o algoritmo dentro do
S.O., todos os processos podem utilizá-lo.
 O tempo de ocupação na CPU fica melhor
dividido se o kernel conhece todos os
threads ativos.

31

36
Implementação de Threads
Implementação de Threads

• Implementação a nível de kernel.


 Desvantagens:
 Operações são bem mais lentas a nível de
kernel.
 Cada processo fica sujeito a política de
escalonamento do próprio sistema
operacional.

32

36
Implementação de Threads
Implementação de Threads

33

36
Leitura para a próxima aula
Leitura para a próxima aula

Sistemas Operacionais Modernos

2.3 Comunicação Interprocessos


2.3.1 Condições de disputa
2.3.2 Regiões Críticas
2.3.3 Exclusão Mútua com Espera Ociosa
34

36
Referências

Referências
• TANENBAUM, A. S., Sistemas Operacionais Modernos, 2ª.
Edição, São Paulo: Prentice Hall, 2003.

• SILBERSCHATZ, A; GALVIN, P e GAGNE, G.; Sistemas


Operacionais. Conceitos e Aplicações. Rio de Janeiro: Editora
Campus, 2000.

• TANENBAUM, A. S.; WOODHULL, A.S.; Sistemas


operacionais: projeto e implementação. 2a Ed. Porto Alegre:
Ed. Bookman, 2000.
35

• Slides Prof. Humberto Brandão
36
Conteúdo dos Slides: Prof. Humberto Brandão

Sistemas
Operacionais
Aula V – Threads
Prof. Fellipe Rey

Bacharelado em Ciência da Computação


20/08/2024

Você também pode gostar