Programação Paralela: Sistemas Multicore - DC

Propaganda
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 s1− 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
Download