Baixe o app para aproveitar ainda mais
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
Compartilhar