Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads.

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais
Advertisements

Sistemas Distribuídos
INTRODUÇÃO À COMPUTAÇÃO Sistemas Operacionais
Sistemas Operacionais
Sistemas Operacionais
Noções de Sistemas Operacionais
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Sistemas Operacionais
Processos no Unix e Linux
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Chapter 4: Threads.
Capítulo 5: Escalonamento de CPU
Capítulo 7: Deadlocks.
SSC SISTEMAS OPERACIONAIS I
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
Descrição de hardware em SystemC
Capítulo 6 Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios
Estudo de Caso 1: UNIX e LINUX
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Sistemas Operacionais
Threads.
Estruturas de Controle
Aula 8 Orientação à Objetos
09/03/10 20:13 Claudio de Oliveira – 1/21.
Experiments with Strassen’s Algorithm: from sequential to parallel
Threads.
Classes e objetos P. O. O. Prof. Grace.
Provas de Concursos Anteriores
Sistemas Operacionais
Conceitos de sistema operacional com Java – 7 a edição, 15/11/2006 Silberschatz, Galvin e Gagne ©2007 Capítulo 5: Escalonamento de CPU.
Utilitários de Redes Prof. Andréa Chicri Torga Adaptações
Capítulo 9: Memória Virtual
Arquitetura de Sistemas Operacionais – Machado/Maia 10/1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
Resultantes de Sistemas de Forças Cap. 4
Object Oriented Software Construction (MEYER, Bertrand)
SISTEMAS OPERACIONAIS
Capítulo 2: Estruturas de Sistema Operacional
Sistemas Operacionais
Capítulo 13: Sistemas de E/S
Apresentação Banco de Dados MySQL.
Concorrência entre Threads Java
Sistemas Operacionais
EXERCÍCIOS PARA GUARDA-REDES
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
Capítulo 1: Introdução.
Projeto de Banco de Dados
1 2 Observa ilustração. Cria um texto. Observa ilustração.
IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings.
Capítulo 1 Introdução 1.1 O que é um sistema operacional
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.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 3: Processos.
Universidade de Mogi das Cruzes Tec
Módulo Compras Relatórios e Relações 1. Objetivo 2 Conhecer os relatórios e as relações do sistema disponibilizadas no módulo Compras.
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: Escalonamento da CPU
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
Capítulo 8: Memória Principal
Capítulo 4: Processos.
Capítulo 8: Memória Principal
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
Transcrição da apresentação:

Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 4: Threads

4.2 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Sobre a apresentação (About the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em Esse apresentação foi modificada por Cristiano Costa Basicamente, os slides originais foram traduzidos para o Português do Brasil. É possível acessar os slides originais em Essa versão pode ser obtida em The slides and figures in this presentation are copyright Silberschatz, Galvin and Gagne, This presentation has been modified by Cristiano Costa Basically it was translated to Brazilian Portuguese. You can access the original slides at This version could be downloaded at

4.3 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 4: Threads Visão Geral Modelos de Múltiplas Threads Bibliotecas de Threads Questões sobre Threads Exemplos de Sistemas Operacionais Threads no Windows XP Threads no Linux

4.4 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Objetivos Introduzir a noção de uma thread — uma unidade fundamental de utilização de CPU que forma a base de sistemas computacionais com múltiplas threads (multithreaded) Discutir as APIs de Pthreads, Win32, e Java Examinar questões relacionadas a programação com múltiplas threads (multithreaded programming)

4.5 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Processos com uma e múltiplas Threads

4.6 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Benefícios Responsividade Compartilhamento de Recursos Economia Escalabilidade Utilização de arquiteturas multiprocessadas (MP) ou multicore

4.7 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Programação Multicore Sistemas Multicore tem pressionado programadores, desafios incluem: Dividir atividades Balanceamento Separação de dados (Data splitting) Dependência de dados Teste e depuração

4.8 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Arquitetura de Servidor Multithreaded

4.9 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Execução concorrente em um Sistema com um único core

4.10 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Execução paralela em Sistemas Multicore

4.11 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Threads em Nível Usuário Gerência de Threads é feito por bibliotecas em nível de usuário Três bibliotecas de threads principais: POSIX Pthreads Win32 threads Java threads

4.12 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Threads em Nível Kernel Suportada pelo Kernel Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X

4.13 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelos de Múltiplas Threads Muitos-para-Um Um-para-Um Muitos-para-Muitos

4.14 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo Muitos-para-Um Muitas threads em nível usuário são mapeadas para uma única thread no kernel Exemplos: Solaris Green Threads GNU Portable Threads

4.15 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo Muitos-para-Um (cont.)

4.16 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo Um-para-Um Cada thread em nível usuário é mapeada para uma thread em nível kernel Exemplos Windows NT/XP/2000 Linux Solaris 9 e posteriores

4.17 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo Um-para-Um (cont.)

4.18 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo Muitos-para-Muitos Permite que muitas threads em nível usuário sejam mapeadas para muitas threads em nível kernel Permite que o sistema operacional crie um número suficiente de threads no kernel Solaris versão anterior a 9 Windows NT/2000 com o pacote ThreadFiber

4.19 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo Muitos-para-Muitos (cont.)

4.20 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo de Dois Níveis Similar ao M:M, exceto que ele permite que uma thread do usuário seja amarrada (bind) a uma thread no kernel Exemplos IRIX HP-UX Tru64 UNIX Solaris 8 e anterior

4.21 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Modelo de Dois Níveis (cont.)

4.22 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Bibliotecas de Thread Bibliotecas de Thread (Thread library) fornecem ao programador uma AP para criar e gerenciar threads Duas formas principais de implementação Biblioteca totalmente em espaço de usuário Biblioteca em nível de kernel suportada pelo SO

4.23 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Pthreads Pode ser oferecida tanto em nível de usuário como de kernel Uma API padrão POSIX (IEEE c) para criação e sincronização de threads A API especifica o comportamento da biblioteca de threads, a implementação está a cargo do desenvolvedor da biblioteca. Comum nos sistemas operacionais UNIX (Solaris, Linux, Mac OS X)

4.24 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Threads em Java Java threads são gerenciadas pela JVM Tipicamente implementadas usando o modelo de threads fornecido pelo SO em que executa Java threads podem ser criadas: Estendendo a classe Thread Implementando a interface Runnable

4.25 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Estados das Threads em Java

4.26 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Questões sobre Threads Semântica das chamadas de sistemas fork() e exec() Cancelamento de Thread de uma thread alvo Assíncrono ou delegado Manipulação de Sinais Conjunto de Thread (Thread Pools) Dados Específicos de Thread Ativações de Escalonamento

4.27 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Semântica de fork() e exec() O fork() duplica somente a thread chamadora ou todas as threads?

4.28 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Cancelamento de Thread Terminação de uma thread antes dela ter finalizado Duas abordagens: Cancelamento Assíncrono termina a thread alvo imediatamente Cancelamento Delegado permite que a thread alvo seja periodicamente verificada se deve ser cancelada

4.29 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Manipulação de Sinais Sinais são usados nos sistemas UNIX para notificar um processo que um evento particular ocorreu Um manipulador de sinais (signal handler) é usado para processar sinalizações  Sinal é gerado por um evento particular  Sinal é enviado a um processo  Sinal é manipulado Opções: Enviar o sinal para a thread para qual ele se aplica Enviar o sinal para cada thread no processo Enviar o sinal para determinadas threads no processo Associar uma thread específica para receber todos os sinais enviados para o processo

4.30 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Conjunto de Threads Cria um número de threads que formam um conjunto para espera de trabalho Vantagens: Usualmente torna um pouco mais rápido o atendimento a uma requisição com uma thread existente do que criar uma nova Permite que o número de threads na aplicação seja limitado pelo tamanho do conjunto

4.31 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Dados Específicos de Thread Permite que cada thread tenha seu próprio conjunto de dados Útil quando não se tem controle sobre o processo de criação de threads (ex. quando se usa um conjunto de threads)

4.32 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Ativações de Escalonamento Tanto o modelo M:M quanto em dois níveis requer comunicação para manter o número apropriado de threads no kernel alocado para a aplicação Ativações de escalonamento fornecem upcalls - um mecanismo de comunicação do kernel para a biblioteca de threads Essa comunicação permite uma aplicação manter o número correto de threads no kernel

4.33 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exemplos de Sistemas Operacionais Windows XP Threads Linux Thread

4.34 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Windows XP Threads

4.35 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Linux Threads

4.36 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Threads no Windows XP Implementa o mapeamento um-para-um em nível de kernel Cada thread contém Um identificador de thread (id) Conjunto de registrados Pilhas separadas para kernel e usuário Área privada de armazenamento de dados O conjunto de registradores, pilhas e área de armazenamento privado são denominados contexto da thread As principais estruturas de dados de uma thread são: ETHREAD (executive thread block) KTHREAD (kernel thread block) TEB (thread environment block)

4.37 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Threads no Linux No Linux são denominadas de tarefas (tasks) ao invés de threads Criação de threads é feita através da chamada de sistemas clone() clone() possibilita que uma tarefa filha compartilha o espaço de endereçamento com a tarefa pai (processo)

Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Fim do Capítulo 4