capítulo 2 - instituto de informáticaeduardo/so/slides/cap-02-iproc+threads.pdf · normal...
TRANSCRIPT
1
1
Processos e Threads
Capítulo 2
2
Processos e threads
1. Processos2. Threads3. Comunicação inter processos (IPC)4. Problemas clássicos de IPC5. Escalonamento (Scheduling)
2
3
Processos: O modelo de processos
Multiprogramação de 4 programasModelo conceitual de 4 processos sequenciaisindependentesapenas um programa ativo em um dado instante
4
Criação de Processos
Principais eventos que causam a criação de processos
1. Inicialização do sistemaExecução de um sistema de criação de processos
2. Solicitação do usuário para a criação de um processo
3. Início de um processamento em lote
3
5
Término de processos
Condições que terminam um processo1. Normal (voluntária)2. Erro (voluntária)3. Erro Fatal (involuntária)4. Morto por outro processo (involuntária)
6
Hierarquias de ProcessosPai cria um processo filho, processos filhos podem criar seus próprios processosFormam uma hierarquia– UNIX denomina um “grupo de processos (process
group)Windows não tem o conceito de hierarquia de processos– todos os processos são criados iguais
4
7
Estados de um processos
8
Sete Estados de um Processo
5
9
Estados de um processos
Camada inferior de Sos estruturados à processos – administram interrupções e escalonamento
Acima desta camada estão os processos sequenciais
10
Administração de Processos e Recursos
Um SO mantém as seguints tabelas– Memoria– E/S – Arquivos– Processos
6
11
Implementação de Processos
Campos de uma entrada em uma tabela de processos
12
Imagem do processo (constituentes do processo)
Programa do Usuário (texto) Dados do Usuários Pilha(s)
– para chamadas de procedimentos e passagem de parâmetros
PCB - Process Control Block (contexto de execução)– Dados requeridos (atributos dos processos) pelo SO para
controlar o processo:Informação de identificaçãoInformação de estadoInformação de Controle
7
13
Implementação de Processos
Esquema do que a camada inferior do SO faz quando uma interrupção ocorre
14
Imagens de processos na memória virtual
8
15
Threads: O modelo de Treads
(a) 3 processos cada um com uma thread(b) 1 processo com 3 threads
16
Threads: O modelo de Treads
Itens compartilhados por todas as threads em um processos Itens privados de cada thread
9
17
Threads: O modelo de Treads
Cada thread tem sua própria pilha
18
Thread Usage (1)
Um processador de texto com 3 threads
10
19
Uso de Thread
Um Web server multithreaded
20
Threads: O modelo de Treads
(a) thread Dispatcher(b) thread trabalhadora
11
21
Threads: O modelo de Treads
Três formas de construir um servidor
22
Implementando Threads no espaço do usuário
Um pacote de threads no nível do usuário
12
23
Implementando Threads no Kernel
Um pacote de threads administrada pelo kernel
24
Implementações Híbridas
13
25
Ativações do Escalonador (Scheduler)
Objetivo – imitar a funcionalidade das threads do kernel– obter os ganhos de performance das threads do espaço do
usuárioEvita transições desnecessárias de user/kernelO Kernel atribui processadores virtuais para cada processo
– permite ao sistema de runtime alocar threads aos processadoresProblema:
Dependência fundamental no kernel (camada inferior) procedimentos “chamantes” no espaço do usuário (camadas
superiores)
26
Pop-Up Threads
Criação de uma nova thread quando uma mensagem chega
– (a) antes da chegada da mensagem– (b) depois da chegada da mensagem
14
27
Transformando um código Single-Threaded em Multithreaded
Conflitos entre as threads em relação ao uso de uma variável global
28
Transformando um código Single-Threaded em Multithreaded
Threads podem ter variáveis globais privadas
15
29
comunicação entre processos Condições de corrida
Dois processos querem ter acesso à memória compartilhada ao mesmos tempo
30
Regiões críticasQuatro condições para proporcionar exclusão mútua 1. Dois Processos NÃO podem estar simultaneamente
nas suas regiões críticas 2. Nenhuma suposição pode ser feita em relação à
velocidade e número de CPUs3. Nenhum processo fora de sua região crítica pode bloquear
outro processo4. Nenhum processo deve esperar para sempre para entra em
sua região crítica
16
31
Regiões Críticas
Exclusão Mútua Usando Regiões Críticas
32
Esclusão Mútua com Espera Ocupada
17
33
Esclusão Mútua com Espera Ocupada
Solução de Peterson
34
Esclusão Mútua com Espera Ocupada
Uso da instrução TSL
18
35
Sleep and Wakeup
Produtor Consumidor com uma condição de Corrida Fatal
36
Semáforos
Produtor-Consumidor usando Semáforos
19
37
Mutexes
Implementação de mutex_lock e mutex_unlock
38
Monitores
20
39
MonitorProcessos em espera ficamna fila de entrada ou emuma fila de condiçãoUm processo se coloca emuma fila de condição pelachamada cwait(cn)csignal(cn) traz um processo da fila de condiçãocnConsequentementecsignal(cn) bloqueia o processo e o coloca na filaurgente (a menso quecsignal seja a últimaoperação do monitor)
40
Monitores
Produtor Consumidor com monitores– apenas um procedimento do monitor ativo por vez– buffer tem N entradas
21
41
Monitores: Produtor-Consumidor usando Java
42 l Produtor-Consumidor usando Java
22
43
Passagem de Messagens
Produtor Consumidor com N mensagens
44
Barreiras
Uso de uma barreira– processos se aproximando de uma barreira– todos os processos exceto um bloqueados em uma barreira– último processo chega, todos podem passar
23
45
Filósofos Jantando
46
Filósofos Jantando: uma não solução
24
47 Solução para o problema do jantar dos filósofos (parte 1)
48 Solução para o problema do jantar dos filósofos (parte 2)
25
49 Uma solução para o problema dos leitores e escritores
50
O problema do Barbeiro Dorminhoco
26
51 Solução para O problema do Barbeiro Dorminhoco
52
Escalonamento: Introdução
Rajadas de uso de CPU alternam-se com períodos de espera por entrada e saída
– um processo limitado por CPU– um processo limitado por E/S
27
53Objetivos dos Algoritmos de Escalonamento
54
Escalonamento com 1 processador
28
55
Escalonamento de CPU
Concentramos no problema de escalar o uso de um único processador entre todos os processos existentes no sistemaObjetivo é atingir:
– Alta utilização do processador– Alto throughput
número de processos completados por unidade de tempo– baixo tempo de resposta
tempo entre a submissão de uma solicitação e o início da resposta
56
Classificação das Atividades do Escalonador
Longo prazo: qual processo admitirMédio prazo: qual processo será swap in ou outCurto prazo: qual processo pronto será executado a seguir
29
57
Diagrama de fila para escalonamento
58
Escalonamento a longo prazo
Determina quais programas são admitidos no sistema para processamentoControla o grau de multiprocessamentoSe mais processos são admitidos:
Menos provável que todos processos estejam bloqueados Melhor uso da COUCada processo tem uma fração menor da CPU
O escalonador de longo prazo pode tentar manter uma mistura de processos limitados por CPU e por E/S
30
59
Escalonamento de médio prazo
Decisões de swap são baseadas na necessidade de administrar multiprogramaçãoFeita por software de administração de memória
60
Escalonamento de curto prazo
Determina qual processo será executado a seguir. (também chamada de escalonamento de CPU) É o assunto deste itemO escalonador de curto prazo é chamado de dispatcherÉ invocado quando ocorre um evento que pode levar àescolha de outro processo para execução :
– Interrupção do clock– Interrupção de I/O– Chamadas do sistema operacional e traps– Sinais (signal)
31
61
Critérios de escalonamento a longo prazo
Orientados ao usuário – Tempo de resposta: Tempo entre a submissão de
uma solicitação ao início da resposta– Tempo de Turnaround: Tempo entre a submissão
de uma solicitação ao seu término Orientados ao sistema– Utilização do processador– Justiça– throughput
62
Prioridades
Implementadas por filas de “Pronto” múltiplas para representar cada nível de prioridade O Escalonador sempre escolhe um processo de maior prioridade sobre um de menor prioridadeProcessos de menor prioridade podem “passar fome”Permite que um processo mude sua prioridade baseado na sua idade ou história de execução
32
63
Caracterização de políticas de escalonamento
A função de seleção: determina qual processo na fila de pronto será selecionado para a próxima execução O modo de decisão: especifica o instante no tempo no qual a função de seleção é utilizada – Não preemptivo
Uma vez que um processo esteja executando, ele continuaráaté que termine ou bloqueie (a si próprio) para IO
– PreemptivoProcesso em execução pode ser interrompido e movido para o estado Pronto pelo SO Permite melhor serviço pois nenhum processo pode monopolizar o processador por muito tempo
64
O ciclo CPU-I/O
Observamos que os processos requerem o uso do processador e I/O de uma maneira repetitiva Cada ciclo consiste de uma rajada de CPU (burst) (freqüentemente de 5 ms) seguido por uma rajada de I/O (normalmente mais longa) Um processo termina em uma rajada de CPUProcessos limitados por CPU têm rajadas de CPU mais longas que processos limitados por I/O
33
65
Exemplos de execução para discutir políticas de escalonamento
ProcessArrivalTime
ServiceTime
1
2
3
4
5
0
2
4
6
8
3
6
4
5
2
•Tempo de Serviço = tempo total de processadorrequerido em um ciclo (CPU-I/O)
•Jobs com tempo de serviço longo são limitados por CPUe são ditos “tarefas longas” (“long jobs”)
66
Primeiro a chegar primeiro a ser servido (First Come First Served (FCFS))
Função de seleção: o processo que está esperando a mais tempo na fila de Pronto (daí, FCFS)Modo de decisão: não preemptivo
– um processo executa até que se bloqueie
34
67
Desvantagens do FCFS
Um processo que não faça I/O irá monopolizar o processador Favorece processos limitados por CPU – processos limitado por I/O tem que esperar até que os
limitados por CPU terminem – Podem ter que esperar até mesmo quando o seu I/O foi
completado (mal uso de dispositivos) – pode-se manter os dispositivos de I/O mais ocupados
dando mais prioridade aos processos limitados por I/O
68
Função de seleção : o processo que está esperando a mais tempo na fila de ProntoModo de decisão preemptivo– um processo executa até que sua fatia de tempo expire
(quantum, tipicamente entre 10 e 100 ms)– então, uma interrupção de relógio (clock) ocorre e o processo
em execução é colocado na fila de pronto
Round-Robin
35
69
Quantum de tempo para Round Robin
Deve ser substancialmente maior que o tempo requerido para administrar a interrupção de relógio e escalonamento deve ser maior que a interação típica (mas não muito maior para evitar penalizar processos limitados por I/O)
70
Round Robin: críticaFavorece processos limitados por CPU
– Um processo limitado por I/O usa a CPU por um tempo menor que seu quantum e então é bloqueado esperando por I/O
– Um processo limitado por CPU executa por todo seu quantum e é colocado de volta na fila de pronto (consequentemente fica na frente dos processos bloqueados)
Uma solução: Round Robin virtual– Quando um I/O é completado, o processo bloqueado é
colocado em uma fila auxiliar que tem preferência sobre a fila de Pronto principal
– Uma processo escalado a partir da fila auxiliar não roda mais que o quantum básico menos o tempo gasto rodando desde que foi selecionado da fila Pronto
36
71
Fila para Round Robin Virtual
72
Menor Processo Próximo (Shortest Process Next (SPN) ou Shortest Job First)
Função de seleção: o processo com a menor rajada de CPU esperada Modo de Decisão: não preemptivoprocessos limitados por I/O serão selecionados primeiro Sempre produz tempo de resposta médio mínimo
37
73
Menor Processo Próximo
– Turnaround: 8, 12, 16 e 20 Média: 14– Turnaround: 4, 8, 12 e 10 Média: 11
Geral: (4a+3b+2c+d)/4 (a,b,c,d término do proc)Seria bom se fosse usado para processos interativos tambémPrecisamos estimar o tempo de processamento requerido para cada processo (rajada de CPU)aT0 + (1-a)T1, a escolhido
A B DC8 4 4 4
B C AD4 4 4 8
74
Estimando a rajada de CPU requerida
Seja T[i] o tempo de execução para a i-ésima instância deste processo: a duração real da i-ésima rajada deste processo Seja S[i] o valor predito para a i-ésima rajada de CPU deste processo. A escolha mais simples é:
– S[n+1] = (1/n) Σ_{i=1 até n} T[i]Para evitar recalcular a soma inteira, podemos rescrever como:
– S[n+1] = (1/n) T[n] + ((n-1)/n) S[n]Porém, esta combinação dá peso igual a cada instânciaNo entanto, instâncias mais recentes são mais prováveis de refletir comportamento futuro
38
75
Estimando a rajada de CPU requerida
Uma técnica comum para isto é usar média exponencial– S[n+1] = α T[n] + (1-α) S[n] ; 0 < α < 1– Mais peso é colocado em instâncias recentes sempre que α
> 1/nExpandindo esta equação vemos que os pesos de instâncias passadas decrescem exponencialmente
– S[n+1] = αT[n] + (1-α)αT[n-1] + ... (1-α){i}αT[n-i] + ... + (1-α){n} S[1]– o valor predito da primeira instância S[1] não é calculado;
normalmente é definido como 0 (zero) para dar prioridade a novos processos
76
Coeficientes Decrescentes Exponencialmente
39
77
Coeficientes Decrescentes Exponencialmente
Aqui S[1] = 0 para dar alta prioridade a novos processosMédia exponencial acompanha mudanças no comportamento de processos muito mais rapidamente que médias simples
78
Menor Processo Próximo : crítica
Possibilidade de “fome” para processos mais longos caso haja um fluxo contínuo de processos curso Falta de preempção não é adequado em um ambiente de tempo compartilhado – Processos limitados por CPU obtém menor prioridade
(como deveriam) mas um processo realizando I/O ainda pode monopolizar a CPU se for o primeiro a entrar no sistema
– Implicitamente incorpora prioridades: processos mais curtos são prioritários
40
79
Escalonamento com Filas Múltiplas (ou multi-nível) com feedback
Escalonamento Preemptivo com prioridades dinâmicasDiversas filas “Pronto” com prioridades decrescentes:
– P(RQ0) > P(RQ1) > ... > P(RQn)Novos processos são colocados em RQ0 Quando atingem o quantum de tempo são colocados em RQ1, se atingem novamente, são colocados em RQ2 ... Atéatingirem RQnProcessos limitados por I/O permanecem em filas de alta prioridade. Processos limitados por CPU irão cairO escalonador escolhe um processo em RQi apenas se RQi-1 até RQ0 estão vaziasConsequentemente, processos longos podem passar fome
80
Escalonamento em Filas Múltiplas com feedback
FCFS é usado em cada fila exceto na de menor prioridade onde Round Robin é usado
41
81
Quantum para escalonamento com feedback
Com um quantum fixo, o tempo de turnaround para processos longos pode se estender de forma alarmante Para compensar, podemos aumentar o quantum de acordo com a profundidade da fila
– Ex: quantum de RQi = 2^{i-1}Processos mais longos ainda podem passar fome
– Solução possível: promover a prioridade do processo após certo tempo
82
Qual algoritmo é melhor?
Depende da situação!Carga do sistemaSuporte de hw para o dispatcherMétodo de avaliação
42
83
84
Escalonamento em sistemas em lote
Um exemplo de um escalonamento shortest job first
43
85
Escalonamento em sistemas em lote
Escalonamento em 3 Níveis
86
Escalonamento em sistemas Interativos
Round Robin– lista de processos prontos (runnable)– lista de processos prontos depois que B usa o seu quantum
44
87
Escalonamento em sistemas Interativos
Um escalonamento com quatro classes de prioridades
88
Escalonamento em sistemas de tempo real
Sistema de tempo real escalonávelDados– m eventos periódicos – evento i ocorre dentro do período Pi e requer Ci
segundosEntão, a carga só pode ser administrada se
1
1m
i
i i
CP=
≤∑
45
89
Política versus Mecanismo
Separa o que é permitido fazer de como éfeito– um processo saber quais de suas threads filhas
são importantes e precisam de prioridades
Algoritmo de escalonamento parametrizado – mecanismo no kernel
Parâmetros fornecidos por processos do usuários– política definida por processos dos usuários
90
Escalonamento de Threads
Possível escalonamento para threads no nível do usuário50-msec quantum de processo threads rodam em rajadas de 5 msec/CPU
46
91
Escalonamento de Threads
Possível escalonamento para threads de kernel50-msec quantum de processo threads rodam em rajadas de 5 msec/CPU