Introdução ao Threads - Sistemas Operacionais

endersonlinhares20 1 views 27 slides Sep 26, 2025
Slide 1
Slide 1 of 27
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27

About This Presentation

Threads em SO


Slide Content

Threads

Agenda
•Modelo de Threads
•Aplicação de Threads
•Threads no Modo Usuário

Threads no Modo
Kernel

Threads no Modo
Kernel
•Implementações Híbridas de Threads
•Threads Pop-up
•Threads no Linux

Modelo de Threads
•Processo: recursos + linhas de execução
•Recursos formam um contexto de execução
•Threads são entidades que competem pelo
tempo de CPU tempo de CPU
•Threads “vivem” em processos,
compartilhando seus recursos

Modelo de Threads

Modelo de Threads
•Threads em um processo são cooperativas,
compartilham os recursos e trabalham juntas
para realizar alguma tarefa.

Modelo de Threads

Aplicação de Threads
•Por que usar threads?
–Modelo de programação mais apropriado para
tratamento de atividades concorrentes

Facilidade de criação e finalização (peso leve)

Facilidade de criação e finalização (peso leve)
–Permite sobrepor diferentes atividades de E/S,
dando um ganho de desempenho

Aplicação de Threads
•Editor de texto

Aplicação de Threads
•Servidor WEB

Aplicação de Threads
•Formas de construir um Servidor

Implementação de Threads
•Existem três formas de implementar
multithreading
–Modo Usuário

Modo
Kernel

Modo
Kernel
–Modelo Híbrido

Threads no Modo Usuário
•Threads são implementadas como uma
biblioteca
•Kerneldesconhece a existência das threads

O
run
-
time
system coordena a execução das

O
run
-
time
system coordena a execução das
threads, sem chamadas de sistema
•O que acontece quando uma thread faz uma
chamada bloqueante?

Threads no Modo Usuário

Threads no Modo Kernel
•O kernelgerencia a execução das threads
•Custo mais alto para criar e destruir threads
–Reciclagem de Threads

Sem problemas com chamadas
bloqueantes

Sem problemas com chamadas
bloqueantes

Threads no Modo Kernel

Modelo Híbrido

Threads Pop-Up
•Thread criada automaticamente para
gerenciar um evento de E/S

Threads no Linux
•Criação de Thread
–A função pthread_createcria uma nova thread.
–O programador deve fornecer

Um ponteiro para uma variável que armazenará o ID d a

Um ponteiro para uma variável que armazenará o ID d a Thread
•Um ponteiro para uma estrutura thread attribute
•Um ponteiro para função que a thread irá executar
•Argumentos da função da thread como um ponteiro
void

Passando dados para Threads

Threads no Linux
•JoiningThreads
–Em alguns casos, é necessário esperar pela
finalização de uma thread

A função
pthread_join
bloqueia uma thread até

A função
pthread_join
bloqueia uma thread até
que a thread desejada finalize

Exercícios
•Implemente os exemplos de código listados na
apresentação.
•Crie uma aplicação multithread(duas threads)
que seja capaz de calcular o
Nth
número
que seja capaz de calcular o
Nth
número
primo. Utilize as chamadas de sistemas
apresentadas.

Exercícios
•Neste problema, iremos comparar a performance
de dois servidores de arquivo. O servidor A é
monothreade o servidor B é multithread. Ambos
servidores compartilham as seguintes
características: leva 15
ms
para responder uma
requisição se os dados estão na
cache
. Se um
características: leva 15
ms
para responder uma
requisição se os dados estão na
cache
. Se um
acesso ao disco é necessário, como em 1/3 das
vezes, 75 msadicionais são necessários, durante
os quais a thread dorme. Quantas requisições/sec
o servidor pode atender se é monothread? E se
for multithread?

Exercícios
•Em quais circunstâncias um servidor WEB
monothreadseria melhor do que um
multithread?

Pesquise sobre o problema da inversão de

Pesquise sobre o problema da inversão de prioridades. Ele pode ocorrer em thread modo
usário? Por que ou por que não?

Referências
•TANENBAUM, Andrew S., SistemasOperacionais
Modernos, 2°ed., Ed. Pearson Education, 2003.
•MITCHEL, M., OLDHAM J. e SAMUEL A., Advanced
Linux Programming, 1
°
ed.,
New
Riders
Publisher,
2001.
Tags