Sistemas Operacionais I Parte VI Threads

Documentos relacionados
Sistemas Operacionais

Chapter 4: Threads. Operating System Concepts 8th Edition

Sistemas Distribuídos Aula 3

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Sistemas Operacionais

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

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

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos

SSC0640 Sistemas Operacionais I

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

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

Sistemas Operacionais. Processos e Threads

Concorrência em Java. Threads em Java

Threads. O que é uma Thread? Paralelismo

Prof. Gregorio Perez 2007

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

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

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

Sistemas Operacionais

Sistemas Operativos 4ª parte - Threads

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

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

Sistemas Operacionais

Sistemas Operacionais

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

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 2. Gerência de Processos

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

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

Sistemas de Informação. Sistemas Operacionais

EEL770 Sistemas Operacionais

Sobre a apresentação (About(

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

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

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

SISTEMAS DISTRIBUÍDOS PROCESSOS. Slides cedidos pela professora Aline Nascimento

MULTITHREADING. Prof.: Michele Nasu Tomiyama Bucci

Concorrência em Processos

Sistemas Distribuídos

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

Execução concorrente em Java: threads. O que são Threads? Criação e métodos de Threads Sincronização Comunicação entre Threads

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

Técnicas Avançadas de Programação

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

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

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

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.

Resumo: Sistemas Operacionais Abertos

Processos. Conceitos Básicos

Sistemas Operacionais. Capítulo 5 Processos

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

Curso: Redes de Computadores

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

Sistemas Operacionais. Prof. Fabio Augusto Oliveira

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Threads Aula 04 2 Quadrimestre

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Sistemas Operacionais Estrutura do Sistema Operacional. Arquiteturas do Kernel

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência

UNIVERSIDADE ESTADUAL VALE DO ACARAÚ- UEVA. Assunto: Programação Concorrente.

Threads. Pedro Cruz. EEL770 Sistemas Operacionais

BC Sistemas Operacionais. Threads. Aula 04 3 Quadrimestre de Prof. Marcelo Z. do Nascimento.

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

Estrutura dos Sistemas Operacionais. Sérgio Portari Júnior

Sistemas Operacionais

Processos ca 3 pítulo

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Ferramentas para Programação em Processadores Multi-Core

Estrutura do Sistema Operacional

Processos. Conceitos Básicos

Disciplina: Sistemas Operacionais

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Sistemas Operacionais

Threads em Java. Java Threads. Java Componentes: JVM JVM:

Fundamentos de Sistemas Operacionais

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

Programação Orientada a Objetos (DPADF 0063)

Figura 01 Programa e Processo

Sistemas de Informação. Sistemas Operacionais

(Aula 15) Threads e Threads em Java

LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE

Processos. Processos e Recursos (1) Tabelas de Controle do S.O. Processos e Recursos (2)

Programação concorrente (processos e threads)

Sistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

Estruturas de Sistemas Operacionais

Processos. Adão de Melo Neto

Algoritmos e Lógica de Programação Sistemas Operacionais

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Sistemas Operacionais

Roteiro 20/9/2010. Serviço do sistema operacional. Interface. Chamadas de sistemas (System Call) Programas do sistema Projeto e Implementação

Arquitetura de Sistemas Operativos

Chamadas de Sistema (SYSCALL)

SISTEMAS OPERACIONAIS

Processos e Threads. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Sistemas Operacionais (SO)

Transcrição:

Sistemas Operacionais I Parte VI Threads Roteiro Introdução Benefícios Ciclo de Vida Estados Modelos Multithreading Modelo Muitos para Um Modelo Um para Um Modelo Muitos para Muitos Sistemas com Threads Threads no Java Questões Prof. Gregorio Perez gregorio@uninove.br 2007 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 2 Threads Introdução Tradicionalmente, processo é um programa em execução Supõem-se um único fluxo de controle Em sistemas modernos um processo pode conter múltiplos fluxos de controle - Threads Thread Também conhecido como processo leve (lightweight process) É uma unidade básica de utilização da CPU Coletivamente conhecido como tarefa Consiste em: ID da Thread Contador de Programa Registradores Pilha (program counter) (register set) (stack space) 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 3

Threads Introdução Thread Um Thread compartilha com outros Threads do mesmo processo: Seção de Código Seção de Dados Recursos do Sistema operacional (arquivos abertos, ) Um processo tradicional ou processo pesado (heavyweight process) é uma tarefa com um Thread Código Dados Arquivos Processo tradicional - Um thread Código Dados Múltiplos threads Arquivos Thread 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 4 Threads Exemplo Um processador de Texto com 3 threads Figura extraída de Sistemas Operacionais Modernos A.Tanenbaum; 2a Edição; Ed. Pearson 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 5 Threads Exemplo Um servidor web com múltiplos threads Figura extraída de Sistemas Operacionais Modernos A.Tanenbaum; 2a Edição; Ed. Pearson 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 6

Threads Introdução Ambiente multithread Desnecessário processos para implementar aplicações concorrentes Cada processo pode responder a várias solicitações Concorrentemente ou simultaneamente (vários processadores) Diferença Sub-processo e Thread Espaço de endereçamento Sub-processo espaço independente e protegido Thread mesmo espaço do processo e não protegido Threads podem alterar dados em outras Threads 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 7 Multithreads Benefícios Capacidade de Resposta Permite que um programa continue em execução, mesmo que parte dele esteja bloqueado ou executando uma tarefa demorada Compartilhamento de Recursos Threads podem compartilhar recursos de memória e processador Vários threads diferentes no mesmo espaço de endereçamento Economia Alocar memória e processador é mais rápido para threads do que para processos Arquitetura com múltiplos processadores Cada thread pode ser executado em paralelo em um processador diferente 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 8 Ciclo de Vida de Threads Estados Novo (Born) Pronto (Ready ou runnable) em Execução (Running) Terminado (Dead) Bloqueado (Blocked) Espera (Waiting) Adormecido (Sleeping) Figura extraída de Sistemas Operacionais Deitel et al; 3a Edição; Ed. Pearson 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 9

Ciclo de Vida de Threads Operações Threads e processos possuem operações em comum Criar (Create) Encerrar (Terminated) Suspender (Suspend) Retomar (Resume) Dormir (Sleep) Acordar (Wake) Operações de threads que não correspondem a operações de processos Cancelar (Cancel) Associar 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 10 Suporte a Threads Threads de Usuários Gerenciamento de Thread feito no nível do usuário Biblioteca de threads Suporte à criação, escalonamento e gerência Sem intervenção do Kernel Rápidos de criar e gerenciar Se o kernel tiver um único thread, sistema pode paralisar (thread bloqueante) Principais bibliotecas de threads POSIX Pthreads Java threads Win32 threads Mach C-threads Solaris threads 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 11 Suporte a Threads Threads de Kernel Suportadas diretamente pelo Kernel Criação, escalonamento e gerência feitos no espaço do Kernel Criação e gerência mais lentos que os threads de usuários Kernel sempre pode escalonar outro thread sistema nunca paralisa Kernel pode escalonar processos em outros processadores Exemplos Windows XP/2000 Solaris Linux Tru64 UNIX Mac OS X 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 12

Modelos Multithreading Muitos sistemas fornecem suporte a threads de usuário e kernel, resultando diferentes modelos de multithreading Modelo Muitos para um Modelo um para um Modelo Muitos para muitos 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 13 Modelos Multithreading Modelo Muitos para Um Muitas threads do usuário associadas a uma única thread de kernel Exemplos Solaris Green Threads GNU Portable Threads Eficiente, pois a gerência é feita no espaço do usuário Usuário Kernel Desvantagens Se houver chamada bloqueante o processo inteiro é bloqueado Não é possível executar múltiplos threads em multiprocessadores 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 14 Modelos Multithreading Modelo Um para Um Cada thread do usuário associada a uma thread de kernel Exemplos Windows NT/XP/2000 Linux Solaris 9 e acima Usuário Kernel Oferece mais concorrência Permite que outro thread execute quando um thread efetuar uma chamada bloqueante ao sistema Permite executar múltiplos threads em paralelo em multiprocessadores Desvantagem Criar um thread de usuário requer criar um thread de kernel Restrição no número de threads suportadas neste sistema 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 15

Modelos Multithreading Modelo Muitos para Muitos Permite que muitas threads no nível do usuário sejam associadas a muitas threads (em número menor ou igual) no nível do kernel Permite que o sistema operacional crie um número suficiente de threads de kernel Exemplos Solaris antes da versão 9 Windows NT/2000 com o pacote ThreadFiber IRIX Tru64 UNIX Usuário Kernel 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 16 Modelos Multithreading Modelo Muitos para Muitos Permite ao desenvolvedor criar tantos threads de usuário quanto desejar Os threads de Kernel correspondentes podem executar em paralelo em um multiprocessador Quando um thread efetuar uma chamada bloqueante ao sistema, o kernel pode escalonar outro thread para execução Desvantagem Verdadeira concorrência não é obtida Apenas um thread pode ser escalonado pelo kernel de cada vez 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 17 Sistemas com Threads Threads do Solaris 2 Versão do UNIX transformado em SO moderno com Suporte a threads de usuário e de kernel Multiprocessamneto Simétrico (SMP) Escalonamento de Tempo Real Figura extraída de Sistemas Operacionais, Conceitos e Aplicações A. Silberschatz, et al; Ed. Campus LWP (Lightweight Process ou Processo Leve) nível intermediário entre as Threads no nível do usuário e as Threads no nível do Kernel 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 18

Sistemas com Threads Threads do Solaris 2 usuário contém ID da Thread Registradores Pilhas e Prioridade Nenhum envolvimento de núcleo significa rapidez de troca LWP (Lightweight Process ou Processo Leve) PCB com dados de registrador Contabilidade e informações de memória Troca entre LWPs é relativamente lenta Estrutura de dados do kernel e reside em espaço do kernel Threads de Kernel Pequena estrutura de dados e uma pilha Troca de Threads não exige alterar as informações de acesso à memória relativamente rápido 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 19 Sistemas com Threads Threads do Windows 2000 / XP Cada thread contém ID da Thread Registradores Pilhas separadas para usuário e kernel Área de armazenamento particular (private) Os registradores, pilhas e área de armazenamento particular são conhecidos como contexto dos threads 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 20 Sistemas com Threads Threads do Windows XP A estrutura de dados primária de um thread inclui: ETHREAD bloco executivo KTHREAD bloco kernel TEB bloco de ambiente Figura extraída de Sistemas Operacionais Deitel et al; 3a Edição; Ed. Pearson 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 21

Sistemas com Threads Threads do Linux Linux refere-se aos threads como tarefas (tasks) Criação de Threads é feita através de comando do system call clone() clone() permite que uma tarefa filha compartilhe o espaço de endereçamento da tarefa pai (processo) Figura extraída de Sistemas Operacionais Deitel et al; 3a Edição; Ed. Pearson 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 22 Sistemas com Threads Threads no Java Gerenciadas pela Máquina Virtual Java (JVM) Threads no Java Podem ser criadas Estendendo classes Thread (class Thread) Implementando uma interface Runnable 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 23 Threads no Java Estendendo classes class Operario extends Thread public void run( ) System.out.println("Thread trabalhando!"); public class Primeira public static void main(string args[ ]) Operario tarefa = new Operario ( ); tarefa.start( ); System.out.println("Thread Principal"); 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 24

Threads no Java Implementando a Interface Runnable public interface Runnable public abstract void run( ); ); class Operario2 implements Runnable public void run() System.out.println("Thread Operaria"); public class Segunda public static void main(string args[ ]) ]) Runnable tarefa = new Operario2( ); ); Thread thrd = new Thread( tarefa ); ); thrd.start(); System.out.println("Thread Principal"); 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 25 Threads no Java Gerência de Threads suspend( ) Suspende a execução de um thread que estiver executando no momento sleep( ) Suspende um thread em execução no momento por período determinado resume( ) Retoma um thread que havia sido suspenso stop( ) Interrompe a execução de um thread. Depois de interrompido, um thread não pode ser retomado ou iniciado new( ) Novo start( ) sleep( ) suspend( ) I/O executável bloqueado stop( ) Terminado resume( ) I/O disponível 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 26 Threads no Java Exemplo de Thread class Tarefa extends Thread private int tempo; public Tarefa (String nome) super(nome); tempo = (int)( Math.random()*5001); public void run() try System.err.println( getname() + dormira + tempo + " milisegundos" ); ); Thread.sleep(tempo); catch(interruptedexception excecao) excecao.printstacktrace(); System.err.println( getname() + " acordou! "); 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 27

Threads no Java Exemplo de Thread public class Processo03 public static void main(string args[ ]) ]) Tarefa trabalho01 = new Tarefa("Operario 01"); Tarefa trabalho02 = new Tarefa("Operario 02"); Tarefa trabalho03 = new Tarefa("Operario 03"); System.err.println("\n\n Iniciando as Threads! "); trabalho01.start(); trabalho02.start(); trabalho03.start(); System.err.println("Programa Principal encerrado!\nthreads Iniciadas!\n"); 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 28 Operações nos Processos Questões Que recursos são usados quando uma thread é criada? Como eles diferem daqueles usados quando um processo é criado? Qual a vantagem fundamental que você obteria executando uma aplicação multithread em um sistema multipro-cessado em vez de um sistema unipro-cessado? Como um projeto de software pode ser melhorado com a ajuda de aplicações multithread para executarem mais rapidamente? Por que os processos tradicionais são chamados de processos pesados? Por que threads do mesmo processo em geral se comunicam mais eficientemente do que em processos separados? Por que implementações de threads de usuário promovem portabilidade? Por que uma aplicação de software escrita para threads de kernel é menos portável do que um software escrito para threads de usuários? 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 29 Referência Bibliográfica Sistemas Operacionais Deitel, Deitel e Choffnes; Ed. Pearson 3a Edição www.prenhall.com/deitel_br Sistemas Operacionais, Conceitos e Aplicações A. Silberschatz, P. Galvin, G. Gagne; Ed. Campus Tradução da 6a Edição www.wiley.com/college/silberschatz6e/ 0471417432/slides/slides.html Sistemas Operacionais Modernos Andrew Tanenbaum; Ed. Pearson 2a Edição www.prenhall.com/tanenbaum_br 2007 Sistemas operacionais I - SO I - 06 -prof. Gregorio Perez 30