Capítulo 4 Gerência de Processador - DCA

Propaganda
Capítulo 4
Gerência de
Processador
DCA-108 Sistemas Operacionais
Luiz Affonso Guedes
www.dca.ufrn.br/~affonso
[email protected]
Luiz Affonso Guedes
1
Conteúdo
Luiz Affonso Guedes
2
Objetivo
❒ Apresentar de forma sistemática os
❒ Caracterização de processos e
mecanismos de gerência do uso do
processador pelos processos.
threads
❒ Modelo de gerência de processador
❒ Escalonamento de Processos
❍ Escalonamento
não preemptivo
❍ Escalonamento
preemptivo
Luiz Affonso Guedes
3
Recordando
Luiz Affonso Guedes
4
Recordando
❒ Cenário Atual
❍ Execução concorrente de CPUs e devices
competindo por recursos.
Os 4 componentes de sistema computacional
Nosso objetivo
de estudo
Luiz Affonso Guedes
5
Luiz Affonso Guedes
6
1
Recordando
Recordando
Objetivos de sistema operacional
❒ SO eficientes utilizam
multiprogramação!
❒ Executar programas de forma conveniente
para o usuário.
❒ Gerenciar os recursos de software e
hardware como um todo.
❒ Utilizar os recursos de hardware de forma
eficiente e segura.
Luiz Affonso Guedes
7
Tipos de Processos
Luiz Affonso Guedes
8
Questão Básica
❒
Como há mais processos que processadores, como
intercalar o uso dos processadores entre os diversos
processos?
❒ CPU Bound
❒ I/O Bound
Luiz Affonso Guedes
9
Questão Básica
❒
Luiz Affonso Guedes
10
Luiz Affonso Guedes
12
Estados de um Processo
Necessidade de mudança de contexto entre
processos
Luiz Affonso Guedes
❒
11
Modelo de máquina de estados
2
Mecanismo de Escalonamento
de Processos
Estados de um Processo
❒
Quem controla a
execução dos
processos?
❍
Luiz Affonso Guedes
ESCALONADOR
13
Luiz Affonso Guedes
Escalonamento
Estrutura do Escalonamento
❒ O escalonador é a entidade do sistema
❒ Escalonador
❍ Executa a política de seleção de processos e
divisão de tempo de uso da CPU.
operacional responsável por selecionar um
processo apto para executar no
processador.
❒ Dispatcher
❍ Efetuar a troca de contexto entre processos na
CPU.
Algoritmo que determinar qual processo irá
ocupar a CPU.
❍ Esse algoritmo deve seguir uma política justa.
❍
Luiz Affonso Guedes
15
Objetivo do Escalonador
❒
❒
Minimizar o turnaround
❒
Minimizar o tempo de espera
❒
Minimizar o tempo de resposta
❍
❍
❍
16
Luiz Affonso Guedes
18
❒ Batch
❒ Interativos
❍ Tempo de resposta
Número de processos executados por unidade de tempo
❒
Luiz Affonso Guedes
Tipos de Escalonadores
Maximizar o uso do processador
Maximizar o throughput
❍
14
❒ De Tempo-real
❍ Garantir deadlines
Tempo total para executar um determinado processo
Tempo que um processo permanece na fila de pronto
Tempo transcorrido entre sua requisição e a sua
realização
Luiz Affonso Guedes
17
3
Características dos Escalonadores
Níveis de Escalonamento
❒ Não-Preemptivos
❍ Término do processo
❍ I/O, Sincronização ou Erro
❍ Liberação voluntária da CPU
❒ Curto Prazo
❒ Médio Prazo
❒ Longo Prazo
❒ Preemptivos (além das anteriores)
❍ Término do processo
❍ Interrupção de relógio (slice time)
❍ Interrupção devido à existência de outro
processo apto de maior Prioridade
Luiz Affonso Guedes
19
Luiz Affonso Guedes
Escalonamento Longo Prazo
Escalonador Médio Prazo
❒ Executado quando um novo processo é
❒ Associado à gerência de memória
❍ Participa do mecanismo de swapping
criado
❒ Determina quando um processo novo passa a
ser considerado no sistema
❍
20
❒ Suporte adicional à multiprogramação
❍ Grau de multiprogramação efetiva ( diferença
entre aptos dos aptos-suspensos)
Controle de admissão
❒ Controla o grau de multiprogramação
❍ Quanto maior for o número de processos ativos,
menor será a percentagem de uso do
processador por processo.
Luiz Affonso Guedes
21
Escalonador de Curto Prazo
Luiz Affonso Guedes
22
Diagrama de Escalonamento
❒ Mais importante
❒ Determina qual processo apto deverá
utilizar o processador
❒ Executado sempre que ocorre eventos
importantes
Interrupção de relógio
Interrupção de I/O
❍ Chamadas de sistemas (System Calls)
❍ Sinais (interrupção de software)
❍
❍
Luiz Affonso Guedes
23
Luiz Affonso Guedes
24
4
Parâmetros de Escalonamento
Os Três Níveis de Escalonamento
Processo A
ta
ti
tf
tl
ta Å tempo de chegada do processo
tf - ti = tempo de execução do processo
❒ ti – ta = tempo de espera
❒ tf – ta Å turnaround
❒ td = tl - ta Å deadline do processo
❒
❒
Luiz Affonso Guedes
25
Principais Algoritmos de
Escalonamento
❒ Vantagem: implementação simples
❍ Há uma única fila
❍ O processo que fica apto é colocado no fim da
fila.
❍ O processo que está no inicio da fila será o
próximo a ser executado.
❍ Processo executa até que:
❒ Algoritmos Preempitivos
❍ SJF Preemptivo
❍ Round Robin (Circular)
❍ Baseado em Prioridades Estáticas e Prioridade
Dinâmicas
Luiz Affonso Guedes
• Termine a sua execução;
• Libere espontaneamente o processador;
• Realize uma chama de sistema (bloqueio).
❒ Desvantagem: prejudica os processos I/O
Bound
27
Algoritmo FIFO – Exemplo 1
Luiz Affonso Guedes
Tempo de Execução
❒ Suponha, agora, que os processos cheguem na seguinte
24
3
3
Suponha que os processos cheguem na seguinte ordem: P1,
P2 e P3.
ordem: P2 , P3 , P1
❒ Então, seus escalonamentos serão:
P2
Então, seus escalonamentos serão os seguintes:
P1
0
❍
❍
P2
24
0
P3
27
P3
3
❒ Tempos de espera:
P1
6
30
P1 = 6; P2 = 0; P3 = 3 u.t.
❒ Tempo médio de espera:
30
(6 + 0 + 3)/3 = 3 u.t.
❒ Compare com o resultado anterior.
Tempos de espera: P1 = 0; P2 = 24; P3 = 27 u.t.
Tempo médio de espera: (0 + 24 + 27)/3 = 17 u.t.
Luiz Affonso Guedes
28
Algoritmo FIFO – Exemplo 1
P1
P2
P3
❒
26
Algoritmo FIFO
❒ Algoritmos não preemptivos (cooperativos)
❍ First-In First-Out (FIFO) ou First-Come FirstServed (FCFS)
❍ Shortest Job First (SJF) ou Shortest Process
Next (SPN)
Processo
Luiz Affonso Guedes
❍
29
Qual o motivo dessa grande diferença?
Luiz Affonso Guedes
30
5
Algoritmo FIFO – Exemplo 2
SJF – Shortest Job First
❒
Os menores primeiros:
❍
Baseado no fato que o tempo médio de espera é mínimo
quando se executa primeiramente os processos de menor
ciclo de processador (I/O bound).
❒ Calcule o tempo médio na fila de espera
para:
❍
❍
Ordem: A,B,C,D
Existe uma ordem de execução melhor?
Luiz Affonso Guedes
31
SJF – Outro Exemplo
Processo
Tempo de Chegada
0.0
2.0
4.0
5.0
❒ SJF (não-preemptivo)
0
3
❒ É uma variante que permite a interrupção do
7
4
1
4
P1
P3
7
processo quando chega outro mais curto.
❍
Shortest-Remaining-Time-First (SRTF)
❒ SJF (preemptivo)
P1
P4
P2
8
32
SJF - Preemptivo
Tempo de Execução
P1
P2
P3
P4
Luiz Affonso Guedes
12
0
16
2
P3
4
P2
5
P1
P4
7
16
11
❒ Tempo médio de espera = (9 + 1 + 0 +2)/4 = 3
❒ Tempo médio de espera = (0 + 6 + 3 + 7)/4 = 4
Luiz Affonso Guedes
P2
33
SJF – Shortest Job First
Luiz Affonso Guedes
34
Estimativa de Tempo de Execução
❒ Pode ser feito utilizando os tempos de
❒ Esse é um algoritmo ótimo com relação ao
ciclos já passados e realizando uma média
exponencial (os valores mais recentes têm
mais influência)
tempo médio de espera.
❒ Favorece processos I/O bound
❒ Desvantagem
Como determinar o tempo do próximo ciclo de
CPU de cada Processo?
❍ Emprego de heurística:
❍
• A previsão do tempo do próximo ciclo de CPU é função
de seus tempos recentes.
❒ Pode ser empregados em processos batch
❍ Escalonador de longo prazo
Luiz Affonso Guedes
35
Luiz Affonso Guedes
36
6
Estimativa de Tempo de Execução
Estimativa de Tempo de Execução
❒ Idéia Básica
❒
α =0
❍
❍
❒
α =1
❍
❍
❒
τn+1 = τn
A história recente não é considerada
τn+1 = α tn
Somente o último ciclo de CPU é considerado
Expandindo-se a fórmula, tem-se:
τn+1 = α tn+(1 - α)α tn -1 + …
+(1 - α )j α tn -j + …
+(1 - α )n +1 τ0
❒
Tipicamente, utiliza-se α = 0,5.
❍
Luiz Affonso Guedes
O último valor tem a metade do peso na estimativa.
37
Estimativa de Tempo de Execução Exemplo
Luiz Affonso Guedes
38
Escalonamento Round Robin (RR)
❒ Algoritmo preemptivo
❒ Similar ao FIFO, porém:
❍ Cada processo recebe um tempo máximo (time
slice, quantum) de CPU por vez.
• Usualmente, quantum (q) entre 10-100ms
❍
Fila de processos aptos é uma fila circular.
• Interrupção de relógio
Luiz Affonso Guedes
39
Escalonador Round Robin (RR)
❒
❍
Processo
Time de CPU
53
17
68
24
❒ Quantum = 20 ms:
❒ Calcule:
P1
P2
P3
P4
Há 4 processos aptos: A, B, C e D.
Tempo de CPU:
• A = 12 u.t, B = 8 u.t, C = 15 u.t e D = 5 u.t.
• TA + TB + TC + TD = 40 u.t.
❍
40
Escalonador Round Robin (RR)
Exemplo de uso:
❍
Luiz Affonso Guedes
O quantum é de 3 u.t
❍
❍
❍
❒
Tempo de espera na fila
Tempo de Resposta – tempo até começar a executar uma tarefa
Turnaround – tempo para concluir uma tarefa
Compare com o SJF
P1
0
Luiz Affonso Guedes
41
P2
20
37
P3
P4
57
P1
77
P3
P4
P1
P3
P3
97 117 121 134 154 162
Luiz Affonso Guedes
42
7
Round Robin – Influência do
Quantum
Round Robin – Influência do
Quantum
❒ Se há 10 processos, com quantum de 10ms
❒ E se o quantum for pequeno?
❍ Problema de overhead por mudança de contexto
para cada um. Qual é o tempo entre
execuções sucessivas de um dado
processo?
❒ Se o quantum for 20ms, o que ocorre com o
tempo de resposta médio?
❒ O que ocorre se o quantum for grande?
❒ Quantum grande:
• RR Æ FIFO
Luiz Affonso Guedes
43
Luiz Affonso Guedes
Round Robin – Influência do
Quantum
44
Escalonamento por Prioridade
O RR tende a prejudicar os
processos I/O bound, pois
estes provavelmente não
utilizam todo o seu quantum.
❒ Como minimizar este
problema?
❒
❒ Qual é a influência do
quantum no tempo de
resposta e no
turnaround?
❒ O que deve acontecer
os processos I/O
bound?
❍
❍
Luiz Affonso Guedes
Utilizar mecanismos de
prioridade para os processos
I/O bound.
Múltiplas filas de prioridade
45
Luiz Affonso Guedes
Escalonamento por Prioridade
Implementação de Prioridade
❒ Com preempção:
❍ Sempre que um processo de maior prioridade
que o processo atualmente em execução entra
no estado de apto, deve ocorrer uma preempção.
❒
46
Múltiplas filas
❍
❍
Cada fila tem uma prioridade
Cada fila pode ter sua própria política de prioridade
• RR, FIFO, SJF, etc.
❒ Sem preempção:
❍ Quando a CPU ficar desocupada, o primeiro
processo da fila de maior prioridade assume a
CPU.
Luiz Affonso Guedes
47
Luiz Affonso Guedes
48
8
Implementação de Prioridade –
Exemplo 1
❒
Fila de Apto é particionada em:
❍
❍
❒
❒ Prioridade Estática
❍ Ao ser criado, é atribuída uma prioridade ao
processo, que será a mesma ao longo de sua vida.
Fila de foreground (interactiva)
Fila de background (batch)
Cada fila tem o seu próprio algoritmo de
escalonamento:
❍
❍
❒
Definição de Prioridade
❒ Pode haver starvation em processos com baixa
foreground – RR
background – FCFS
prioridade
Deve haver escalonamento entre as filas
❍
❒ A prioridade estática pode prejudicar ou
Prioridade fixa (atender todos do processos foreground,
só depois atender os background).
beneficiar determinados processos.
• Pode haver starvation.
❍
❍
Time slice – a cada fila é atribuído um quantum de CPU
• 80% para foreground com RR
• 20% para background com FCFS
Luiz Affonso Guedes
49
Possível solução:
❍
Múltiplas Filas com Realimentação.
• Um processo pode ser movido entre as diversas filas, de
acordo com alguma política pré-estabelecida.
❍
Exemplo 1: a prioridade é função da fração do quantum
utilizado:
• Quando ele ganhar a CPU, se não utilizar todo o
quantum, ele será movido para a fila Q1.
• Quantum máximo = 100ms
• Processo A utilizou 2ms Æ nova prioridade = 1/0,02 = 50
• Processo B utilizou 50ms Æ nova prioridade = 1/0,50 = 2
❍
50
❒ Há três filas:
❍ Q0 – RR com quantum de 8ms
❍ Q1 – RR com quantum de 16ms
❍ Q2 – FCFS
❒ Escalonamento
❍ Um novo processo entra na fila Q0 , a qual é
servida por uma política FCFS.
Prioridade dinâmica
• A prioridade é ajustada de acordo com o estado de
execução do processo ou sistema.
❍
Luiz Affonso Guedes
Múltiplas Filas com Realimentação Exemplo
Definição de Prioridade
❒
Processo pode seu perfil de uso de CPU e I/O ao
longo de sua execução.
❍
Exemplo2: a prioridade é função do tempo de CPU já
utilizado
Luiz Affonso Guedes
Na fila Q1, ao entra em execução, se um
processo utilizou todo o seu quantum, ele é
premptado e colocado na fila Fila Q2.
51
Múltiplas Filas com Realimentação Exemplo
Luiz Affonso Guedes
52
Implementação de Prioridade –
Exemplo Pthread Posix
❒ Política de escalonamento múltiplas filas
tipo FIFO com prioridade.
Múltiplas filas de prioridade
Quando uma thread é execução é preemptada,
ela é inserido no início da sua fila.
❍ Quando uma thread bloqueada passa a apta, ela
é inserida no final da sua fila.
❍ Quando uma thread troca de prioridade, ela é
inserida no final de sua nova fila de prioridade.
❍ Quando uma thread em execução libera
espontaneamente a CPU para outra thread, ela é
inserida no final da sua fila.
❍
❍
Luiz Affonso Guedes
53
Luiz Affonso Guedes
54
9
Implementação de Prioridade –
Exemplo Unix
Implementação de Prioridade –
Exemplo Unix
Múltiplas filas com realimentação, como RR em
cada fila.
❍ As prioridades são re-avaliadas a cada segundo
em função de:
❍
•
•
•
•
❍
• 0-49 Æ Processos do núcleo
• 50-127 Æ Processos do usuário
Prioridade atual
Prioridade do usuário
Tempo recente de uso da CPU
Fator nice
❍
Prioridades são divididas em faixas de acordo
com o tipo do usuário.
❍ A troca dinâmica das prioridades respeita os
limites da faixa
55
Implementação de Prioridade –
Exemplo Unix
❍
Luiz Affonso Guedes
56
Implementação de Prioridade –
Exemplo Linux
Cálculo de prioridade do processo de usuário
❍
• Fator nice: valor variando entre 0 (mais prioritário) a
39 (menos prioritário)
– O default é 20.
• Uso recente da CPU
Há duas classes em função do tipo de
processos/threads
• Processos interativos e batch
• Processos de tempo real
❍
Políticas de escalonamento – Padrão Posix
• SCHED_FIFO: FIFO com prioridade estática
– Válido apenas para processos de tempo real
• SCHED_RR: Round-robin com prioridade estática
– Válido apenas para processos de tempo real
• SCHED_OTHER: Filas multinível com prioridade
dinâmcas (time-sharing)
– Processos interativos e batch
• Sendo,
– load_average é o número médio de processos aptos no
último segundo.
– PUSER é valor de base de prioridade para usuários (50)
Luiz Affonso Guedes
Ordem decrescente de prioridade
• Swapper
• Controle de dispositivos de entrada e saída orientados
a blocos
• Manipulação de arquivos
• Controle de dispositivos de entrada e saída orientados
a caractere
• Processos de usuário
❍
Luiz Affonso Guedes
Prioridade recebem valores entre 0 e 127
(menor o valor, maior a prioridade)
57
Luiz Affonso Guedes
Implementação de Prioridade –
Exemplo Linux
Implementação de Prioridade –
Exemplo Linux
❒ Processos de Tempo-real
❍ Tempo real-soft
❍ Prioridade fixa e definida pelo usuário ou por
outros com privilégios especiais.
❍ Têm maior prioridade do que os interativos e os
batchs
❍ Processos com maior prioridade sempre
executam primeiro
❒ Processos Time-sharing
❍ Prioridade dinâmica baseada em créditos
❍ O processo com maior crédito é o selecionado
❍ A cada interrupção de tempo, o processo em
execução perde um crédito.
❍ Ao zero o seu crédito, o processo é suspenso.
❍ Se na fila de aptos não houver processos com
créditos, é realizada uma distribuição de
créditos para todos os processos (em todas as
filas)
• SCHED_FIFO ou SCHED_RR
58
• Créditos = 0.5*créditos + prioridade
Luiz Affonso Guedes
59
Luiz Affonso Guedes
60
10
Implementação de Prioridade –
Exemplo Linux
Implementação de Prioridade –
Exemplo Windows 2000
❒ A unidade de escalonamento é a thread
❒ Escalonador preemptivo com 32 níveis de
prioridades
❍ Quanto maior o número, maior a prioridade.
❒ Há duas classes:
❍ Tempo-real (níveis 16-31) : filas com prioridade
estática (RR)
❍ Variável (níveis 0-15) : prioridade dinâmica, com
fila de realimentação (RR)
• Fator de base ≤ Prioridade ≤ 15
• Bloqueio por I/O aumenta a prioridade
• Esgotamento do quantum diminui a prioridade
Luiz Affonso Guedes
61
Luiz Affonso Guedes
62
11
Download