Chapter 4: Threads. Operating System Concepts 8th Edition

Documentos relacionados
Sobre a apresentação (About(

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Sistemas Operacionais I Parte VI Threads

Threads. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Capítulo 13: Sistemas de E/S. Operating System Concepts 8 th Edition

Sistemas Distribuídos Aula 3

Processos e Threads. Ciclo 2 AT3. Prof. Hermes Senger

Resumo: Sistemas Operacionais Abertos

Sistemas Operativos Cap. IV Threads. Prof. José Rogado Universidade Lusófona

Chamadas de Sistema (SYSCALL)

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Sistemas Operacionais

Ferramentas para Programação em Processadores Multi-Core

Estruturas de Sistemas Operacionais

Sobre a apresentação (About( the slides)

Fundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads

Processos ca 3 pítulo

TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade

Thread. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Noções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução

Sistemas Operacionais. Introdução a Sistemas Operacionais

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Capítulo 7: Deadlocks. Operating System Concepts 8th Edition

Sistemas Operacionais

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Curso: Redes de Computadores

Introdução aos Sistemas Operacionais. Threads

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Threads. 8 de janeiro de 2015

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais (SO)

Capítulo 9: Memória Virtual. Operating System Concepts 8th Edition

Redes de Computadores e Aplicações

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU

Capítulo 9: Memória Virtual. Operating System Concepts 8th Edition

Técnicas Avançadas de Programação

Capítulo 2: Estruturas de Sistema Operacional. Operating System Concepts 8 th Edition

Capítulo 2: Estruturas de Sistema Operacional

Sistemas Operacionais

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

OpenMP: Variáveis de Ambiente

Arquitetura de Sistemas Operativos

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8 th Edition

Programação Concorrente Processos e Threads

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Instalação e Configuração de Servidores Linux Server. Prof. Alex Furtunato

(Aula 15) Threads e Threads em Java

Estrutura do Sistema Operacional

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Sistemas Distribuídos e Paralelos

Sistemas Operacionais Aula 3

Threads. Sistemas Operacionais. Charles Tim Batista Garrocho. Instituto Federal de São Paulo IFSP Campus Campos do Jordão. charles.garrocho.

Threads Aula 04 2 Quadrimestre

Avaliação do desempenho de Threads em user level utilizando sistema operacional Linux

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Programação Paralela e Distribuída

PROVA 03/07 Segunda-feira (semana que vem)

Estrutura de Sistemas Operacionais. Capítulo 1: Introdução

SSC0640 Sistemas Operacionais I

Transcrição:

Chapter 4: Threads

Sobre a apresentação (About the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2009. Esse apresentação foi modificada por Cristiano Costa (cac@unisinos.br). Basicamente, os slides originais foram traduzidos para o Português do Brasil. É possível acessar os slides originais em http://www.os-book.com Essa versão pode ser obtida em http://www.inf.unisinos.br/~cac The slides and figures in this presentation are copyright Silberschatz, Galvin and Gagne, 2009. This presentation has been modified by Cristiano Costa (cac@unisinos.br). Basically it was translated to Brazilian Portuguese. You can access the original slides at http://www.os-book.com This version could be downloaded at http://www.inf.unisinos.br/~cac 4.2

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.3

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.4

Processos com uma e múltiplas Threads 4.5

Benefícios Responsividade Compartilhamento de Recursos Economia Escalabilidade Utilização de arquiteturas multiprocessadas (MP) ou multicore 4.6

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.7

Arquitetura de Servidor Multithreaded 4.8

Execução concorrente em um Sistema com um único core 4.9

Execução paralela em Sistemas Multicore 4.10

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.11

Threads em Nível Kernel Suportada pelo Kernel Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X 4.12

Modelos de Múltiplas Threads Muitos-para-Um Um-para-Um Muitos-para-Muitos 4.13

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.14

Modelo Muitos-para-Um (cont.) 4.15

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.16

Modelo Um-para-Um (cont.) 4.17

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.18

Modelo Muitos-para-Muitos (cont.) 4.19

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.20

Modelo de Dois Níveis (cont.) 4.21

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.22

Pthreads Pode ser oferecida tanto em nível de usuário como de kernel Uma API padrão POSIX (IEEE 1003.1c) 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.23

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.24

Estados das Threads em Java 4.25

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.26

Semântica de fork() e exec() O fork() duplica somente a thread chamadora ou todas as threads? 4.27

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.28

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 1. Sinal é gerado por um evento particular 2. Sinal é enviado a um processo 3. 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.29

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.30

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.31

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.32

Exemplos de Sistemas Operacionais Windows XP Threads Linux Thread 4.33

Windows XP Threads 4.34

Linux Threads 4.35

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.36

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) 4.37

Fim do Capítulo 4