Sistemas Operacionais I



Documentos relacionados
(Aula 15) Threads e Threads em Java

Programação Concorrente Processos e Threads

Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

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

Threads. 8 de janeiro de 2015

SISTEMAS OPERACIONAIS

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

PROCESSOS. Prof. Maicon A. Sartin

SO: Gerenciamento de Processos

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

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

Sistema Operacional Correção - Exercício de Revisão

Capítulo 8. Software de Sistema

Sistemas Distribuídos: Conceitos e Projeto Threads e Migração de Processos

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

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

Sobre a apresentação (About(

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

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

OO Engenharia Eletrônica

8 Threads. 8.1 Introdução

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

Programação Sistemas

Programação com Posix Threads

Threads Aula 04 2 Quadrimestre

UFRJ IM - DCC. Sistemas Operacionais I

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Sistema de arquivos. Prof. Valeria M. Bastos Prof. Antonio Carlos Gay Thomé 13/06/2012 1

4 Estrutura do Sistema Operacional Kernel

Estrutura, Processos e Threads

SISTEMAS OPERACIONAIS

Processos e Threads (partes I e II)

Escalonamento no Linux e no Windows NT/2000/XP

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

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

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

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

SISTEMAS OPERACIONAIS 2007

Sistemas Operacionais

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

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

7 Processos. 7.1 Introdução

Linguagem de Programação I

Arquitetura de Sistemas Operacionais

Processos. Adão de Melo Neto

ESTUDO DE CASO WINDOWS VISTA

Introdução. Sistemas Operacionais

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

Sistemas Operacionais

Sistemas Distribuídos

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Capítulo 2 Processos e Threads Prof. Fernando Freitas

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

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

Sistemas Operacionais

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

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

Sistemas Operacionais

Capítulo 8 Arquitetura de Computadores Paralelos

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

Sistemas Distribuídos

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

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

SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

Sistema Operacional Ex: Complexo Computador multiusuário com vários terminais Tem que administrar todos os pedidos de usuários e assegurar que eles

Sistemas Operacionais Processos e Threads

Memória. Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação

Processes. Chapter 3 PROCESSOS. O capitulo anterior concentrou-se na comunicação em Sistemas Distribuídos.

Máquina de estados UNIX O

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

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

Java. Marcio de Carvalho Victorino

Sistemas Operacionais

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

ANÁLISE DE DESEMPENHO DA PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PRIMOS UTILIZANDO PTHREAD E OPENMP 1

Programação Concorrente Conceitos Multiprogramação Threads

Organização e Arquitetura de Computadores

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

Sistemas Operacionais

Processamento de Dados

Sistemas Operacionais. Alexandre Meslin

Visão Geral de Sistemas Operacionais

Threads em Java. Sistemas Operacionais - Laboratório Professor Machado

Transcrição:

UFRJ IM - DCC Sistemas Operacionais I Unidade II - Threads 24/04/2014 Prof. Valeria M. Bastos 1

ORGANIZAÇÃO DA UNIDADE Threads Processos Threads Conceituação Descrição e Imagem de uma Thread Tipos de thread Modelos Multithread Comunicação entre Threads Concorrência Deadlock e Starvation 2

Conceituação Unidade de execução em sistemas modernos Um processo Um thread Ex: DOS Um processo múltiplos threads Ex: Java runtime engine Múltiplos processos Um thread por processo Ex: UNIX Multiplos processos Múltiplos threads por processo Ex: Windows NT, Solaris, OS/2, entre outros. 3

Imagem de um Thread Modelo MultiThread Modelo de Processo (únicothread) Thread Thread Thread Bloco do controle Thread Bloco do controle Thread Bloco do controle Thread Bloco de controle de processo Pilha Usuário Bloco de controle de processo Pilha Usuário Pilha Usuário Pilha Usuário Espaço de endereçamento do usuário Pilha Kernel Espaço de endereçamento do usuário Pilha Kernel Pilha Kernel Pilha Kernel 4

Sistemas Multithread Unidade de Alocação PROCESSO Unidade de Execução THREAD Unidade de Proteção PROCESSO 5

Benefícios Efetividade Permite que a execução do processo continue mesmo que alguns de seus Threads estejam bloqueados. Compartilhamento de Recursos Threads compartilham memória e outros recursos do processo Economia Threads são mais econômicos de serem criados e o custo da troca de contexto é menor Utilização de Múltiplos Processadores Cada Thread pode ser executado em paralelo em um processador distinto 6

Tipos de Threads Usuário O kernel não vê os threads Kernel Implementada pelo Kernel Processo leve (LWP*) Uma combinação (*) Lightweight process 7

Tipos de threads Threads de usuário Threads de Kernel 8

Processos Leves Threads Tipos de Threads 9

Threads de usuário Suporte acima do nível de Kernel Implementadas via user-level thread library (RTL*) Criação, escalonamento e suporte via biblioteca Rápida de ser criada e gerenciada Não podem fazer uso de mais de um processador Chamadas ao sistema podem bloquear o processo Sistemas que suportam user threads POSIX Pthreads Mach C-threads Solaris 2 UI-threads (UI Unix International) (*) Run-time Library 10

Threads de kernel Suporte O Kernel cria, escalona e administra os threads Criação e administração mais demorados que as ULTs Podem ser escalonadas para rodar em diferentes processadores Bloqueio de um thread não bloqueia o processo Sistemas que Suportam kernel threads Windows 95/98/NT/2000/XP Solaris Linux 11

LWP (processos leves) Criação de threads é feita em modo usuário A maior parte do escalonamento e sincronização acontece em modo usuário Os threads em modo usuário são mapeados num número possivelmente menor de threads do kernel 12

Modelos de Multi-Thread Um para Um (Implementações UNIX) Cada thread é um único processo com seu próprio espaço de endereçamento e recursos. Muitos para Um (Windows NT, Solaris, OS/2, dentre outros) Um processo define um espaço de endereçamento e propriedade de recursos dinâmicos. Múltiplos threads podem ser criados e executados dentro deste processo. Um para Muitos (Ra Clouds, Emerald) Um thread pode migrar de um ambiente de processo para outro. Isto permite mover o thread entre diferentes sistemas, Muitos para Muitos (TRIX) Combina atributos de M:1 e 1:M 13

Modelo Muitos para Um Gerenciamento do Thread é feito no espaço do usuário (RTL) Usado em sistemas que não suportam Threads Drawback: um thread fazendo uma blocking system call bloqueia todo o processo. 14

Modelo Um para Um Cada user-level thread é mapeado para um kernel thread. Drawback: criar um user thread requer a criação de um kernel thread isto pode afetar fortemente o desempenho da aplicação Muitas implementações restringem o número de Threads suportados pelo sistema 15

Modelo Muitos para Muitos Permite que vários ULTs sejam mapeados para um número menor ou maior de KLTs.. Permite que o SO crie um número suficiente de KLTs. Supera algumas restrições dos modelos: Many-One and One- One models Examples Solaris 2 Tru64 UNIX 16

SMP Multiprocessamento Simétrico Cache Processador Cache Processador... Cache Processador Memória Principal Subsistema E/S 17

Threads no Solaris 18

Threads no Solaris 19

Threads no LINUX 20

Threads no Ambiente JAVA Java provê suporte para criação e gerência de threads no nível da linguagem Java threads são gerenciadas pela Java Virtual Machine (JVM) Java threads podem ser criadas: Estendendo-se a classe Thread sobrepondo a execução do método da classe. É executado como uma nova thread pela JVM sempre que o método for chamado Um método inicial é chamado, que aloca memória e inicializa uma nova thread na JVM e chama o método responsável pela execução da thread 21

Comunicação entre Threads compartilhamento de recursos espaço de endereçamento de memória compartilhado técnicas de sincronização semelhante as utilizadas em processos 22

Biblioteca de Threads - Pthread Algumas funções pthread_create(&id1, NULL, proc, NULL); pthread_join(id1, NULL); pthread_mutex_lock(&mut); pthread_mutex_unlock(&mut); 23

Exemplo #include <stdio.h> #include <stdlib.h> #include <pthread.h void *print_message_function( void *ptr ); main() { pthread_t thread1, thread2; char *message1 = "Thread 1"; char *message2 = "Thread 2"; int iret1, iret2; iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) message1); iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) message2); pthread_join( thread1, NULL); pthread_join( thread2, NULL); printf("thread 1 returns: %d\n",iret1); printf("thread 2 returns: %d\n",iret2); exit(0); } 24

Exemplo void *print_message_function( void *ptr ) { char *message; message = (char *) ptr; printf("%s \n", message); } Compile: cc -lpthread pthread1. 25

Hyper-threading A geração de processadores da Intel IA-32 conhecida como arquitetura Prescott, inclui uma novidade chamada SMT (simultaneous multithreading), ou hyper-threading. Para melhor aproveitar a funcionalidade SMT, as aplicações precisam ser escritas com múltiplos Threads e, como numa arquitetura SMP. Quanto maior o grau de multi-thread maior a performance que a aplicação poderá extrair da arquitetura Prescott. 26

Hyper-threading Outra característica da Arquitetura Prescott é ser OOE (Out of Order Execution) em tempo de execução. OOE pega o código escrito e compilado para ser executado em sequência e reescalona a ordem de execução (sempre que possível) para otimizar ao máximo o uso do processador. Após a execução restaura a ordem original e assim a validade dos resultados é garantida. A operação é transparente para o programador, somente a CPU sabe a ordem em que as instruções são realmente executadas. 27

Hyper-threading Nesta Arquitetura INTEL: Front end consiste do instruction fetcher and do decoder. Back end ou execution core consiste de todo o resto das operações: register ename logic, out-of-order scheduling logic. Single-threaded CPU Fonte: http://archive.arstechnica.com/paedia/images/hyperthreading-2.html 28

Hyper-threading Single-threaded CPU 29

Hyper-threading Superthreading com CPUs Multithreads Superthreaded CPU 30

Hyper-threading Hyper-threading elimina a restrição onde, a cada clock, apenas instruções de um mesmo thread podem carregar o Front End Hyper-threaded CPU 31