Escalonamento
description
Transcript of Escalonamento
1
Escalonamento
Prof. Alexandre Monteiro
Recife
Contatos
Prof. Guilherme Alexandre Monteiro Reinaldo
Apelido: Alexandre Cordel
E-mail/gtalk: [email protected]
Site: http://www.alexandrecordel.com.br/fbv
Celular: (81) 9801-1878
Introdução a Escalonamento
O escalonador é a entidade do SO responsável por selecionar um processo apto para executar no processador
O objetivo é dividir o tempo de CPU entre os processos aptos de forma justa
Típicos de sistemas multiprogramados: batch, time-sharing multiprogramado ou tempo real.
• Requisitos e restrições diferentes em relação a utilização da CPU
Duas partes• Escalonador: política de seleção• Dispatcher: efetua a troca de contexto
OBS: A parte do SO responsável por essa decisão é chamada escalonador, e o algoritmo usado para tal é chamado de algoritmo de escalonamento
Escalonamento de Processos Abstração Uma máquina para cada processo
Paralelismo realT11
T12
T0
mP1
mP2
mP3
T22mP3
Escalonamento de Processos
Realidade Compartilhamento do tempo
Pseudo-paralelismo (Concorrência)
T11T12
T0 T22 T0
1 121905141 t70
mP1
Troca de Contexto
Objetivos do Escalonamento
Maximizar a utilização do processador
Maximizar o nº de processos executados por unidade de tempo (throughput)
Minimizar o tempo total de execução de um processo (turnaround)
Minimizar o tempo de espera (na lista de processos aptos)
Minimizar o tempo de resposta decorrido entre a requisição e sua realização
Características de Escalonamento Justiça (fairness)
• Todos os processos têm chances iguais de uso dos processador
Eficiência• Taxa de ocupação do processador ao longo do tempo
Tempo de Resposta• Tempo entre a ocorrência de um evento e o término da
ação correspondente
Turnaround• “Tempo de resposta” para usuários em batch• Minimizar o tempo que usuários batch devem esperar
pelo resultado
Throughput• No. de “jobs” (processos) executados por unidade de
tempo
8
Resumindo Objetivos
Objetivos do algoritmo de escalonamento
9
EscalonamentoIntrodução ao Escalonamento (1)
• Surtos de uso da CPU alternam-se com períodos de espera por E/S
a) um processo orientado à CPU
b) um processo orientado à E/S
A importância da Interrupção Num sistema simples, CPU
deve esperar a execução do comando de E/S
• A cada chamada do comando write a CPU fica esperando o dispositivo executar o comando.
Ex: escrita em disco
SO
HD
A importância da Interrupção Um sistema com
interrupção não fica esperando
• A CPU solicita o write e fica executando outras tarefas até ser interrompida pelo disco.
Ex: escrita em disco
SO
HD
Conceitos Básicos
Operação Básica da CPU
Busca instruçãoe dados
Busca instruçãoe dados
Executa a instruçãoExecuta a instrução
Incrementa PC
Incrementa PC
1) Pára o processo atual2) Salta p/ rotina de interrupção1) Pára o processo atual2) Salta p/ rotina de interrupção
Sim
NãoInterrupção?
Cominterrupção
Interrupção do Programa
Salva resto da Informaçãodo contexto do processo
Processa rotina
de Interrupção
Restaura Informação doestado do processo em
execução antes da interrupção
Restaura PSW e PC do processo em execuçãoantes da interrupção
Dispositivo pede interrupção
Processador salva PSWe PC na pilha de controle
Processador carrega novo valor do PC
baseado na interrupção
Conceitos Básicos
Processo de Interrupção
Hardware
Software
* PSW = Program Status Word* PC = Program Counter
Situações típicas para execução do escalonador
Depende se o escalonador é preemptivo ou não- preemptivo, se considera prioridades ou não:
Sempre que a CPU estiver livre e houver um processo apto para executar
Criação e término de processos
Um processo de mais alta prioridade ficar pronto para executar
Interrupção de tempo• Processo executou por um período de tempo máximo permitido
Interrupção de E/S
Interrupção de Falta de Página em Memória• Endereço acessado não está carrego na memória (memória virtual)
Interrupção por erro
Chaveamento de Contexto (Dispatcher)
Níveis de escalonamento
Longo Prazo
Médio Prazo
Curto Prazo
Longo Prazo
Executado quando um novo processo é criado
Determina quando um processo novo passa a ser considerado no sistema, isto é, quando após sua criação passa a ser apto.
• Controle de admissão
Controla o grau de multiprogramação do sistema• Quanto maior o número de processos ativos, menor a
porcentagem de tempo de uso do processador por processo
Médio Prazo
Associado a gerencia de memória
• Participa do mecanismo de swapping (memória principal -> disco [swap out] | disco -> memória principal [swap in])
Suporte adicional a multiprogramação
• Grau de multiprogramação efetiva (diferencia aptos dos aptos-suspensos)
Curto Prazo
Mais importante, pois determina qual processo apto irá utilizar o processador
Executado sempre que ocorre eventos importantes:
• Interrupções (de relógio, E/S)• Chamada de Sistemas• Sinais (interrupções de software)
Diagrama de Escalonamento
Filas de Escalonamento
High-level (Longo Prazo)• Decide quantos programas são admitidos no sistema• Aloca memória e cria um processo• Controla a long-term queue
Short-term (Curto prazo)• Decide qual processo deve ser executado• Controla a short-term queue
I/O (Médio prazo)• Decide qual processo (com I/O) pendente deve ser tratado
pelo dispositivo de I/O• Controla a I/O queue
Filas de Escalonamento
Long-term
queue
Short-term
queue CPU
I/Oqueue
I/Oqueue
I/OqueueI/O
I/O
I/O
Processrequest FIM
High-levelscheduling
Short-termscheduling
I/O scheduling
InterruptHandler
Interruptof process
Interrupt from I/O
Exemplo
Contr. Serviços
Escalonador
contr. interrupção
Sist. Operacional
ARodando
BPronto
Outros processos
Execu-tando
Sist. Operacional
ABloquead
o
BPronto
Execu-
tandoContr. Serviços
Escalonador
contr. interrupção
Outros processos
ABloquead
o
BRodand
o Execu-
tando
Contr. Serviços
Escalonador
contr. interrupção
Outros processos
Sist. Operacional
Processo A parou. Por que?
• Req. serviço ao S.O.• Interrupção de A
Ex. erro• Interrupção de outra
fonte. Ex. I/O• Tempo acabou
Processo A parou. Por que?
• Req. serviço ao S.O.• Interrupção de A
Ex. erro• Interrupção de outra
fonte. Ex. I/O• Tempo acabou
tempo
Algoritmo de Escalonamento
Algoritmo de escalonamento escolhe qual processo deve executar em um determinado instante de tempo
Existem vários algoritmos para atingir os objetivos do escalonamento
Os algoritmos buscam:• Obter bons tempos médios (independente de critérios)• Privilegiar a variância em relação aos tempos médios
Os algoritmos estão categorizados em:• Lote• Interativo• Tempo Real
Tipos de Escalonador
Uma vez escalonado, o processo utiliza o processador até que:
Não-preemptivo (não troca de contexto):• Término de execução do processo• Execução de uma requisição de E/S ou sincronização• Liberação voluntário do processador para outro processo (yield)
Preemptivo (troca de contexto)• Término de execução do processo• Execução de uma requisição de E/S ou sincronização• Liberação voluntário do processador para outro processo (yield)• Interrupção de relógio• Processo de mais alta prioridade esteja pronto para executar
Tipos de Escalonamento
Mecanismos de Escalonamento• Preemptivo x Não-preemptivo
Políticas de Escalonamento• Round-Robin• FIFO (First-In First-Out)• Híbridos
- Partições de Lote (Batch)- MFQ - Multiple Feedback Queue
• SJF – Shortest Job First• SRJN – Shortest Remaining Job Next
Se diz que um algoritmo/sistema operacional é preemptivo quando um processo entra na CPU e o mesmo pode ser retirado da CPU antes do término da sua execução
Algoritmos de Escalonamento
Algoritmos Não-Preemptivos (cooperativos)• First-In-First-Out (FIFO) ou First-Come-First-Served
(FCFS)• Shortest Job First (SJF) ou Shortest Processo Next (SPN)
Algortimos Preemptivos• Round Robin (Circular)• Baseado em Prioridades
Existem outros algoritmos de escalonamento• High Response Ratio Next (HRRN)• Shortest Remaining Time (SRT)• Ect...
Escalonamento Preemptivo Permite a suspensão temporária de processos
Quantum ou time-slice: período de tempo durante o qual um processo usa o processador a cada vez
T11T12
T0 T22 T0
1 121905141 t70
mP1
Preempção
Quantum Quando uma tarefa recebe o processador, o núcleo ajusta
um contador de ticks que essa tarefa pode usar, ou seja, seu quantum é definido em número de ticks.
A cada tick, o contador é decrementado; quando ele chegar a zero, a tarefa perde o processador e volta à fila de prontas.
Nova visão dos Estados do Processo
Problema das trocas de processos
Mudar de um processo/tarefa para outro requer um certo tempo para a administração — salvar e carregar registradores e mapas de memória, atualizar tabelas e listas do SO, etc
Isto se chama troca de contexto Suponha que esta troca dure 5 ms Suponha também que o quantum está ajustado
em 20 ms Com esses parâmetros, após fazer 20 ms de
trabalho útil, a CPU terá que gastar 5 ms com troca de contexto. Assim, 20% do tempo de CPU (5 ms a cada 25 ms) é gasto com o overhead administrativo...
Troca de Contexto
5 ms
Solução? Para melhorar a eficiência da CPU, poderíamos ajustar o
quantum para 500 ms• Agora o tempo gasto com troca de contexto é menos do que
1% - “desprezível”...
Considere o que aconteceria se dez usuários apertassem a tecla <ENTER> exatamente ao mesmo tempo, disparando cada um processo:
• Dez processos serão colocados na lista de processo aptos a executar
• Se a CPU estiver ociosa, o primeiro começará imediatamente, o segundo não começará cerca de ½ segundo depois, e assim por diante
• O “azarado” do último processo somente começará a executar 5 segundos depois do usuário ter apertado <ENTER>, isto se todos os outros processos tiverem utilizado todo o seu quantum
• Muitos usuários vão achar que o tempo de resposta de 5 segundos para um comando simples é “muita” coisa
“Moral da estória”
Ajustar um quantum muito pequeno causa muitas trocas de contexto e diminui a eficiência da CPU, ...
...mas ajustá-lo para um valor muito alto causa um tempo de resposta inaceitável para pequenas tarefas interativas
A duração atual do quantum depende muito do tipo de sistema operacional; no Linux ela varia de 10 a 200 milissegundos, dependendo do tipo e prioridade da tarefa [Love, 2004].
Quantum grande:Diminui número de mudanças de
contexto e overhead do S.O. X Ruim para processos interativos
Quantum grande:Diminui número de mudanças de
contexto e overhead do S.O. X Ruim para processos interativos
Políticas de Escalonamento
Round-Robin Uso de uma lista de processos sem prioridade Escalonamento preemptivo Simples e justo Bom para sistemas interativos
Tar. BContextoTar. BContexto
Tar. CContextoTar. CContexto
CPU:RunningCPU:Running
Tar. AContextoTar. AContexto
Tar. AContexto
Tar. AContexto
Tar. AContexto
Round-Robin FIFO Híbrido SJF SRJN
Round Robin Cada processo recebe um tempo limitado (time slice = quantum)
para executar um ciclo de processador
Fila de processos aptos é circular
Necessita de relógio para delimitar as fatias de tempo (interrupção de tempo/relógio)
Se o (quantum = ∞) obtem-se o comportamento de um escalonador FIFO.
Tamanho do quantum igual prejudica processos I/O bound (prioridade)
Políticas de Escalonamento
First-In First-Out (FIFO) Uso de uma lista de processos sem prioridade (Fila) Escalonamento não-preemptivo Simples e justo Bom para sistemas em batch (lote)
B C D E F … N B C D E F … NCPUCPUA
FIM
Round-Robin FIFO Híbrido SJF SRJN
1. Processo aptos inseridos no final da fila
2. Processo no início da fila é o próximo.3. Processo executa até terminar, libere o
processador ou realize um chamada de sistema
Políticas de EscalonamentoFirst-In First-Out (FIFO)
Políticas de Escalonamento
Híbridos Como combinar processos batch com interativos?
Uso de Partições de Lote (batch)
• O sistema aceita tantos processos batch quantas forem as partições de lote
• O sistema aceita todos os processos interativos
• Escalonamento em dois níveis
Round-Robin FIFO Híbrido SJF SRJN
Partições de Lote (Batch)MFQ - Multiple Feedback Queue
Escalonamentos Híbridos
Partições de Lote
B C D E F … N B C D E F … NA
Memória
Partiçãode Lote
ProcessosInterativos
Processos interativos são ativados
imediatamente
Processos batch esperam a liberação do lote
Round-Robin FIFO Híbrido SJF SRJN
Escalonamentos Híbridos
Multiple Feedback Queue Como saber a priori se o processo é CPU-bound ou
I/O-bound?
MFQ usa abordagem de prioridades dinâmicas
Adaptação baseada no comportamento de cada processo
Usado no VAX / VMS (arquiteturas de computadores)
Round-Robin FIFO Híbrido SJF SRJN
Escalonamentos Híbridos
Multiple Feedback Queue
... Fila 1
... Fila 2
Fila n
Quantum
Prioridade
Novos processos entram na primeira fila (prioridade mais alta)
Se acabar o quantum desce um nível
Se requisitar E/S sobe um nível• Lembrando: I/O-bound são prioritários
...
Round-Robin FIFO Híbrido SJF SRJN
Escalonamentosbaseados no tempo de execução Shortest Job First (não-preemptivo) Shortest Remaining Job Next (preemptivo)
Melhora o tempo de resposta Não é justo: pode causar estagnação (starvation)
• Pode ser resolvida alterando a prioridade dinamicamente
Round-Robin FIFO Híbrido SJF SRJN
Exemplo de escalonamento job mais curto primeiro (Shortest Job First – SJF)
Shortest Job First
Shortest Job First
Algoritmo ótimo, fornece o menor tempo médio de espera para um conjunto de processos
Processos I/O bound são favorecidos
Dificuldade é determinar o tempo do próximo ciclo de CPU de cada processo, porém:
• Pode ser empregado em processos batch (long term scheduler)• Prever o futuro com base no passado
47
Um algoritmo de escalonamento com quatro classes de prioridade
Escalonamento em Sistemas Interativos
Como definir a Prioridade?
Prioridade Estática:
Processo é criado com determinada prioridade e esta é mantida durante todo o processo.
Prioridade Dinâmica:
Prioridade é ajustada de acordo com o estado de execução do processo e/ou sistema.
Ex. ajustar a prioridade em função da fração de quantum que foi realmente utilizada pelo processo.
• q = 100ms • Processo A = 2ms -> nova prioridade = 1/0.02 = 50• Processo B = 50ms -> nova prioridade = 1/0.5 = 2
Problemas com prioridades
Processos de baixa prioridade podem não ser executados
Postergação indefinida (starvation)
Processo com prioridade estática pode ficar mal classificado e ser penalizado ou favorecido em relação aos demais
Solução: múltiplas filas de realimentação.
ConclusõesComo funcionam dois ou mais programas ao mesmo tempo?
Conceitos• Processos x Threads (processos leves)
Interrupção• Cooperação hardware-software
Escalonamento• Tipos de processos
- CPU-bound x I/O-bound- Lote (batch) x interativo
• Filas de escalonamento- Long-term (admissão)- Short-term- I/O
Escalonamento (cont.)• Objetivos
- Justiça- Eficiência- Tempo de Resposta
• Conceitos- Preempção- Quantum (time-slice)- Troca de contexto
• Algoritmos- Propósito x Complexidade x Eficiência
Referências
Sistemas Operacionais Modernos – 3ª Edição. A. Tanenbaum, 2008.
Modern Operating Systems 3 e. Prentice-Hall, 2008.