Buscar

Threads

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

FLÁVIA SANTANA BATISTA 
 
 
 
 
 
 
THREADS 
SISTEMAS OPERACIONAIS 
 
 
 
 
MOGI DAS CRUZES 
2020 
 
 
FLAVIA SANTANA 
 
 
 
 
 
 
SISTEMAS OPERACIONAIS 
 
 
 
 
Professor(a): Dejalcir Lourencetti 
Disciplina: Sistemas Operacionais 
Turma: ADS – Turma A 
 
 
 
 
 
 
 
MOGI DAS CRUZES 
2020 
 
 
Sumário 
O que são as threads ................................................................................................. 5 
Como os Sistemas Operacionais executam os processos e threads ......................... 6 
Motivação na criação de threads ............................................................................... 7 
O ciclo de vida de uma thread .................................................................................... 8 
O modelo de Thread .................................................................................................. 9 
Threads em Maquinas Virtuais ................................................................................. 12 
Conclusão ................................................................................................................ 14 
Bibliografia ............................................................................................................... 15 
 
 
 
4 
 
 
 
Introdução 
Thread é a tarefa que um determinado programa realiza. Fio de execução, também 
conhecido como linha ou encadeamento de execução, (em inglês: Thread), é uma 
forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser 
executadas concorrencialmente. O suporte à thread é fornecido pelo próprio sistema 
operacional no caso da linha de execução ao nível do núcleo 
Em hardwares equipados com uma única CPU, cada thread é processada de forma 
aparentemente simultânea, pois a mudança entre uma thread e outra é feita de forma 
tão rápida que para o utilizador, isso está acontecendo paralelamente. Em hardwares 
com múltiplos CPUs ou multicores, as threads são realizadas realmente de forma 
simultânea. 
Muitas linguagens hoje fornecem técnicas para permitir a programação concorrente 
através de threads. Cada thread ad dá a capacidade, ao programa, de executar uma 
tarefa de forma simultânea ao programa principal. Esta técnica chama-se 
Multithreading. 
 
 
5 
 
O que são as threads 
 Em sistemas operacionais tradicionais, cada processo tem um espaço de 
endereçamento e um único thread (fluxo) de controle. Já que threads são fluxos de 
um programa em execução, logo este programa é chamado de processo. Um 
processo, tem no mínimo uma thread, mas também podendo conter n threads que 
podem executar simultaneamente diversas partes da inteligência de um processo. 
 Como por exemplo, um programa que recebe dois números, multiplica um pelo outro 
e retorna, contém apenas um fluxo de execução. Já um programa que transforma 
uma imagem em cinza, pode dividir a imagem em 4 quadrantes e processar cada 
quadrante em um thread para depois retornar a imagem final. 
 Assim é possível notar que o programa que utiliza threads é mais complicado do que 
o que não utiliza. 
 
 
 
 
 
 
 
 
 
6 
 
Como os Sistemas Operacionais executam os processos e threads 
 
• No Windows, ele trabalha com uma maior facilidade para gerenciar programas 
com apenas um processo e diversos threads do que quando gerencia vários 
processos e poucos threads. Isso acontece porque no sistema da Microsoft a 
demora para criar um processo e alterná-los é muito grande. 
• Já no sistema Linux e nos demais sistemas baseados no Unix, eles podem 
criar novos processos de maneira muito mais rápida. No entanto, ao serem 
alterados, os programas podem apresentar o mesmo desempenho tanto no 
Linux quanto no Windows. 
 
 
 
7 
 
Motivação na criação de threads 
 
 A criação de processos é demorada e também exige muitos recursos. Como no 
Servidor Web, onde vários clientes fazem requisições concorrentemente e assim um 
processo tradicional atenderia uma requisição por vez, logo a solução inicial seria 
criar um processo para atender cada requisição, mas a solução seria a utilização de 
múltiplas threads. 
 As threads também estão presentes no kernel dos sistemas operacionais modernos, 
realizando tarefas especificas, como o gerenciamento de dispositivos, tratamento de 
interrupções, gerenciamento de memória, etc. Alguns exemplos são: O Linux que usa 
uma thread no kernel para gerenciar a memória livre e também a Solaris, que cria um 
conjunto de threads no kernel especificamente para o tratamento de interrupções. 
Muitos pacotes de software executados nos computadores são dotados de múltiplas 
threads, como no processador de textos, onde há uma thread para exibir gráficos, 
outra para ler os toques de tecla do usuário e uma terceira thread para a verificação 
ortográfica e gramatical. Enquanto no navegador web há uma thread para exibir 
imagens ou textos e outras para o recebimento dos dados da rede. 
 Toda thread transita entre uma série de estados de thread distintos. As threads e os 
processos têm muitas operações em comum (por exemplo, criar, sair, retomar e 
suspender). 
A criação de thread não requer que o sistema operacional inicialize recursos 
compartilhados entre os processos-pais e os respectivos threads e isso reduz o 
esforço de criação e término de threads, em comparação à criação e ao término de 
processo. 
 
 
 
 
 
 
8 
 
O ciclo de vida de uma thread 
 
 
• As threads nascem: 
 - No momento de sua criação ( via chamada de sistema – Spawn...) 
• As ficam prontas 
- Executam na CPU, liberam a CPU. 
- Podem ficar esperando para notificar ou acordar para ficar pronto. 
- Dormir e logo o intervalo do sono vai espirar e voltará ao “pronto”. 
- Pode ser concluído porque terminou sua execução e morrerá. 
- Ou pode ser bloqueado porque um outro o matou: Erro, acesso não autorizado, 
falha. 
Criado e pronto para execução 
Aguardando E/S 
Processamento Finalizado 
“pausado” por tempo 
determinado 
 
 
 
9 
 
O modelo de Thread 
Threads de usuário x Threads de núcleo 
 
 Como cada thread pode ter acesso a qualquer endereço de memória dentro do 
espaço de endereçamento do processo, uma thread pode ler, escrever ou até mesmo 
apagar completamente a pilha de outra thread. 
 Threads executando dentro do espaço do usuário são chamados de threads de 
usuário. E a abstração de threads é criada pelo próprio processo (que executa em 
modo usuário, daí o nome de thread de usuário). Os threads de usuário executam 
operações em espaço de usuário, que são criadas por bibliotecas em tempo de 
execução e não podem executar instruções privilegiadas nem acessar primitivas do 
núcleo de forma direta. O sistema operacional não tem conhecimento da existência 
dos threads de usuário. 
Usando as bibliotecas, uma aplicação pode lançar mão de vários threads conforme 
sua necessidade, mas o núcleo do sistema irá sempre perceber (e gerenciar) apenas 
um fluxo de execução naquele processo. Por essa razão, esta forma de 
implementação de threads é nomeada de Modelo Threads N., como a figura mostra: 
 
 
 
 
 
 
 
 
 
 
10 
 
 Vantagem de threads de usuário 
 
 Eles podem também ser implementados por um sistema operacional que não suporte 
a abstração de threads, (atualmente a maior parte dos sistemas operacionais 
fornecem a abstração de threads). 
 Possibilita customizar o algoritmo de escalonamento entre os threads de usuário do 
próprio processo. 
 Troca de contexto entre os threads de usuário não envolve a passagem de modo 
usuário para modo supervisor, sendo muito mais rápida. 
 
 Desvantagens de threads de usuário 
 
Sistema supervisor não atende interrupções do temporizador. Cada thread de usuário 
deve ceder a CPU, de tempos em tempos, para outros threads de usuário. E também 
tem um sobrecarga de processamento. 
 O núcleo oferece suporte a threads, porémé um pouco mais lento e o Sistema 
Operacional pode escalonar mais eficientemente as threads, inclusive em máquinas 
multiprocessadas. Como no Windows, Solaris e Linux. As threads de núcleo 
dependem de sistemas que permitam o uso de threads e também tendem a 
consumir mais recursos. 
Nos threads de núcleo o sistema operacional mapeia cada thread para seu próprio 
contexto de execução, desta forma são também chamadas de threads um-para-um. 
 Gerencia os threads de núcleo do processo, onde mantem a tabela de threads de 
núcleo e realiza o escalonamento dos threads de núcleo. 
 
 
 
 
 
11 
 
 É um exemplo de thread de núcleo: 
 
 
 
 
12 
 
Threads em Maquinas Virtuais 
 
 
 Este código demostrado na figura espera dois parâmetros sendo eles o 
número de usuários e a quantidade de vezes que cada usuário vai inserir e 
selecionar as tabelas per_1 e per_2. Mas quer que seja demonstrado o trecho do 
código que espera o parâmetro do número de usuários. E para isto é criado threads 
para cada usuário adicionado possibilitando a simulação de múltiplos usuários 
inserindo e selecionado ao mesmo tempo, simulando uma concorrência de acessos 
nos servidores de testes 
 
 
 
 
 
13 
 
 
 Para melhor entendimento na aplicação foi chamada de ciclo 
esta repetição, ou seja, cada vez que for iniciada uma thread simulando o usuário e 
aberto um ciclo e quando finalizada encerra o ciclo. 
 
 
 Os comandos foram executados de uma forma paralela entre os servidores de testes, 
sempre seguindo a ordem de inserir e depois consultar a tabela. 
 
 
 
14 
 
Conclusão 
 
Os sistemas operacionais executam de maneiras diferentes os processos e threads. 
E com a flexibilidade dos threads diversos problemas devem ser levados em 
consideração. Os threads também são recursos que permitem que um mesmo 
programa tenha várias linhas de execução. Essas execuções podem ser concorrentes 
ou paralelas. Elas podem compartilhar ou não memória. Um thread também pode 
realizar outras funções além das mencionadas, como aguardar outra thread 
sincronizar, por exemplo, entre outras. 
Um thread pode autorresponder-se sem que seja preciso duplicar um processo 
inteiro, economizando recursos como memória, processamento e aproveitando 
dispositivos de I/O, variáveis e outros meios. Também pode por conta própria 
abandonar a CPU por não ver a necessidade de continuar com o processamento 
proposto pela própria CPU ou pelo usuário. Isso é realizado por meio do método 
thread-yield. 
 
 
 
15 
 
Bibliografia 
Blog Gustavo Pantuza (2017) - O QUE SÃO E COMO FUNCIONAM AS THREADS 
Prof Fernando De Siqueira - Sistemas Operacionais (Aula 6 – Threads) 
Canaltech.com.br - O que é Thread? 
Greg Gagne, Abraham Silberschatz, Peter Galvin - Sistemas Operacionais com Java 
(7° edição) Capitulo 4. 
Marcelo Johann - Ciclo de Vida de um Processo 
Prof. Samuel Brito – Threads 
Prof. Hermes Senger - Processos e Threads 
Prof. Eng. Eduardo Julia no Alberti (Adaptado de Prof. Alessandro Brawerman) – 
Threads 
Prof. Dr. Márcio Andrey Teixeira - Implementação de Processo e Threads 
Volnys Borges Bernal – Threads 
Gerson Fell - ANÁLISE DE DESEMPENHO ENTRE MÁQUINAS VIRTUAIS 
E CONTAINERS PARA APLICAÇÕES WEB

Outros materiais