Você está na página 1de 73

IX FITEM (2010) Frum de Informtica e Tecnologia da UEM

Programao Paralela: Sistemas Multicore


Prof. Hermes Senger
hermes@dc.ufscar.br http://www.dc.ufscar.br/~hermes/FITEM2010/

FITEM 2010

Hermes Senger

Parte I - Introduo
Aplicaes Modelos Problemas computacionais Grand challenges Arquiteturas paralelas breve reviso SMPs MPPs Clusters Grids Clouds Modelos de programao

Desempenho: speedup, eficincia Lei de Amdhal Processos e Threads criao troca de contexto escalonamento modelo de memria compartilhadacon ceitos (reviso)

FITEM 2010

Hermes Senger

Modelos de aplicao
Software multithread gerencia mltiplas 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 computao distribuda: sistemas de arquivo em um sistema em rede, bancos de dados para sistemas bancrios, empresa area, servidores web na Internet, sistemas tolerantes a falhas que permanecem executando mesmo com a ocorrncia de falha. Exemplos de computao paralela incluem: computao cientfica que modela e simula fenmenos como o clima global, a evoluo do sistema solar ou o efeito de novas drogas; processamento grfico e de imagens, incluindo a criao de efeitos especiais em filmes; grandes problemas combinacionais ou de otimizao.

FITEM 2010

Hermes Senger

Programao concorrente
Um programa concorrente contm dois ou mais processos que trabalham juntos para realizar uma tarefa. Cada processo um programa sequencial com um nica linha de execuo (single thread of control). Um programa concorrente tem mltiplas linhas de execuo (multiple thread of control). Os processos em um programa concorrente trabalham juntos, comunicando-se para trocas de informaes. A comunicao programada usando variveis compartilhadas ou por passagem de mensagens. Independente da forma de comunicao, processos tambm precisam estar sincronizados entre si. Existem dois tipos principais de sincronizao: excluso mtua e condies de sincronizao (condition synchronization).

FITEM 2010

Hermes Senger

Computao paralela
Demanda crescente por poder computacional: Desejo de resolver novos problemas Necessidade de resolver problemas computacionais j tratados: com melhor preciso de maneira mais rpida Limitao na capacidade de integrao de circuitos

FITEM 2010

Hermes Senger

Computao Paralela
Problemas computacionais complexos normalmente apresentam as seguintes caractersticas: Podem ser divididos em partes distintas que podem ser executadas simultaneamente Podem ter diversas instrues sendo executadas ao mesmo tempo So executados em menor tempo quando mltiplos recursos computacionais so utilizados

FITEM 2010

Hermes Senger

Problemas computacionais
Aplicaes atuais em muitos casos envolvem a manipulao de grandes volumes de dados, o que requer processamento extensivo. Exemplos:

Bancos de dados paralelos e data mining Explorao mineral Mquinas de busca na Web Servios baseados na Web Suporte para diagnsticos auxiliados por computador Gerenciamento de grandes empresas Computao grfica e realidade virtual Suporte para tecnologias multimdia Ambientes para trabalho cooperativo Simulaes de dinmica molecular Indexao 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 - Introduo
Aplicaes Modelos Problemas computacionais Grand challenges Arquiteturas paralelas breve reviso SMPs MPPs Clusters Grids Clouds Modelos de programao

Desempenho: speedup, eficincia Lei de Amdhal Processos e Threads conceitos (reviso)

FITEM 2010

Hermes Senger

Arquitetura de Von Neumann


http://commons.wikimedia.org/wiki/Image:Von_Neumann_architecture.png

Arquitetura de Von Neumann:


Programa = sequncia de instrues na memria Registrador (PC) indica palavra de memria que contm prxima instruo a executar Decodificao e execuo das instrues feitas a partir de um registrador interno da CPU (IR)

Operao: Loop { IR = Mem[PC] PC = PC +1 Executa IR Testa e trata INT }


FITEM 2010

# Busca instruo; uso do cache e mecanismos de prefetching, branch prediction, ... # Incrementa ponteiro de instrues. Incremento equivalente ao tamanho da palavra... # Decodifica e executa instruo. Lgica no nvel de micro-programa. # Verifica interrupo: assncrona (externa), trap, instruo (int)
Hermes Senger

www.top500.org

FITEM 2010

Hermes Senger

Tipos de Computadores Paralelos


Taxonomia de Flynn (*) Classificao de computadores de alto desempenho, baseada na forma de manipulao de instrues 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 instrues ou dados, como um PC ou um mainframe. Multiple instruction, single data stream (MISD): computador hipottico, em que mltiplos processadores atuariam sobre um nico fluxo de dados. Pode ser empregado em casos de paralelismo para redundncia.

FITEM 2010

Hermes Senger

Taxonomia de Flynn

Single instruction, multiple data streams (SIMD): computador que explora mltiplos fluxos de dados com um nico fluxo de instrues. Normalmente possui grande nmero de processadores, que executam a mesma operao de maneira coordenada (lock-step) sobre dados diferentes, como um array processor ou vectorprocessor. Uma variao dessa classificao inclui:

Single Program, multiple data streams (SPMD): mltiplos processadores autnomos executando simultaneamente o mesmo conjunto de instrues, de maneira independente, sobre dados distintos.

FITEM 2010

Hermes Senger

Taxonomia de Flynn

Multiple instruction, multiple data streams (MIMD): consistem de mltiplos processadores autnomos, que executam diferentes instrues sobre diferentes conjuntos de dados. Exemplos dessa arquitetura incluem os sistemas distribudos. Uma sub-diviso desses sistemas pode ser feita em funo do compartilhamento de memria:

Sistemas com memria compartilhada: apresentam mltiplas CPUs que compartilham o mesmo espao de endereamento, como os sistemas SMP. Sistemas com memria distribuda: neste caso, cada CPU possui sua prpria memria. Redes de comunicao podem permitir trocas de dados, usando diferentes topologias e tecnologias de comunicao, normalmente transparentes para as aplicaes.

FITEM 2010

Hermes Senger

Acoplamento dos Processadores


Processor coupling Sistemas fortemente acoplados (tightly-coupled):
Mltiplas CPUs conectadas no nvel do barramento interno (bus) Acesso a memria compartilhada (SMP) ou hierarquia de memria com acesso no uniforme (NUMA). Sistemas multi-core so exemplo extremo de acoplamento.

Sistemas fracamente acoplados (loosely-coupled):


Clusters, tipicamente, compostos de ns simples ou duais, interligados por rede de comunicao rpida. Mais baratos para serem integrados (agrupados) e atualizados

FITEM 2010

Hermes Senger

SMP (Symmetric Multiprocessors)


Processadores compartilham a mesma memria Fortssimo acoplamento entre os processadores Excelente conectividade

memria

processador

P Memria Compartilhada

FITEM 2010

Hermes Senger

SMP (Symmetric Multiprocessors)


Processadores executam uma nica cpia do sistema operacional Apresentam uma imagem nica do sistema Limitaes em escalabilidade
raramente ultrapassam 16 processadores

So comuns no mercado:
mquinas 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 execuo simultnea 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 dependncia de dados. Operao ocorre duplicando as partes especficas do processor
Cada processador lgico possui seu prprio controlador de interrupo programvel e um conjunto de registradores. Permanecem compartilhados outros recursos tais como, cache de memria, unidade de execuo, unidade lgica e aritmtica, 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 prprio conjunto de recursos.
Ex: memria cache, unidades de execuo, unidades de ponto flutuante

Sistema operacional enxerga cada um dos cores com um processador distinto, com seus prprios recursos de execuo Paralelismo no nvel de tarefas facilitado

http://software.intel.com/en-us/multi-core/

FITEM 2010

Hermes Senger

Processadores atuais

Intel Xeon 7500: Intel Core i7

8 cores e 16 threads, tecnologia de 45-nm 6 cores e 12 threads, tecnologia de 32-nm 2 cores e 4 threads, tecnologia de 45-nm
Hermes Senger

Intel Atom (modelo N550)


FITEM 2010

http://www.intel.com/products/processor/index.htm

Processadores atuais

AMD Opteron 6000

http://www.amd.com/us/products/Pages/processors.aspx
FITEM 2010 Hermes Senger

12 e 8 cores tecnologia 45-nm

MPP
MPP (Massivelly Parallel Processor):
Possuem vrios ns (processador + memria) Ns independentes, interconectados por redes dedicadas e muito rpidas Cada n roda sua prpria cpia do sistema operacional

memria local

Escalonador

P processador P

Sistema de Interconexo requisies

FITEM 2010

Hermes Senger

Clusters (aglomerados)
Disponibilidade de estaes de trabalho e PCs com alto desempenho e redes de comunicao rpidas possibilitaram a utilizao 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):
So conjuntos de estaes de trabalho ou PCs, ligados por uma rede local Em termos de arquitetura, so semelhantes aos MPPs:
N = PROCESSADOR + MEMRIA

Diferenas entre NOWs e MPPs:

Ns de um MPP tipicamente so conectados por redes mais rpidas que as de NOWs Disperso geogrfica menor nos MPPs MPP permitem alocao de ns ou parties de forma dedicada para uma aplicao
Ns de um NOW so compartilhados com outras aplicaes e usurios

FITEM 2010

Hermes Senger

Interconexo Fsica
Redes de interconexo rpidas so decisivas em sistemas paralelos e clusters. Escalabilidade de aplicaes em clusters era limitada pela alta latncia das redes Ethernet, predominante na poca. Embora Gigabit Ethernet seja amplamente utilizado atualmente, com largura de banda terica de 125 MB/s, sua aplicao restringe-se aos casos em que a latncia dos acessos no fundamental. Outras solues 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 P

M P

M P

Sistema de Interconexo

Internet

FITEM 2010

Hermes Senger

Grids
Compartilhamento, agregao e coordenao de recursos multi-institucionais e geograficamente distribudos Ausncia de controle centralizado Mltiplos domnios administrativos

FITEM 2010

Hermes Senger

Implementao de Grids

FITEM 2010

Hermes Senger

Cloud Computing
O que ?
Significa mover servios, processamento e dados, de tal forma que sejam suportados por recursos computacionais internos ou externos, prprios ou contratados para tal finalidade, e cuja localizao fsica totalmente transparente a quem utiliza, com objetivo ltimo de obter vantagens em termos de custos e de negcios. "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)

Outra definio:

FITEM 2010

Hermes Senger

Cloud: Trs reas principais


SaaS (sofware-as-a-service):
Aplicaes e servios executando em rede WAN. Ex: Aplicaes Google, Salesforce.com, WebEx Plataformas para desenvolvimento de novas aplicaes. Ex: Coghead, Google App. Engine fornecimento de servidores de processamento e armazenamento sob a forma de servio, com transparncia de localidade (usurio no quer saber onde fisicamente esto os recursos) Atualmente ~100s de provedores ao redor do mundo
Hermes Senger

PaaS (platform-as-a-service):

IaaS (infrastructure-as-a-service):

FITEM 2010

www.top500.org

FITEM 2010

Hermes Senger

Parte I - Introduo
Aplicaes Modelos Problemas computacionais Grand challenges Arquiteturas paralelas breve reviso SMPs MPPs Clusters Grids Clouds Modelos de programao

Desempenho: speedup, eficincia Lei de Amdhal Processos e Threads criao troca de contexto escalonamento modelo de memria compartilhadacon ceitos (reviso)

FITEM 2010

Hermes Senger

Modelos de programao
Memria Compartilhada: Threads: programas so decompostos em sequncias paralelas (threads), que compartilham variveis dentro do escopo do programa. Pthreads Programas escritos em linguagem de programao sequencial, incluindo diretivas de compilao para declarar variveis compartilhadas e especificar paralelismos. OpenMP: pode ser usado para paralelizar Fortran e C(++), inserindo diretivas no cdigo. Tornou-se um padro para sistemas com memria compartilhada.

FITEM 2010

Hermes Senger

Modelos de programao
Memria Distribuda (clusters):
Computao paralela baseada na passagem de mensagem (Message Passing Parallel Programming) Parallel Virtual Machine (PVM) Message-Passing Interface (MPI): padro

Computao em Grade (Grid Computing):


Computao paralela baseada na execuo de cdigo remotamente Ativao remota de cdigo Web/Grid Services Implementao padronizada: Globus (OGSI)

Computao em nuvem (Cloud Computing):


Computao distribuda atravs de recursos virtualizados, acessveis via Internet na forma de servios Usurios no tm conhecimento da tecnologia que prov os servios Conceitos: Infrastructure as a service (IaaS), Platform as a service (PaaS) e Software as a service (SaaS)
FITEM 2010 Hermes Senger

Parte I - Introduo
Aplicaes Modelos Problemas computacionais Grand challenges Arquiteturas paralelas breve reviso SMPs MPPs Clusters Grids Clouds Modelos de programao

Desempenho: speedup, eficincia Lei de Amdhal Processos e Threads criao troca de contexto escalonamento modelo de memria compartilhadacon ceitos (reviso)

FITEM 2010

Hermes Senger

Speedup

Trata do potencial para aumento da velocidade computacional Idealmente, o tempo de execuo de uma aplicao deve ser reduzido por um fator que inversamente proporcional ao nmero 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 Distribudos H. Senger 2010

Speedup Factor
ts S p= tp
Onde: ts = tempo de execuo em um nico processador com o melhor algoritmo sequencial tp = tempo de execuo 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 implementao paralela pode ser (e geralmente ) diferente

Sistemas Paralelos e Distribudos

H. Senger 2010

Speedup
Speedup tambm pode ser considerado em funo dos passos computacionais:

Nmero de passos computacionais usando 1 processador S p= Nmero de passos computacionais paralelos usando p processadores

Complexidade computacional tambm pode ser estendida para computaes paralelas.

Sistemas Paralelos e Distribudos

H. Senger 2010

Eficincia
Considerando o aumento de desempenho proporcionado com a paralelizao, a Eficincia indica a proporo de ganho com o uso dos processadores.

ts Tempo de Execuo com 1 processador E= = Tempo de Execuo usando multiprocessador * nmero de processadores t pp
Eficincia mxima (100%) obtida quando todos os processadores so utilizados o tempo todo e o speedup p.

Sistemas Operacionais 2

Hlio Crestana Guardia

Speedup Mximo
Speedup Mximo igual ao nmero de processadores (p), chamado de speedup linear Speedup linear obtido quando as computaes podem ser divididas em processos de igual durao, cada um atribudo a um processador, no havendo sobrecarga (overhead) na soluo paralela.

ts S p = p ts p
Speedup superlinear, em que S(p)>p, pode ser obtido em circunstncias especiais:
Disponibilidade de memria adicional no multiprocessador Algoritmo no-determinstico
Sistemas Paralelos e Distribudos H. Senger 2010

Speedup Mximo: Amdahls law


ts fts Seo Serial (a) 1 processador (b) Mltiplos processadores (1 - f)ts Sees Paralelizveis

P processadores

tp
Sistemas Paralelos e Distribudos

(1 - f)ts /p
H. Senger 2010

Speedup Mximo
Speedup (Speedup factor) dado por:

S p=

ts

ts f t s1 f p

p = 1 p1 f

Equao conhecida como Amdahls law (Lei de Amdahl)

1 S p 1 f f p
Assim, speedup limitado pela frao sequencial.

S p = 1 f p
Sistemas Paralelos e Distribudos H. Senger 2010

Speedup Mximo
Mesmo com nmero ilimitado de processadores, speedup mximo limitado a 1/f.

Exemplo
Com apenas 5% do cdigo sendo serial, speedup mximo 20, independente do nmero de processadores.

Sistemas Paralelos e Distribudos

H. Senger 2010

Speedup Mximo: Exemplo

Algoritmo de classificao 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 Distribudos H. Senger 2010

Speedup Mximo: Exemplo

Algoritmo de classificao 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 Distribudos H. Senger 2010

Speedup em relao ao Nmero de Processadores


20 f = 0%

Speedup factor, S(p)

16 12 f = 5% 8 4 f = 10% f = 20%

12

16

20

Nmero de processadores: p

Sistemas Paralelos e Distribudos

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 latncia do cache = 2 ns e latncia da memria DRAM = 100 ns, o tempo de acesso efetivo memria (TEA): TEA = 0.8*2 + 0.2*100 = 21.6 ns

Supondo que cada operao de clculo em ponto flutuante faa um acesso memria e que este seja o fator limitante de desempenho, esse programa efetuaria seus clculos a uma taxa mdia de 1 / 21.6 ns = 46296296.3 46.3 MFLOPS

Sistemas Paralelos e Distribudos

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

90% dos acessos so encontrados no cache (leva 2 ns) 8% dos acessos so feitos na DRAM (leva 100 ns) 2% dos acessos so 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 execuo de operaes 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 Distribudos

H. Senger 2010

Limites e tendncias
Limitaes fsicas dificultam criar computadores mais rpidos:
Transmisso de dados: velocidade do computador depende da taxa de transmisso no hardware. Luz no vcuo: 30 cm/ns; transmisso em cobre: aprox. 70% da velocidade no vcuo. Aumento da velocidade implica diminuir distncia entre elementos. Miniaturizao: tecnologia de processadores tem permitido aumentar nmero de transistores em chip, mas h limitaes sobre quo 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; prxima gerao: 22-nm ? Economia: custo para desenvolver processador mais rpido cada vez maior.

Vantagens do paralelismo:
Processadores comerciais oferecem desempenho cada vez melhor, incluindo mltiplos processadores no mesmo chip (multi-core) e suporte para execuo simultnea de vrias atividades (Hiper-Threading). Redes rpidas: tecnologias de rede oferecem interligao da ordem de Gbps em preos acessveis para grupos de mquinas.

Uso de N processadores comuns interligados muito mais barato que 1 processador N vezes mais rpido com mesmo desempenho.
FITEM 2010 Hermes Senger

Parte I - Introduo
Aplicaes Modelos Problemas computacionais Grand challenges Arquiteturas paralelas breve reviso SMPs MPPs Clusters Grids Clouds Modelos de programao

Desempenho: speedup, eficincia Lei de Amdhal Processos e Threads criao troca de contexto escalonamento modelo de memria compartilhadacon ceitos (reviso)

FITEM 2010

Hermes Senger

Processos
Os computadores executam vrias tarefas (programas, aplicaes) ao mesmo tempo.

Ex:

Navegar na Internet Compilar um programa Enviar um arquivo para a impressora Reproduzir uma msica Etc

Processo

Abstrao Unidade de execuo Processos transitam entre estados (ex: execuo, bloqueado, etc). Operaes: Criar, destruir, suspender, retomar, acordar, Mudam a prioridade, etc.

FITEM 2010

Hermes Senger

Definio de Processo

Um programa em execuo

Um processo tem seu prprio espao de endereo, que consiste em:

Regio de texto

Armazena o cdigo que o processador executa. Armazena variveis e memria alocada dinamicamente. Armazena instrues e variveis locais para chamadas ativas ao procedimento.

Regio de dados

Regio de pilha

FITEM 2010

Hermes Senger

Estruturas de Dados Internas

FITEM 2010

Hermes Senger

Operaes 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

Comunicao interprocessos
Muitos sistemas operacionais fornecem mecanismos para comunicaes interprocessos (IPC).

Os processos precisam se comunicar uns com os outros em ambientes de multiprogramao ou de rede.

Ex: um navegador Web pode recuperar dados de um servidor remoto.

essencial para processos que precisam coordenar (sincronizar) atividades para alcanar uma meta comum.

FITEM 2010

Hermes Senger

Sinais
So interrupes de software que notificam o processo de que um evento ocorreu.

No 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 ao-padro do sistema operacional para trat-lo. Um processo mascara um sinal instruindo o sistema operacional a no liberar sinais desse tipo at que o processo bloqueie a mscara do sinal.

FITEM 2010

Hermes Senger

Processos no Unix
Todos os processos tm um conjunto de endereos de memria que chamado de espao de endereo virtual. O ncleo mantm o PCB de um processo em uma regio protegida da memria. Em sistemas Unix, um PCB armazena:

O contedo dos registradores dos processos. O identificador do processo (PID). O contador de programa. A pilha do sistema.

Todos os processos so relacionados na tabela de processos. Processos interagem com o sistema operacional por meio de chamadas ao sistema (system calls). O Unix fornece vrios mecanismos que habilitam os processos a trocar dados, como o caso dos pipes.

FITEM 2010

Hermes Senger

Gerenciamento de processos
fork( ): criao cpia do pai (copy-on-write)
pid_t fork(void);

vfork( ): criao 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
Vrias linguagens modernas disponibilizaram primitivas de concorrncia para o programador de aplicaes.

Ex.: Java, C#, Visual C++ .NET, Visual Basic .NET e Python O programador escreve as aplicaes contm threads de execuo. Cada thread pode ser uma parte de um programa que pode executar concorrentemente com outros threads. s vezes chamado de processo leve (LWP). Existem threads de instruo ou threads de controle. Compartilham espao de endereo e outras informaes do processo Registradores, pilha, mscaras de sinal e outros dados so especficos a cada thread.

Thread

Os threads devem ser gerenciados pelo sistema operacional ou pela aplicao de usurio.

Exemplos: threads Win32, C-threads, Pthreads.

FITEM 2010

Hermes Senger

Thread vs. Processo

FITEM 2010

Hermes Senger

Motivao
Atualmente threads so muito utilizados em diversas reas Por que criar threads?

Ao projeto de software

Maior simplicidade para exprimir tarefas inerentemente paralelas. Maior escalonamento para sistemas com mltiplos processadores. O custo operacional do espao de endereo compartilhado menor que o da IPC.

Ao desempenho

cooperao

FITEM 2010

Hermes Senger

Motivao na criao de threads


Todo thread transita entre uma srie de estados de thread distintos. Os threads e os processos tm muitas operaes em comum (por exemplo, criar, sair, retomar e suspender). A criao de thread no requer que o sistema operacional inicialize recursos compartilhados entre os processos-pai e os respectivos threads.

Isso reduz o esforo de criao e trmino de threads, em comparao criao e ao trmino de processo.

A troca de contexto tambm pode ser muito mais rpida (~ 200 vezes em alguns casos)

FITEM 2010

Hermes Senger

Estados de thread: ciclo de vida

FITEM 2010

Hermes Senger

Modelos de thread

Trs so os modelos de thread mais conhecidos:


Threads de usurio Threads de ncleo Uma combinao de ambos

FITEM 2010

Hermes Senger

POSIX e Pthreads
Os threads que usam a API de thread POSIX so chamados de Pthreads.

A especificao POSIX determina que os registradores do processador, a pilha e a mscara de sinal sejam mantidos individualmente para cada thread. A especificao POSIX especifica como os sistemas operacionais devem emitir sinais a Pthreads, alm 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 verso 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 execuo da fibra escalonada pelo thread que a cria, e no pelo escalonador.

O Windows XP fornece a cada processo um reservatrio de threads que consiste em inmeros threads operrios, que so threads de ncleo que executam funes especificadas pelos threads de usurio.

FITEM 2010

Hermes Senger

Threads do Windows XP

Threads

So na verdade a unidade de execuo despachada por um processador. Executam uma parte do cdigo do processo, no contexto do processo, usando os recursos do processo. O contexto de execuo contm:

Pilha de tempo de execuo Estado dos registradores da mquina Diversos atributos

FITEM 2010

Hermes Senger

Threads Java
A linguagem Java permite que o programador de aplicaes crie threads portveis para vrias plataformas de computao. Threads

Criados pela classe Thread. Executam cdigos especificados em um mtodo run de um objeto Runnable.

A linguagem Java suporta operaes como nomeao, ativao e unio de threads.

FITEM 2010

Hermes Senger