IX FITEM (2010) Fórum de Informática e Tecnologia da UEM Programação Paralela: Sistemas Multicore Prof. Hermes Senger [email protected] http://www.dc.ufscar.br/~hermes/FITEM2010/ FITEM 2010 Hermes Senger Parte I - Introdução Aplicações – Modelos – Problemas computacionais • Grand challenges ● Arquiteturas paralelas – breve revisão • SMPs • MPPs • Clusters • Grids • Clouds – Modelos de programação ● FITEM 2010 Desempenho: – speedup, eficiência – Lei de Amdhal ● Processos e Threads – criação – troca de contexto – escalonamento – modelo de memória compartilhadacon ceitos (revisão) ● Hermes Senger Modelos de aplicação Software multithread gerencia múltiplas atividades independentes, tais como: sistemas de janelas em computadores pessoais ou workstations; sistemas operacionais multiprocessadores ou time-sharing; e sistemas de tempo-real que controlam usinas de energia, aeronaves, etc. Exemplos de computação distribuída: sistemas de arquivo em um sistema em rede, bancos de dados para sistemas bancários, empresa aérea, servidores web na Internet, sistemas tolerantes a falhas que permanecem executando mesmo com a ocorrência de falha. Exemplos de computação paralela incluem: computação científica que modela e simula fenômenos como o clima global, a evolução do sistema solar ou o efeito de novas drogas; processamento gráfico e de imagens, incluindo a criação de efeitos especiais em filmes; grandes problemas combinacionais ou de otimização. FITEM 2010 Hermes Senger Programação concorrente Um programa concorrente contém dois ou mais processos que trabalham juntos para realizar uma tarefa. ● Cada processo é um programa sequencial com um única linha de execução (single thread of control). ● Um programa concorrente tem múltiplas linhas de execução (multiple thread of control). ● Os processos em um programa concorrente trabalham juntos, comunicando-se para trocas de informações. ● A comunicação é programada usando variáveis compartilhadas ou por passagem de mensagens. ● Independente da forma de comunicação, processos também precisam estar sincronizados entre si. ● Existem dois tipos principais de sincronização: exclusão mútua e condições de sincronização (condition synchronization). ● FITEM 2010 Hermes Senger Computação paralela Demanda crescente por poder computacional: Desejo de resolver novos problemas Necessidade de resolver problemas computacionais já tratados: − com melhor precisão − de maneira mais rápida Limitação na capacidade de integração de circuitos FITEM 2010 Hermes Senger Computação Paralela Problemas computacionais complexos normalmente apresentam as seguintes características: Podem ser divididos em partes distintas que podem ser executadas simultaneamente Podem ter diversas instruções sendo executadas ao mesmo tempo São executados em menor tempo quando múltiplos recursos computacionais são utilizados FITEM 2010 Hermes Senger Problemas computacionais • Aplicações atuais em muitos casos envolvem a manipulação de grandes volumes de dados, o que requer processamento extensivo. Exemplos: Bancos de dados paralelos e data mining Exploração mineral Máquinas de busca na Web Serviços baseados na Web Suporte para diagnósticos auxiliados por computador Gerenciamento de grandes empresas Computação gráfica e realidade virtual Suporte para tecnologias multimídia Ambientes para trabalho cooperativo Simulações de dinâmica molecular Indexação da Web FITEM 2010 Hermes Senger Grand Challenge Problems “A grand challenge problem is one that cannot be solved in a reasonable amount of time with today's computers.” Exemplos (http://en.wikipedia.org/wiki/Grand_Challenge_problem): Applied Fluid Dynamics: – the design of hypersonic aircraft, efficient automobile bodies, and extremely quiet submarines, – weather forecasting for short and long term effects, – efficient recovery of oil, and for many other applications Meso- to Macro-Scale Environmental Modeling Electronic structure calculations for the design of new materials such as: – chemical catalysts, immunological agents, and superconductors; Ecosystem Simulations Biomedical Imaging and Biomechanics Molecular Biology Molecular Design and Process Optimization Cognition ... FITEM 2010 Hermes Senger Os 500 maiores supercomputadores www.top500.org FITEM 2010 Hermes Senger Parte I - Introdução Aplicações – Modelos – Problemas computacionais • Grand challenges ● Arquiteturas paralelas – breve revisão • SMPs • MPPs • Clusters • Grids • Clouds – Modelos de programação ● FITEM 2010 Desempenho: – speedup, eficiência – Lei de Amdhal ● Processos e Threads – conceitos (revisão) ● Hermes Senger Arquitetura de Von Neumann http://commons.wikimedia.org/wiki/Image:Von_Neumann_architecture.png Arquitetura de Von Neumann: Programa = sequência de instruções na memória Registrador (PC) indica palavra de memória que contém próxima instrução a executar Decodificação e execução das instruções feitas a partir de um registrador interno da CPU (IR) Operação: Loop { − IR = Mem[PC] − PC = PC +1 − Executa IR − Testa e trata INT } FITEM 2010 # Busca instrução; uso do cache e mecanismos de prefetching, branch prediction, ... # Incrementa ponteiro de instruções. Incremento equivalente ao tamanho da palavra... # Decodifica e executa instrução. Lógica no nível de micro-programa. # Verifica interrupção: assíncrona (externa), trap, instrução (int) Hermes Senger www.top500.org FITEM 2010 Hermes Senger Tipos de Computadores Paralelos Taxonomia de Flynn (*) Classificação de computadores de alto desempenho, baseada na forma de manipulação de instruções e dados: SISD: Single instruction, single data stream MISD: Multiple instruction, single data stream SIMD: Single instruction, multiple data streams MIMD: Multiple instruction, multiple data streams (*) M.J. Flynn, Some computer organizations and their effectiveness, IEEE Transactions on Computing, C-21, (1972) 948-960. FITEM 2010 Hermes Senger Taxonomia de Flynn Single instruction, single data stream (SISD): computador convencional com uma CPU, sem paralelismo de instruções ou dados, como um PC ou um mainframe. Multiple instruction, single data stream (MISD): computador hipotético, em que múltiplos processadores atuariam sobre um único fluxo de dados. Pode ser empregado em casos de paralelismo para redundância. FITEM 2010 Hermes Senger Taxonomia de Flynn Single instruction, multiple data streams (SIMD): computador que explora múltiplos fluxos de dados com um único fluxo de instruções. Normalmente possui grande número de processadores, que executam a mesma operação de maneira coordenada (lock-step) sobre dados diferentes, como um array processor ou vectorprocessor. Uma variação dessa classificação inclui: Single Program, multiple data streams (SPMD): múltiplos processadores autônomos executando simultaneamente o mesmo conjunto de instruções, de maneira independente, sobre dados distintos. FITEM 2010 Hermes Senger Taxonomia de Flynn Multiple instruction, multiple data streams (MIMD): consistem de múltiplos processadores autônomos, que executam diferentes instruções sobre diferentes conjuntos de dados. Exemplos dessa arquitetura incluem os sistemas distribuídos. Uma sub-divisão desses sistemas pode ser feita em função do compartilhamento de memória: − Sistemas com memória compartilhada: apresentam múltiplas CPUs que compartilham o mesmo espaço de endereçamento, como os sistemas SMP. − Sistemas com memória distribuída: neste caso, cada CPU possui sua própria memória. Redes de comunicação podem permitir trocas de dados, usando diferentes topologias e tecnologias de comunicação, normalmente transparentes para as aplicações. FITEM 2010 Hermes Senger Acoplamento dos Processadores Processor coupling Sistemas fortemente acoplados (tightly-coupled): Múltiplas CPUs conectadas no nível do barramento interno (bus) Acesso a memória compartilhada (SMP) ou hierarquia de memória com acesso não uniforme (NUMA). Sistemas multi-core são exemplo extremo de acoplamento. Sistemas fracamente acoplados (loosely-coupled): Clusters, tipicamente, compostos de nós simples ou duais, interligados por rede de comunicação rápida. Mais baratos para serem integrados (agrupados) e atualizados FITEM 2010 Hermes Senger SMP (Symmetric Multiprocessors) Processadores compartilham a mesma memória Fortíssimo acoplamento entre os processadores Excelente conectividade memória processador M P P P P Memória Compartilhada FITEM 2010 Hermes Senger SMP (Symmetric Multiprocessors) • Processadores executam uma única cópia do sistema operacional • Apresentam uma imagem única do sistema • Limitações em escalabilidade – raramente ultrapassam 16 processadores • São comuns no mercado: – máquinas bi e quad-processadas Intel – grandes servidores como os IBM pSeries FITEM 2010 Hermes Senger Hyper-Threading Hyper-Threading Technology – HTT: tecnologia Intel para a execução simultânea de tarefas na arquitetura Pentium 4, aprimorando o suporte de threading que surgiu nos processadores Xeon. Desempenho do processador é melhorado fazendo com que ele execute processamento útil quando estaria ocioso, como nas falhas de dados em cache (cache miss), branch misprediction, ou dependência de dados. Operação ocorre duplicando as partes específicas do processor Cada “processador lógico” possui seu próprio controlador de interrupção programável e um conjunto de registradores. Permanecem compartilhados outros recursos tais como, cache de memória, unidade de execução, unidade lógica e aritmética, unidade de ponto flutuante e barramentos http://www.intel.com/technology/platform-technology/hyper-threading/index.htm FITEM 2010 Hermes Senger Multi-Core Processadores multi-core combinam 2 ou mais processadores independentes em um mesmo Circuito Integrado Cada processador implementado possui seu próprio conjunto de recursos. Ex: memória cache, unidades de execução, unidades de ponto flutuante Sistema operacional “enxerga” cada um dos cores com um processador distinto, com seus próprios recursos de execução Paralelismo no nível de tarefas é facilitado http://software.intel.com/en-us/multi-core/ FITEM 2010 Hermes Senger Processadores atuais ● Intel Xeon 7500: – 8 cores e 16 threads, tecnologia de 45-nm ● Intel Core i7 – 6 cores e 12 threads, tecnologia de 32-nm ● Intel Atom (modelo N550) – 2 cores e 4 threads, tecnologia de 45-nm http://www.intel.com/products/processor/index.htm FITEM 2010 Hermes Senger Processadores atuais AMD Opteron 6000 ● – 12 e 8 cores – tecnologia 45-nm http://www.amd.com/us/products/Pages/processors.aspx FITEM 2010 Hermes Senger MPP MPP (Massivelly Parallel Processor): Possuem vários nós (processador + memória) Nós independentes, interconectados por redes dedicadas e muito rápidas Cada nó roda sua própria cópia do sistema operacional memória local processador M M M M P P P Escalonador P Sistema de Interconexão requisições FITEM 2010 Hermes Senger Clusters (aglomerados) Disponibilidade de estações de trabalho e PCs com alto desempenho e redes de comunicação rápidas possibilitaram a utilização de clusters como alternativa a supercomputadores e computadores paralelos Projetos: Berkeley NOW (network of workstations) project. NASA Beowulf project. Aspectos: Baixo custo Disponibilidade de software que pode ser adaptado FITEM 2010 Hermes Senger Redes de workstations (ou de PCs) NOWs (networks of workstations): São conjuntos de estações de trabalho ou PCs, ligados por uma rede local Em termos de arquitetura, são semelhantes aos MPPs: NÓ = PROCESSADOR + MEMÓRIA Diferenças entre NOWs e MPPs: Nós de um MPP tipicamente são conectados por redes mais rápidas que as de NOWs Dispersão geográfica é menor nos MPPs MPP permitem alocação de nós ou partições de forma dedicada para uma aplicação Nós de um NOW são compartilhados com outras aplicações e usuários FITEM 2010 Hermes Senger Interconexão Física Redes de interconexão rápidas são decisivas em sistemas paralelos e clusters. Escalabilidade de aplicações em clusters era limitada pela alta latência das redes Ethernet, predominante na época. Embora Gigabit Ethernet seja amplamente utilizado atualmente, com largura de banda teórica de 125 MB/s, sua aplicação restringe-se aos casos em que a latência dos acessos não é fundamental. Outras soluções especializadas e com alto desempenho: Infiniband Myrinet QsNet SCI (Scalable Coherent Interface) FITEM 2010 Hermes Senger Blue Gene/L FITEM 2010 Hermes Senger Grids M M M P P P Sistema de Interconexão Internet FITEM 2010 Hermes Senger Grids Compartilhamento, agregação e coordenação de recursos multi-institucionais e geograficamente distribuídos Ausência de controle centralizado Múltiplos domínios administrativos FITEM 2010 Hermes Senger Implementação de Grids FITEM 2010 Hermes Senger Cloud Computing O que é? Significa mover serviços, processamento e dados, de tal forma que sejam suportados por recursos computacionais internos ou externos, próprios ou contratados para tal finalidade, e cuja localização física é totalmente transparente a quem utiliza, com objetivo último de obter vantagens em termos de custos e de negócios. Outra definição: "A Cloud is a type of parallel and distributed system consisting of a collection of inter-connected and virtualized computers that are dynamically provisioned and presented as one or more unified computing resource(s) based on service-level agreements established through negotiation between the service provider and consumers.” (R. Buyya) FITEM 2010 Hermes Senger Cloud: Três áreas principais SaaS (sofware-as-a-service): Aplicações e serviços executando em rede WAN. Ex: Aplicações Google, Salesforce.com, WebEx PaaS (platform-as-a-service): Plataformas para desenvolvimento de novas aplicações. Ex: Coghead, Google App. Engine IaaS (infrastructure-as-a-service): fornecimento de servidores de processamento e armazenamento sob a forma de serviço, com transparência de localidade (usuário não quer saber onde fisicamente estão os recursos) Atualmente ~100s de provedores ao redor do mundo FITEM 2010 Hermes Senger www.top500.org FITEM 2010 Hermes Senger Parte I - Introdução Aplicações – Modelos – Problemas computacionais • Grand challenges ● Arquiteturas paralelas – breve revisão • SMPs • MPPs • Clusters • Grids • Clouds – Modelos de programação ● FITEM 2010 Desempenho: – speedup, eficiência – Lei de Amdhal ● Processos e Threads – criação – troca de contexto – escalonamento – modelo de memória compartilhadacon ceitos (revisão) ● Hermes Senger Modelos de programação Memória Compartilhada: • Threads: programas são decompostos em sequências paralelas (threads), que compartilham variáveis dentro do escopo do programa. – Pthreads • Programas escritos em linguagem de programação sequencial, incluindo diretivas de compilação para declarar variáveis compartilhadas e especificar paralelismos. – OpenMP: pode ser usado para paralelizar Fortran e C(++), inserindo diretivas no código. Tornou-se um padrão para sistemas com memória compartilhada. FITEM 2010 Hermes Senger Modelos de programação Memória Distribuída (clusters): • Computação paralela baseada na passagem de mensagem (Message Passing Parallel Programming) – Parallel Virtual Machine (PVM) – Message-Passing Interface (MPI): padrão Computação em Grade (Grid Computing): • Computação paralela baseada na execução de código remotamente − Ativação remota de código − Web/Grid Services • Implementação padronizada: Globus (OGSI) Computação em nuvem (Cloud Computing): • Computação distribuída através de recursos virtualizados, acessíveis via Internet na forma de serviços • Usuários não têm conhecimento da tecnologia que provê os serviços • Conceitos: Infrastructure as a service (IaaS), Platform as a service (PaaS) e Software as a service (SaaS) FITEM 2010 Hermes Senger Parte I - Introdução Aplicações – Modelos – Problemas computacionais • Grand challenges ● Arquiteturas paralelas – breve revisão • SMPs • MPPs • Clusters • Grids • Clouds – Modelos de programação ● FITEM 2010 Desempenho: – speedup, eficiência – Lei de Amdhal ● Processos e Threads – criação – troca de contexto – escalonamento – modelo de memória compartilhadacon ceitos (revisão) ● Hermes Senger Speedup Trata do potencial para aumento da velocidade computacional Idealmente, o tempo de execução de uma aplicação deve ser reduzido por um fator que é inversamente proporcional ao número de processadores utilizados. Barry Wilkinson and Michael Allen. Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers. Prentice Hall, 2005. Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Factor ts S p= tp Onde: ts = tempo de execução em um único processador com o melhor algoritmo sequencial tp = tempo de execução em multiprocessador • S(p) indica aumento de velocidadade com uso de p processadores multiprocessador • No ambiente monoprocessado, melhor algoritmo sequencial deve ser usado • Algoritmo para implementação paralela pode ser (e geralmente é) diferente Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Speedup também pode ser considerado em função dos passos computacionais: Número de passos computacionais usando 1 processador S p= Número de passos computacionais paralelos usando p processadores Complexidade computacional também pode ser estendida para computações paralelas. Sistemas Paralelos e Distribuídos H. Senger 2010 Eficiência Considerando o aumento de desempenho proporcionado com a paralelização, a Eficiência indica a proporção de ganho com o uso dos processadores. ts Tempo de Execução com 1 processador E= = Tempo de Execução usando multiprocessador * número de processadores t p∗p Eficiência máxima (100%) é obtida quando todos os processadores são utilizados o tempo todo e o speedup é p. Sistemas Operacionais 2 Hélio Crestana Guardia Speedup Máximo • Speedup Máximo é igual ao número de processadores (p), chamado de speedup linear • Speedup linear é obtido quando as computações podem ser divididas em processos de igual duração, cada um atribuído a um processador, não havendo sobrecarga (overhead) na solução paralela. ts S p = p ts p • Speedup superlinear, em que S(p)>p, pode ser obtido em circunstâncias especiais: – Disponibilidade de memória adicional no multiprocessador – Algoritmo não-determinístico Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Máximo: Amdahl’s law ts (1 - f)ts fts Seção Serial Seções Paralelizáveis (a) 1 processador (b) Múltiplos processadores P processadores tp Sistemas Paralelos e Distribuídos (1 - f)ts /p H. Senger 2010 Speedup Máximo Speedup (Speedup factor) é dado por: S p= ts ts f t s1− f p p = 1 p−1 f Equação é conhecida como Amdahl’s law (Lei de Amdahl) 1 S p≤ 1− f f p Assim, speedup é limitado pela fração sequencial. S p = 1 f p ∞ Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Máximo Mesmo com número ilimitado de processadores, speedup máximo é limitado a 1/f. Exemplo Com apenas 5% do código sendo serial, speedup máximo é 20, independente do número de processadores. Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Máximo: Exemplo Algoritmo de classificação de dados PART (f = 0.019) Fonte: Senger, H., Hruschka, E., Silva, F.A.B., Sato, L.M., Bianchini, C., Jerosch, B. Exploiting idle cycles to execute data mining applications on clusters of PCs. Journal of Systems and Software, v. 80, p. 778-790, 2007. Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Máximo: Exemplo Algoritmo de classificação de dados J4.8 (f = 0.014) Fonte: Senger, H., Hruschka, E., Silva, F.A.B., Sato, L.M., Bianchini, C., Jerosch, B. Exploiting idle cycles to execute data mining applications on clusters of PCs. Journal of Systems and Software, v. 80, p. 778-790, 2007. Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup em relação ao Número de Processadores f = 0% Speedup factor, S(p) 20 16 12 f = 5% 8 f = 10% f = 20% 4 4 8 12 16 20 Número de processadores: p Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Superlinear: Efeito cache Exemplo: Programa que resolve um problema de tamanho W em um processador com cache de 64 KB, com cache hit de 80%. Supondo latência do cache = 2 ns e latência da memória DRAM = 100 ns, o tempo de acesso efetivo à memória (TEA): TEA = 0.8*2 + 0.2*100 = 21.6 ns Supondo que cada operação de cálculo em ponto flutuante faça um acesso à memória e que este seja o fator limitante de desempenho, esse programa efetuaria seus cálculos a uma taxa média de 1 / 21.6 ns = 46296296.3 ≈ 46.3 MFLOPS Sistemas Paralelos e Distribuídos H. Senger 2010 Speedup Superlinear: Efeito cache Agora, suponha que o mesmo programa seja executado em um sistema com 2 processadores onde cada um realiza metade do trabalho. Características: − − − 90% dos acessos são encontrados no cache (leva 2 ns) 8% dos acessos são feitos na DRAM (leva 100 ns) 2% dos acessos são feitos na DRAM remota (leva 400 ns) TEA = 0.9*2 + 0.08*100 + 0.02*400 = 17.8 ns Vejamos qual seria a taxa de execução de operações 1 / 17.8 ns = 56179775.28 ≈ 56.18 MFLOPS (por processador) 56.18 * 2 (processadores) = 112.36 MFLOPS Calculando o speedup: S = 112.36 / 46.3 = 2.43 Sistemas Paralelos e Distribuídos H. Senger 2010 Limites e tendências Limitações físicas dificultam criar computadores mais rápidos: Transmissão de dados: velocidade do computador depende da taxa de transmissão no hardware. Luz no vácuo: 30 cm/ns; transmissão em cobre: aprox. 70% da velocidade no vácuo. Aumento da velocidade implica diminuir distância entre elementos. Miniaturização: tecnologia de processadores tem permitido aumentar número de transistores em chip, mas há limitações sobre quão pequenos componentes podem ser. » Pentium III (250-nm a 130-nm); Pentium 4, 2003(130-nm a 90-nm); atualmente: 45-nm a 32-nm; próxima geração: 22-nm ? Economia: custo para desenvolver processador mais rápido é cada vez maior. Vantagens do paralelismo: Processadores comerciais oferecem desempenho cada vez melhor, incluindo múltiplos processadores no mesmo chip (multi-core) e suporte para execução simultânea de várias atividades (Hiper-Threading). Redes rápidas: tecnologias de rede oferecem interligação da ordem de Gbps em preços acessíveis para grupos de máquinas. Uso de N processadores comuns interligados é muito mais barato que 1 processador N vezes mais rápido com mesmo desempenho. FITEM 2010 Hermes Senger Parte I - Introdução Aplicações – Modelos – Problemas computacionais • Grand challenges ● Arquiteturas paralelas – breve revisão • SMPs • MPPs • Clusters • Grids • Clouds – Modelos de programação ● FITEM 2010 Desempenho: – speedup, eficiência – Lei de Amdhal ● Processos e Threads – criação – troca de contexto – escalonamento – modelo de memória compartilhadacon ceitos (revisão) ● Hermes Senger Processos Os computadores executam várias tarefas (programas, aplicações) ao mesmo tempo. ● ● Ex: ● ● ● ● ● Navegar na Internet Compilar um programa Enviar um arquivo para a impressora Reproduzir uma música Etc Processo ● ● ● ● ● Abstração Unidade de execução Processos transitam entre estados (ex: execução, bloqueado, etc). Operações: Criar, destruir, suspender, retomar, acordar, Mudam a prioridade, etc. ● FITEM 2010 Hermes Senger Definição de Processo ● Um programa em execução ● Um processo tem seu próprio espaço de endereço, que consiste em: ● Região de texto ● ● Região de dados ● ● Armazena o código que o processador executa. Armazena variáveis e memória alocada dinamicamente. Região de pilha ● Armazena instruções e variáveis locais para chamadas ativas ao procedimento. FITEM 2010 Hermes Senger Estruturas de Dados Internas FITEM 2010 Hermes Senger Operações de processo ● Um processo pode gerar um novo processo. ● ● ● O processo que criou a outro é chamado de processo-pai. O processo criado é chamado de processo-filho. Quando um processo-pai é desfeito, os sistemas operacionais em geral podem tomar dois tipos de atitude: ● ● Destruir todos os processos-filho desse processo-pai. Permitir que os processos-filho prossigam independentemente dos processos-pai. FITEM 2010 Hermes Senger Chaveamento de contexto FITEM 2010 Hermes Senger Comunicação interprocessos Muitos sistemas operacionais fornecem mecanismos para comunicações interprocessos (IPC). ● ● Os processos precisam se comunicar uns com os outros em ambientes de multiprogramação ou de rede. ● ● Ex: um navegador Web pode recuperar dados de um servidor remoto. É essencial para processos que precisam coordenar (sincronizar) atividades para alcançar uma meta comum. FITEM 2010 Hermes Senger Sinais São interrupções de software que notificam o processo de que um evento ocorreu. ● ● ● Não permitem que os processos troquem dados Processos podem capturar, ignorar ou mascarar um sinal. ● ● ● Um processo captura um sinal especificando uma rotina que o sistema operacional chama quando libera o sinal. Um processo ignora um sinal dependendo da ação-padrão do sistema operacional para tratá-lo. Um processo mascara um sinal instruindo o sistema operacional a não liberar sinais desse tipo até que o processo bloqueie a máscara do sinal. FITEM 2010 Hermes Senger Processos no Unix Todos os processos têm um conjunto de endereços de memória que é chamado de espaço de endereço virtual. ● O núcleo mantém o PCB de um processo em uma região protegida da memória. ● Em sistemas Unix, um PCB armazena: ● ● ● ● ● O conteúdo dos registradores dos processos. O identificador do processo (PID). O contador de programa. A pilha do sistema. Todos os processos são relacionados na tabela de processos. ● Processos interagem com o sistema operacional por meio de chamadas ao sistema (system calls). ● O Unix fornece vários mecanismos que habilitam os processos a trocar dados, como é o caso dos pipes. ● FITEM 2010 Hermes Senger Gerenciamento de processos fork( ): criação – cópia do pai (copy-on-write) pid_t fork(void); vfork( ): criação – pai espera fim ou exec( ) do filho pid_t vfork(void); system( ): executa comando do shell (/bin/bash -c) int system(const char *command); exec( ): carrega novo processo, sobrepondo atual int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char * const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); FITEM 2010 Hermes Senger Threads Várias linguagens modernas disponibilizaram primitivas de concorrência para o programador de aplicações. ● ● ● ● ● Ex.: Java, C#, Visual C++ .NET, Visual Basic .NET e Python O programador escreve as aplicações contêm threads de execução. Cada thread pode ser uma parte de um programa que pode executar concorrentemente com outros threads. Thread ● ● ● ● É às vezes chamado de processo leve (LWP). Existem threads de instrução ou threads de controle. Compartilham espaço de endereço e outras informações do processo Registradores, pilha, máscaras de sinal e outros dados são específicos a cada thread. Os threads devem ser gerenciados pelo sistema operacional ou pela aplicação de usuário. ● ● Exemplos: threads Win32, C-threads, Pthreads. FITEM 2010 Hermes Senger Thread vs. Processo FITEM 2010 Hermes Senger Motivação Atualmente threads são muito utilizados em diversas áreas ● Por que criar threads? ● ● Ao projeto de software ● ● Ao desempenho ● ● Maior simplicidade para exprimir tarefas inerentemente paralelas. Maior escalonamento para sistemas com múltiplos processadores. À cooperação ● O custo operacional do espaço de endereço compartilhado é menor que o da IPC. FITEM 2010 Hermes Senger Motivação na criação de threads Todo thread transita entre uma série de estados de thread distintos. ● Os threads e os processos têm muitas operações em comum (por exemplo, criar, sair, retomar e suspender). ● A criação de thread não requer que o sistema operacional inicialize recursos compartilhados entre os processos-pai e os respectivos threads. ● ● Isso reduz o esforço de criação e término de threads, em comparação à criação e ao término de processo. A troca de contexto também pode ser muito mais rápida (~ 200 vezes em alguns casos) ● FITEM 2010 Hermes Senger Estados de thread: ciclo de vida FITEM 2010 Hermes Senger Modelos de thread Três são os modelos de thread mais conhecidos: ● ● ● ● Threads de usuário Threads de núcleo Uma combinação de ambos FITEM 2010 Hermes Senger POSIX e Pthreads Os threads que usam a API de thread POSIX são chamados de Pthreads. ● ● ● A especificação POSIX determina que os registradores do processador, a pilha e a máscara de sinal sejam mantidos individualmente para cada thread. A especificação POSIX especifica como os sistemas operacionais devem emitir sinais a Pthreads, além de especificar diversos modos de cancelamento de thread. FITEM 2010 Hermes Senger Threads Linux O Linux aloca o mesmo tipo de descritor para processos e threads (tarefas). ● Para criar tarefas-filha, o Linux usa a chamada fork, baseada no Unix. ● Para habilitar os threads, o Linux oferece uma versão modificada, denominada clone. ● ● Clone aceita argumentos que determinam os recursos que devem ser compartilhados com a tarefa-filha. FITEM 2010 Hermes Senger Threads do Windows XP ● Os threads do Windows XP podem criar fibras. ● A execução da fibra é escalonada pelo thread que a cria, e não pelo escalonador. O Windows XP fornece a cada processo um reservatório de threads que consiste em inúmeros threads operários, que são threads de núcleo que executam funções especificadas pelos threads de usuário. ● FITEM 2010 Hermes Senger Threads do Windows XP ● Threads ● ● ● São na verdade a unidade de execução despachada por um processador. Executam uma parte do código do processo, no contexto do processo, usando os recursos do processo. O contexto de execução contém: ● ● ● Pilha de tempo de execução Estado dos registradores da máquina Diversos atributos FITEM 2010 Hermes Senger Threads Java A linguagem Java permite que o programador de aplicações crie threads portáveis para várias plataformas de computação. ● Threads ● ● ● Criados pela classe Thread. Executam códigos especificados em um método run de um objeto Runnable. A linguagem Java suporta operações como nomeação, ativação e união de threads. ● FITEM 2010 Hermes Senger