Escolar Documentos
Profissional Documentos
Cultura Documentos
Pseudo-paralelismo
Em cada instante, o CPU executa um único processo, comutando e dando
algum tempo de processamento a cada um, existe a ilusão de paralelismo.
© 2021 Mfer@ESTSetúbal 3
Processos e Threads
Hierarquia de processos
Linux
Quando um processo (parent) cria outro processo (child), estes ficam
associados.
Os processos child podem por sua vez criar novos processos.
Windows
Não existe o conceito de hierarquia de processos.
Quando um processo é criado, o parent recebe um token que pode ser usado
para controlar o processo child.
O token pode ser passado a outros processos, invalidando assim o conceito
de hierarquia de processos.
© 2021 Mfer@ESTSetúbal 5
Processos e Threads
Hierarquia de processos
Linux processo init
É criado no arranque do sistema e é o parent direto ou indireto de todos os
processos em execução.
B C
D
E F G
© 2021 Mfer@ESTSetúbal 6
Processos e Threads
© 2021 Mfer@ESTSetúbal 7
Processos e Threads
Destroyed
O scheduler
O processo encontra- coloca o processo O processo
se pronto para entrar em execução. está em
em execução. execução.
Create O processo
Ready Running termina ou é
Processo criado a terminado
partir de um (killed)
O processo foi preempted
fork() ou O tempo de execução do
clone(). processo terminou. O processo adormece
O evento ocorre e o
ou fica à espera de
processo é Waiting um evento externo
desbloqueado
O processo está
bloqueado.
© 2021 Mfer@ESTSetúbal 8
Processos e Threads
Threads
Os processos não partilham recursos.
A comunicação entre processos é complexa.
Vantagens
As aplicações podem ter várias atividades a decorrer em simultâneo.
Algumas destas atividades podem bloquear, ficando todas as outras
atividades também bloqueadas.
Cada uma das atividades de uma aplicação podem ser executadas em
diferentes threads .
Torna a programação da aplicação mais simples.
O bloqueio de uma das threads, não influencia as restantes.
© 2021 Mfer@ESTSetúbal 9
Processos e Threads
Threads
Caraterísticas
As threads são mais leves do que os processos:
Em alguns sistemas, a criação de uma thread é 10 a 100 vezes mais rápido
do que criar um processo.
Em aplicações de cálculo intensivo, a atribuição de tarefas por várias
threads só tem alguma vantagem em sistemas multi-core ou multi-CPU.
Existem aplicações que utilizam as dezenas ou centenas de cores das
cartas gráficas para reduzirem o tempo de processamento.
NVIDIA Tesla K50 → 2 x GK210 → 4 992 CUDA cores
NVIDIA Quadro P6000 → 3 840 CUDA cores (5 250 €).
Há aplicações que não podem ficar bloqueadas à espera de, por exemplo,
informação introduzida pelo utilizador.
Pode-se utilizar uma thread que faz a interação com o utilizador.
© 2021 Mfer@ESTSetúbal 10
Processos e Threads
Threads
Um processador de texto com 3 threads
© 2021 Mfer@ESTSetúbal 11
Processos e Threads
Threads
A passagem de informação entre as threads é fácil porque as threads
partilham recursos.
© 2021 Mfer@ESTSetúbal 12
Processos e Threads
© 2021 Mfer@ESTSetúbal 13
Processos e Threads
Processo A
O processo A O processo A Tempo
adquire o mutex liberta o mutex
Mutex A B
O processo B adquire o
O processo B tenta mutex e é desbloqueado O processo B
aquirir o mutex liberta o mutex
Processo B
B bloqueado Tempo
© 2021 Mfer@ESTSetúbal 14
Processos e Threads
Wait
A thread 1 está Wait
bloqueada na variável A
condicional A à espera A thread 2 está
de um signal. Signal B bloqueada na variável
condicional B à espera
de um signal.
Signal
A Variáveis
B condicionais
© 2021 Mfer@ESTSetúbal 15
Processos e Threads
A A A A
B B B B
Barreira
Barreira
Barreira
C C C C
D D D D
© 2021 Mfer@ESTSetúbal 17
Processos e Threads
Scheduling
O scheduder de processos decide quando um processo executa e
por quanto tempo.
O scheduler divide os recursos finitos do processador entre os
processos em execução no sistema.
O scheduler é responsável pela boa utilização do sistema e dá aos
utilizadores a ilusão que os processos são executados
simultaneamente.
Decisão fundamental de qualquer scheduler:
Decidir qual o próximo processo a entrar em execução de um conjunto de
processos em espera.
© 2021 Mfer@ESTSetúbal 18
Processos e Threads
© 2021 Mfer@ESTSetúbal 19
Processos e Threads
Scheduling
Processos limitados pelo I/O
Processos que passam a maior parte do tempo a executar e a esperar por
pedidos a dispositivos de entrada e/ou saída (I/O).
Estes processos encontram-se num estado de execução durante períodos de
tempo muito curtos.
A maior parte dos programas com interfaces gráficas, são limitadas pelo
I/O porque passam a maior parte do tempo à espera da interação com o
utilizador através do rato ou teclado.
© 2021 Mfer@ESTSetúbal 20
Processos e Threads
Scheduling
Processos limitados pelo I/O e pelo processamento
© 2021 Mfer@ESTSetúbal 21
Processos e Threads
Scheduling
Categorias
Lote (batch)
Processamento em lote (batch) é a execução de uma série de tarefas
num computador sem intervenção manual (não-interativo).
Não existem utilizadores à espera de uma resposta do sistema.
Consequentemente são aceitáveis algoritmos de scheduling com longos
períodos de processamento dedicados a cada tarefa.
Os tempos de comutação entre processos são assim reduzidos, o que
melhora o desempenho do sistema.
© 2021 Mfer@ESTSetúbal 22
Processos e Threads
Scheduling
Categorias
Interativo
Num ambiente com utilizadores a interagirem com o sistema, a
preempção é essencial de modo a evitar que um processo monopolize o
CPU.
Os servidores encontram-se nesta categoria porque normalmente servem
vários utilizadores remotos simultaneamente.
Tempo-real
O sistema garante uma resposta dentro de um intervalo de tempo rígido.
Em sistemas de tempo-real a preempção pode não ser a melhor solução.
Os processos sabem que não podem correr por longos períodos de
tempo e normalmente fazem o seu trabalho e bloqueiam rapidamente.
Nos sistemas de tempo-real só são executados os programas necessários
para o sistema desempenhar a tarefa.
© 2021 Mfer@ESTSetúbal 23
Processos e Threads
Scheduling
Exemplos de algoritmos, sistemas de lote (batch)
First-Come, First-Served
Os processos são executados pela ordem de chegada.
Existe uma única fila de processos prontos a entrar em execução.
Quando o processo em execução bloqueia, o 1º processo da lista é posto
em execução.
Quando um processo desbloqueia, é colocado no fim da lista.
Shortest Job First
Shortest Remaining Time Next
© 2021 Mfer@ESTSetúbal 24
Processos e Threads
Scheduling
Exemplos de algoritmos, sistemas interativos
Round-robin (RR)
Atribui frações de tempo (time-slots) para cada processo em partes
iguais e de forma circular, manipulando todos os processos sem
prioridades.
Time-slots
Curtos
Existem muitas comutações entre processos, o que diminui a
eficiência do CPU.
Longos
Má resposta em aplicações interativas.
20–50 ms é normalmente um compromisso razoável.
© 2021 Mfer@ESTSetúbal 25
Processos e Threads
Scheduling
Exemplos de algoritmos, sistemas interativos
Scheduling prioritário
A cada processo é atribuída uma prioridade.
É normal agrupar os processos em classes de prioridade.
Entre classes scheduling prioritário entre classes.
Dentro de cada classes scheduling round-robin.
Se houver processos prontos a executar numa fila de alta prioridade,
estes são executados em round-robin.
Os processos das listas de menor prioridade só são executados se não
existirem processos prontos a executar em listas de maior prioridade.
Problema
Os processos das listas de menor prioridade correm o risco de terem
pouco ou nenhum tempo de CPU.
© 2021 Mfer@ESTSetúbal 26
Processos e Threads
Scheduling
Linux
O kernel Linux implementa duas prioridades
Nice
Nº que pode variar entre -20 e 19, valor por omissão 0.
Valores mais altos correspondem a prioridades mais baixas.
Sistemas com valores mais baixos recebem mais tempo de CPU.
Prioridade de tempo-real
Nº que varia entre 0 e 99.
Valores mais altos correspondem a prioridades mais altas.
Todos os processos de tempo-real têm prioridades mais altas que os
processos normais.
© 2021 Mfer@ESTSetúbal 27
Processos e Threads
Scheduling
Linux
© 2021 Mfer@ESTSetúbal 28