Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de Sistemas Operacionais Threads Disciplina: ADS e GTI Prof. Dr. Anderson Aparecido Alves da Silva anderson@uol.com.br 2 Sistema Operacional Threads • Introdução • Já sabemos que: – Processos podem ser escalonados e executados em revezamento por um SO – Um núcleo de processador executa um único processo por vez – Processos brigam entre si, pois querem ocupar recursos do SO – Um único processo pode executar várias tarefas • Será que... – As tarefas de um mesmo processo podem ser divididas e executadas separadamente? • Resposta: sim, podem 3 Sistema Operacional Threads • Introdução • Thread – Divisão interna de um mesmo processo em várias tarefas que podem ser executadas ao “mesmo tempo” • Importante – Não são vários processos executados ao mesmo tempo – São várias tarefas de um processo que podem ser executadas ao mesmo tempo 4 Sistema Operacional Threads • Mono/Multithread 5 Sistema Operacional Threads • Mono/Multithread • Monothread – Sistemas que suportam uma única thread (em real execução) • Multithread – SO que suportam múltiplas threads são chamados de multithread 6 Sistema Operacional Threads • Multithread • Vantagens do multithread • Um programa dividido em vários threads pode rodar mais rápido que um programa monolítico, pois várias tarefas podem ser executadas simultaneamente. • Os vários threads de um programa podem trocar dados entre si e compartilhar o mesmo espaço de memória e os mesmos recursos do sistema 7 Sistema Operacional Threads • Exemplo 1 - multithread • Imagine um jogo que pode ser modelado com linhas de execução diferentes, sendo uma para desenho de imagem e outra para áudio • Neste caso, há um thread para tratar rotinas de desenho e outro thread para tratar áudio • No ponto de vista do usuário, a imagem é desenhada ao mesmo tempo em que o áudio é emitido pelos alto-falantes • Porém, para sistemas com uma única CPU, cada linha de execução é processada por vez 8 Sistema Operacional Threads • Exemplo 2 - multithread • Imagine um programa que gera um relatório muito grande em PDF • É um processo demorado e, para dar alguma satisfação para o usuário, queremos mostrar uma barra de progresso • Queremos então gerar o PDF e ao mesmo tempo atualizar a barrinha • Duas threads são usadas no processo: – Thread 1: controla a emissão do relatório – Thread 2: controla a barrinha Ambas estão no mesmo processo! 9 Sistema Operacional Threads • Threads: ULT X KLT • Thread do nível de usuário (ULT) – São suportadas pela aplicação, sem conhecimento do kernel – Geralmente são implementadas por aplicativos – Códigos para criar, terminar e armazenar contexto • Thread do nível de kernel (KLT) – Não é realizada através do código do próprio programa – Todo o processo é subsidiado pelo SO 10 Sistema Operacional Threads • Threads: ULT X KLT Thread de nível de usuário (ULT) Thread de nível de kernel (KLT) 11 Sistema Operacional Threads • Threads no Windows • Funciona melhor em multithread • O Windows têm mais facilidade para gerenciar programas com apenas um processo e vários threads, do que com vários processos e poucos threads, pois no Windows o tempo para criar um processo e alternar entre eles é muito grande 12 Sistema Operacional Threads • Threads no Linux • Funciona bem em multithreads e monothreads • O Linux e outros sistemas baseados no Unix por sua vez são capazes de criar novos processos muito rápido, o que explica o fato de alguns aplicativos, como por exemplo o Apache, rodarem muito mais rápido no Linux do que no Windows 13 Sistema Operacional Threads • Principais Características • Cada thread tem a sua pilha própria, mas divide o espaço de endereçamento do processo em que foi criada • Duas threads executam o mesmo procedimento: cada uma tem a sua própria cópia das variáveis locais • As threads podem acessar todas os dados globais do programa e a memória alocada 14 Sistema Operacional Threads • Modelos de Multithreads • Muitos-Para-Um – Mapeia muitos threads de nível de usuário para threads do kernel • Modelo Um-Para-Um – Mapeia cada thread de usuário para uma única thread de kernel – Gera mais concorrência do que o modelo muitos-para-um • Modelo Muitos-Para-Muitos – Mapeia muitos threads de nível de usuário para um número menor ou igual de threads de kernel 15 Sistema Operacional Threads • Cancelamento de threads • Corresponde à tarefa de terminar um thread antes que se complete • Um thread que está para ser cancelado é frequentemente denominado thread-alvo. • Exemplo 1 – Se múltiplos threads estão pesquisando concorrentemente em um banco de dados e um thread retorna o resultado, os threads que ainda estão sendo executados podem ser cancelados 16 Sistema Operacional Threads • Cancelamento de threads • Exemplo 2 – Quando um usuário pressiona um botão em um navegador – Com frequência, uma página da web é carregada em um thread separada. – Quando se pressiona STOP, o thread que estava carregando a página é cancelado 17 Sistema Operacional Referências • Referências • Sistemas operacionais –Conceitos e Aplicações. Silberschatz, Galvin& Gane. Editora Campus, 2001. • UNIX Internals: The New Frontiers. UreshVahalia. Editora Prentice-Hall, 1995. • AdvancedConceptsin OperatingSystems. Singhal, Shivaratri. Editora McGraw-Hill, 1994. • AdvancedLinux Programming (PDF disponível online). Mitchell, Oldham, Samuel, Editora New Riders, 2001. • Machado, Francis Berenger e Maia, Luiz Paulo. Arquitetura de Sistemas Operacionais - 5ª edição. LTC Editora. 2013. • Tanenbaum, Andrew S. e Bos, Herbert. Sistemas Operacionais Modernos - 4ª edição. Pearson Education. 2016. • Deitel, H.M.; Deitel, P.J. e Choffnes D.R. Sistemas Operacionais - 3ª edição. Pearson Education. 2005. • Oliveira, Rômulo Silva de; Carissimi, Alexandre da Silva e Toscani, Simão Sirineo. Sistemas Operacionais - 3ª edição - • Série Livros Didáticos do Instituto de Informática da UFRGS - Volume 11. Editora Bookman – 2008 • Notas de aulas dos professores: • Jefferson Igor da Silva – UFRN • Filippo Valiante Filho – SENAC • Evandro Junior
Compartilhar