Sobre a apresentação (About(



Documentos relacionados
Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Chapter 4: Threads. Operating System Concepts 8th Edition

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

Capítulo 8: Gerenciamento de Memória

Programação Concorrente Processos e Threads

(Aula 15) Threads e Threads em Java

Threads. 8 de janeiro de 2015

Threads Aula 04 2 Quadrimestre

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

Capítulo 2: Estruturas de Sistema Operacional

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

É a associação de mais de um fluxo de execução em um único processo.

SO: Gerenciamento de Processos

Sistemas Operacionais

the slides) Sobre a apresentação (About( Capítulo 11: Implementação de Sistemas de Arquivos Sistemas de Arquivos Objetivos

Capítulo 5: Escalonamento da CPU

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

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 I

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

SISTEMAS OPERACIONAIS

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal

Slide. ! Multiprocessamento! Modelo de processo. Dep. Ciência da Computação. Slide. ! Alternância de processos. ! Relação Programa x Processo

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

Introdução à Ciência da Computação

Processos e Threads (partes I e II)

Sistemas Operacionais

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

Sistemas Operacionais. Patrícia Megumi Matsumoto Luciana Maria Gregolin Dias

Sistemas Operacionais I Parte III Estrutura dos SOs. Prof. Gregorio Perez gregorio@uninove.br Roteiro. Componentes do Sistema

8 Threads. 8.1 Introdução

Sistemas Operacionais

Programação Concorrente Conceitos Multiprogramação Threads

Ciclo de Vida de um Processo

Sistemas Operacionais I Parte VI Threads

Arquitetura de Computadores. Sistemas Operacionais IV

ESTUDO DE CASO WINDOWS VISTA

Programação em Memória Compartilhada com OpenMP

Mecanismo de Interrupção

Processos (Threads,Virtualização e Migração de Código)

Capítulo 2 Processos e Threads Prof. Fernando Freitas

Arquitetura de Sistemas Operacionais

SISTEMAS OPERACIONAIS

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Processos. Threads POSIX. A noção de thread. O processo é. Nas aulas anteriores. Plano da aula. A imagem do processo.

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Laboratório de Redes. Professora Marcela Santos

SISTEMAS OPERACIONAIS

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

ACL Linux. O que são ACLs e por que usá-las?

Sistemas Operacionais. Roteiro. Hardware. Marcos Laureano

Sistemas Operacionais

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

Sistema Operacional LINUX

Estrutura, Processos e Threads

Escalonamento no Linux e no Windows NT/2000/XP

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

Visão Geral de Sistemas Operacionais

Escalonamento de CPU 2 Quadrimestre

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

4 Estrutura do Sistema Operacional Kernel

Figura 01 Kernel de um Sistema Operacional

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

LINUX. Lapro I Profa. Fernanda Denardin Walker. - Aula 2 - Material adaptado de: Isabel Mansour, Marcia Moraes e Silvia Moraes SISTEMA OPERACIONAL

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Introdução à Computação: Sistemas Operacionais II

Arquitetura de Banco de Dados

Introdução Dalvik Linux 2.6. Android. Diogo de Campos, João Paulo Pizani Flor, Maurício Oliveira Haensch, Pedro Covolan Bachiega

Acadêmicos: Luís Fernando Martins Nagata Gustavo Rezende Vinícius Rezende Santos

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

(Aula 17) Threads em Java

7 Processos. 7.1 Introdução

SISTEMAS OPERACIONAIS 2007

6 - Gerência de Dispositivos

3 SCS: Sistema de Componentes de Software

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção

Introdução à Linguagem Java

Programação Concorrente

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de Página

Arquitetura de Monitoração de Chamadas Telefônicas IP

Udesc/Ceplan Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Alexandre Veloso

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

Infra-Estrutura de Software. Introdução. (cont.)

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

Sistemas Operacionais

Sistemas Operacionais

Transcrição:

Capítulo 4: Threads

Sobre a apresentação (About( the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2005. Esse apresentação foi modificada por Cristiaino 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, 2005. 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 Silberschatz, Galvin and Gagne 2005

Capítulo 4: Threads Visão Geral Modelos de Múltiplas Threads Questões sobre Threads Pthreads Threads no Windows XP Threads no Linux Threads em Java 4.3 Silberschatz, Galvin and Gagne 2005

Processos com uma e múltiplas m Threads 4.4 Silberschatz, Galvin and Gagne 2005

Benefícios Responsividade Compartilhamento de Recursos Economia Utilização de arquiteturas multiprocessadas (MP) 4.5 Silberschatz, Galvin and Gagne 2005

Threads em Nível N Usuário Gerência de Threads é feito por bibliotecas em nível de usuário Trê bibliotecas de threads principais: POSIX Pthreads Win32 threads Java threads 4.6 Silberschatz, Galvin and Gagne 2005

Threads em Nível N Kernel Suportada pelo Kernel Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X 4.7 Silberschatz, Galvin and Gagne 2005

Modelos de Múltiplas M Threads Muitos-para-Um Um-para-Um Muitos-para-Muitos 4.8 Silberschatz, Galvin and Gagne 2005

Modelo Muitos-para 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.9 Silberschatz, Galvin and Gagne 2005

Modelo Muitos-para para-um (cont.) 4.10 Silberschatz, Galvin and Gagne 2005

Modelo Um-para 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.11 Silberschatz, Galvin and Gagne 2005

Modelo Um-para para-um (cont.) 4.12 Silberschatz, Galvin and Gagne 2005

Modelo Muitos-para 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.13 Silberschatz, Galvin and Gagne 2005

Modelo Muitos-para para-muitos (cont.) 4.14 Silberschatz, Galvin and Gagne 2005

Modelo de Dois NíveisN 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.15 Silberschatz, Galvin and Gagne 2005

Modelo de Dois Níveis N (cont.) 4.16 Silberschatz, Galvin and Gagne 2005

Questões sobre Threads Semântica das chamadas de sistemas fork() e exec() Cancelamento de Thread Manipulação de Sinais Conjunto de Thread (Thread Pools) Dados Específicos de Thread Ativações de Escalonamento 4.17 Silberschatz, Galvin and Gagne 2005

Semântica de fork() e exec() O fork() duplica somente a thread chamadora ou todas as threads? 4.18 Silberschatz, Galvin and Gagne 2005

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.19 Silberschatz, Galvin and Gagne 2005

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.20 Silberschatz, Galvin and Gagne 2005

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.21 Silberschatz, Galvin and Gagne 2005

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.22 Silberschatz, Galvin and Gagne 2005

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.23 Silberschatz, Galvin and Gagne 2005

Pthreads 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.24 Silberschatz, Galvin and Gagne 2005

Threads no Windows XP Implementa o mapeamento um-para-um 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.25 Silberschatz, Galvin and Gagne 2005

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.26 Silberschatz, Galvin and Gagne 2005

Threads em Java Java threads são gerenciadas pela JVM Java threads podem ser criadas: Estendendo a classe Thread Implementando a interface Runnable 4.27 Silberschatz, Galvin and Gagne 2005

Estados das Threads em Java 4.28 Silberschatz, Galvin and Gagne 2005

Fim do Capítulo 4