Chapter 4: Threads.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Sistemas Distribuídos
Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
IC - UFF Sistemas Operacionais Threads. IC - UFF Processos e threads Vimos o conceito de processo englobando duas características básicas: propriedade.
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sistemas Operacionais Gerência de Processador
INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES E SISTEMAS OPERACIONAIS VIVIANE LUCY Sistemas Operacionais Gerência de Processador WebDesign Redes de Computadores.
Sistemas Operacionais
Noções de Sistemas Operacionais
Análise de Casos de Uso.
Threads (Linha de execução )
Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Conceitos de Programação Paralela - 2
Capítulo 5: Escalonamento de CPU
Capítulo 7: Deadlocks.
Sistemas Operacionais
Interação Cliente Servidor
SSC SISTEMAS OPERACIONAIS I Aula 1 – Apresentação da disciplina
SSC SISTEMAS OPERACIONAIS I Aulas 6 – Escalonamento de Processos
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
SSC SISTEMAS OPERACIONAIS I
Silberschatz and Galvin Operating System Concepts Unidade 1: Introdução O que é um sistema operacional? Systemas simples em lote (batch) Sistemas.
Estudo de Caso 1: UNIX e LINUX
Sistemas Operacionais
Processos Conceitos Básicos.
GERENCIAMENTO DE REDES
Sincronização e Comunicação entre Processos
09/03/10 20:13 Claudio de Oliveira – 1/21.
Claudio de Oliveira – Gerência do Processador 09/03/10 20:13 Claudio de Oliveira –
Threads.
1 Felipe L. SeverinoPOD XtremWeb Felipe L. Severino Programação com Objetos Distribuídos paralela e.
Sistemas Operacionais
Threads sem Sincronização
Sistemas Operacionais
Prof. André Leon S. Gradvohl, Dr.
Capítulo 9: Memória Virtual
Unidade 1-1 Processos e Threads
SISTEMAS OPERACIONAIS
Sistemas Operacionais
Programação concorrente:
Sistemas Operacionais
Concorrência entre Threads Java
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
Unidade 2 - Parte 1 Programação Concorrente
IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings.
Sistemas Operacionais
Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aula 9 Regiane Kawasaki
Capítulo 7: Deadlocks.
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
Introdução aos Protocolos de Roteamento Dinâmico
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 11: Implementação de Sistemas de Arquivos.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 13: Sistemas de E/S.
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Programação de Sistemas Distribuídos e Concorrentes
Escalonamento de Processos e Threads
Processos.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 10: Interface de Sistemas de Arquivos.
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
S ISTEMAS OPERACIONAIS PROCESSOS Horácio Ribeiro.
Integração de Ferramentas CASE
Capítulo 4: Processos.
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Bruna Cavallero Martins Universidade Católica de Pelotas.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Transcrição da apresentação:

Chapter 4: Threads

Motivação Threads são processos leves Diferentes tarefas da aplicação podem ser implementadas como threads separados Aplicável apenas às tarefas que possam ser paralelizadas Exemplos: Atualizar o display Buscar dados Verificar correção ortográfica

Motivação A criação de processos é muito custosa Criação de threads é mais simples Vantagens do uso de threads Simplificação do código Aumento da eficiência

Processos mono e multithreads

Benefícios Melhora o tempo de resposta Programa continua executando mesmo que algum thread seja bloqueado (thread no espaço de kernel) Compartilhamento por padrão dos recursos do processo Não precisa de técnicas para criar uma memória compartilhada É mais simples criar um thread do que um processo Não precisa alocar novos recursos e é fácil trocar contexto entre threads Aumenta o paralelismo Em máquinas com multiprocessamento

Programação com múltiplos cores Sistemas com múltiplos cores impulsionam novas formas de programar Maior eficiência na execução de programas Contudo, existem algumas dificuldades É possível paralelizar? As tarefas paralelizáveis tem a mesma importância? Quais conjuntos de dados pertencem a cada thread? Se duas threads usam dados dependentes, como sincronizar o acesso? Como depurar o processo, se existem múltiplos caminhos de execução?

Arquitetura de Servidor Multithreaded

Execução concorrente em um sistema com único core

Execução paralela em um sistema multicore

Threads de usuários Gerenciamento de threads feito por bibliotecas em nível de usuário Não depende de chamadas ao sistema para criar o thread ou para mudar o contexto entre threads O bloqueio de um thread leva ao bloqueio de todo o processo A troca de contextos entre threads é feita mediante cooperação

O bloqueio de um thread não leva ao bloqueio de todo o processo Threads de kernel Gerenciamento de threads feito pelo kernel Depende de chamadas ao sistema para criar o thread ou para mudar o contexto O bloqueio de um thread não leva ao bloqueio de todo o processo A troca de contextos entre threads é feita mediante cooperação e preempção

Modelos multithreads Muitos para um Um para um Muitos para muitos

Muitos para um Diversos threads de usuário mapeados em um único thread de kernel

Um para um Cada thread de usuário mapeado em um thread de kernel

Modelo muitos para muitos Permite que muitos threads de usuário sejam mapeados em muitos threads de kernel Sistema operacional pode criar um número suficiente de threads de kernel

Bibliotecas de threads Bibliotecas de thread dão ao programador uma interface para criar e gerenciar threads Duas formas iniciais de implementação Biblioteca inteiramente em espaço de usuário Biblioteca em nível de kernel suportada pelo sistema operacional

Pthreads Biblioteca de threads que pode ser provida tanto em nível de kernel como em nível de usuário Interface especificada pelo padrão POSIX (IEEE 1003.1c) para criação e sincronização de threads Define apenas a interface. A implementação fica a cargo da biblioteca Amplamente utilizada em sistemas operacionais UNIX (Solaris, Linux, Mac OS X)

Algumas questões de threads…. O fork() duplica apenas o thread que o chama ou todos os threads do processo? Depende da implementação Cancelamento de threads Terminar um thread, chamado de thread alvo, antes que ele chegue ao fim Ex: Vários threads de busca em paralelo. Quando um thread encontra o dado, os outros podem ser finalizados.

Algumas questões de threads…. Tipos Cancelamento assíncrono – Thread alvo encerrado imediatamente Cancelamento adiado – Thread alvo espera até um momento oportuno para ser finalizado Possibilidade de liberar todos os recursos adequadamente Sistema operacional libera apenas os recursos do sistema automaticamente Thread é terminada apenas após liberar os demais recursos alocados Ponto do programa especificado por uma flag

Algumas questões de threads…. Tratamento de sinais Sinais são usados no sistema UNIX para notificar um processo que um evento ocorreu Sinais devem ser entregues a processos Mas se existem vários threads, para qual enviar? Opções Descobrir para qual thread o sinal é direcionado Enviar o sinal para todos os threads Enviar o sinal para um conjunto de threads Criar um thread específico para receber sinais e notificar aos outros threads

Algumas questões de threads…. Conjuntos de threads Pré-criação de um conjunto de threads prontos para serem usados Vantagens Mais rápido usar um thread pronto do que criar um novo thread Garante que a aplicação não tentará criar threads em demasia, exaurindo os recursos do sistema operacional

Threads Exemplos Ex_sem_thread.py Ex_sem_thread_processo.py Ex_thread.py Ex_threadv2.py Ex_thread_mais_legal.py Ex_thread_mais_legal_completo.py Ex_legal_final.py

Exercícios Lista 2 já disponível!

End of Chapter 4