Vous êtes sur la page 1sur 14

SO

Mdulo 6: Escalonamento de CPU

Era uma vez...

Conceitos Bsicos Critrio de Escalonamento Algoritmos de Escalonamento Escalonamento em Mltiplos-Processadores Escalonamento em Tempo Real Avaliao de Algoritmos
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Os computadores faziam uma coisa por vez.


Listagem com resultados

DECK de cartes perfurados

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Era uma vez...

Escalonamento de CPU

Os computadores faziam uma coisa por vez. H uma grande diferena entre a velocidade do
processador e a velocidade do mundo externo.

O escalonador de CPU define a seqncia de aes que determinam o interleave (intercalao) das threads. Programas utilizam sincronizao a fim de prevenir aes nocivas. entretanto as escolhas do escalonamento aparentam (para o programa) ser nodeterminsticas. As aes do escalonador so ditadas por uma poltica de escalonamento.
Acordou ou Pronto para executar Fila de jobs prontos Seleciona prximo a ser executado() Chaveia processo()

Processadores Nano-segundos Perifricos Micro-Milissegundos Pessoas Segundos-Depois do almoo


Sistemas Operacionais Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Objetivos do Escalonador
Tempo de resposta ou latncia Quanto tempo o programa demorar para fazer o que eu quero? Throughput Quantas operaes so completadas por unidade de tempo ? Utilizao: que porcentagem de tempo a CPU (e cada dispositivo) consome fazendo algo til ? Justia O que significa ? Dividir a torta em partes iguais ? Garantir baixa variao nos tempos de resposta ? Livre de starvation (ou inanio) ? Cumprir com os tempos e garantir repetibilidade de tasks peridicas
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Escalonador de longo prazo injeta jobs

Escalonadores de Processos
Processo Parcialmente Executado que sofreu Swap

Fila Prontos

CPU

I/O

Fila de I/O

Solicitao de I/O Expira Time Slice

Filho Executa

Cria proc. Filho Aguarda por uma Interrupo


Silberschatz, Galvin, and Gagne

Interrupo Ocorre
Sistemas Operacionais

SO

Process Control Block

Process Control Block


enum state_type {new, ready, running, waiting, halted};

Ponteiro

Estado do Processo

typedef struct _control_block { struct control_block *next_pcb; enum state_type state; int pid; address PC; int reg_file[NumRegs]; int priority; address page_table; ... } control_block;

Nmero do Processo Program Counter Registradores Inf. Escalonamento Limites de Memria Inf. Estado de I/O Informaes Contbeis

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Prioridade

Alguns objetivos podem ser atingidos incorporando a noo de prioridade numa metodologia de escalonamento bsica. Cada job da fila de processos prontos tem associado um valor de prioridade, que o favorece em relao aos processos de menor prioridade.

Prioridade Interna

Prioridade Interna : o sistema ajusta os valores de prioridade internamente por meio de uma tcnica de implementao incorporada ao escalonador. Melhora a igualdade, utilizao de recursos, diminui o perigo de starvation (ou inanio); Abaixa a prioridade de jobs consumindo mais que eles compartilham; Aumenta a prioridade de jobs que esto prendendo recursos que esto em falta: Ex.: primitiva do interna Unix sleep Incentiva jobs que estiveram em starvation num passado recente; Proporcionam um reajuste contnuo e dinmico em resposta s condies e eventos observados:
Sistemas Operacionais

Valores de prioridade externos : Impostos ao sistema pelo usurio, administrador, ou projetista; Refletem as preferncias externas para um particular usurio ou tasks: Todos os jobs so iguais, mas alguns jobs so mais iguais que outros. Exemplo: System Call nice do Unix, para diminuir a prioridade de uma task. Exemplo: Tasks urgentes de um sistema de controle em tempo real. Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Pode ser visvel e controlvel por outras partes do sistema Gagne Silberschatz, Galvin, and

Preempo

As polticas do Scheduler podem ser preemptivas ou nopreemptivas. Preemptiva: o scheduler pode unilateralmente forar uma task a liberar o processador antes que a task bloqueie, suspenda, ou finalize. Timeslicing impede os jobs de monopolizarem a CPU Escalonador escolhe um job e o processa por um quantum do tempo de CPU. Um job executando por mais tempo que seu quantum forado a interromper seu processamento por meio de cdigo de tratamento de interrupo de relgio no scheduler. Utiliza-se preempo para honrar a prioridade Preempta um job se um outro de maior prioridade passar ao estado pronto
Silberschatz, Galvin, and Gagne

Escalonador de longo prazo injeta jobs

Escalonamento No-Preemptivo
Processo tem o controle da CPU ate que ele abandone-a voluntariamente Fila Prontos CPU

I/O

Fila de I/O

Solicitao de I/O Expirou Time Slice

Filho Executa

Cria proc. Filho Aguarda por uma Interrupo


Silberschatz, Galvin, and Gagne

Interrupo Ocorre
Sistemas Operacionais

Sistemas Operacionais

SO

Escalonador de longo prazo injeta jobs

Escalonamento Preemptivo
Processos podem ser forados a abandonar a CPU. Fila Prontos CPU

Conceitos Bsicos

Utilizao mxima da CPU obtida com multiprogramao; CPUI/O Burst Cycle Execuo do processo consiste de
um ciclo de: execuo de CPU e espera de E/S;

I/O

Fila de I/O

Solicitao de I/O

Distribuio CPU burst


Expirou Time Slice
Filho Executa

(Picos de CPU);

Cria proc. Filho Aguarda por uma Interrupo


Silberschatz, Galvin, and Gagne

Burst Cycle (ciclo de surto) - Tempo que a CPU est em


efetivo atendimento (processando) a um processo.
Sistemas Operacionais

Interrupo Ocorre
Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Alternncia de surto (burst) de CPU e de E/S

CPU-I/O Burst Cycle

Executa Aguarda por I/O

CPU Bound I/O Bound


Sistemas Operacionais Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Silberschatz, Galvin, and Gagne

Histograma de tempo de CPU-burst

Diagrama de estado de um processo

Novo

criao

interrupo

fim

Encerrado

Pronto Escolhido pelo escalonador

Executando

concluso de I/O ou evento

aguardando I/O ou evento


Waiting

A distribuio de surtos de CPU (CPU burst) exponencial. Tem-se uma enorme quantidade de surtos curtos e uns
Sistemas Operacionais

poucos surtos longos.

Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

SO

Escalonamento de CPU

Dispatcher - Despachador

Seleciona dentre os processos na memria, aqueles que esto


prontos para executar e aloca a CPU para um deles.

O mdulo Dispatcher d o controle da CPU para o


processo selecionado pelo escalonamento de curtoprazo (short-term). Isto consiste de: troca de contexto; alterar para modo usurio (j que o dispatcher roda no modo supervisor ); pula para o lugar (endereo) adequado do programa do usurio, para dar inicio a sua execuo;

As decises de escalonamento da CPU so realizadas quando o


processo: 1. Troca do estado de execuo para o de espera 2. Troca do estado de execuo para o de pronto para executar 3. Troca do estado de espera para o de pronto para executar 4. Termina

Escalonamento para 1 e 4 no-preemptivo. Processo libera a


CPU voluntariamente.

Todo os outros escalonamentos so preemptivos.


Sistemas Operacionais Silberschatz, Galvin, and Gagne

Dispatch latency tempo que leva para o dispatcher


parar um processo e iniciar outro.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Critrio de escalonamento Utilizao da CPU manter a CPU ocupada o maior tempo


possvel

Critrio de Otimizao

Utilizao mxima da CPU Maximizar


throughput

Throughput (Razo de finalizao) nmero de processos que


completam sua execuo por unidade de tempo

Turnaround time (Tempo de finalizao) tempo necessrio para


executar um processo em particular

Minimizar turnaround time Minimizar Tempo de espera Minimizar Tempo de resposta Ou seja: A otimizao atingida com o
equilbrio dessas prioridades.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Tempo de espera tempo que um processo permanece em


espera na fila de prontos

Tempo de resposta tempo que leva entre uma requisio ser


submetida at a primeira resposta ser produzida, no a sada completa do processo (para ambientes de tempo compartilhado)

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Ex.: Processo P2

Gantt Chart Ferramenta de escalonamento visual ; Trata-se de um mtodo grfico ( um tipo de grfico de barras horizontal) baseado numa escala de tempo, mostrando o escalonamento ao longo do tempo das vrias atividades que compem uma tarefa; Mostra as dependncias entre atividades, pessoas e outros recursos na sua alocao; Possibilita o traceamento at a finalizao.
Silberschatz, Galvin, and Gagne

Tempo de Resposta
P1 0 24 P2 27 P3 30

Instante de submisso

Tempo De espera

Tempo de Turnaround

Silberschatz, Galvin, and Gagne

SO

Gantt Chart (cont.)


Iniciado em 1916 por Henry Laurence Gantt, um engenheiro americano para gerenciar o desempenho dos equipamentos; Faa os eixos um grfico com escala de tempo na horizontal, e desenhe um bloco para representar cada atividade a partir do seu instante de inicio at o seu trmino. Considerando que sero executados trs processos segundo a ordem, P1, P2 e P3, com durao de 24, 3 e 4 unidades e tempo, o grfico de Gantt ser:
P1 0 24 P2 27 P3 30
Silberschatz, Galvin, and Gagne Sistemas Operacionais

Algoritmos de Escalonamento

O escalonamento de CPU lida com o


problema de decidir a quais processos na fila de processos prontos, a CPU dever ser alocada;

Existem muitos algoritmos diferentes de


escalonamento de CPU.
Silberschatz, Galvin, and Gagne

Escalonamento First-Come, First-Served (FCFS)

Escalonamento FCFS (Cont.)


Agora, suponha que os processos chegaram na ordem P2 , P3 , P1 .

Exemplo:

Processo P1 P2 P3

Burst Time 24 3 3

O Gantt Chart para o escalonamento passa a ser:


P2 0 3 P3 6 P1 30

Suponha que os processos chegaram na ordem: P1 , P2 , P3


O Gantt Chart (Grfico de Gantt) para esse escalonamento :

P1 24

P2 27

P3 30

Tempo de espera para: P1 = 0; P2 = 24; Tempo de espera mdio: (0 + 24 + 27)/3 = 17


Sistemas Operacionais

P3 = 27

Tempo de espera para P1 = 6; P2 = 0 ; P3 = 3 Tempo de espera mdio: (6 + 0 + 3)/3 = 3 Muito melhor que o caso anterior. Efeito de conjunto: processo pequeno (em tempo de execuo)
aps um processo longo.
Silberschatz, Galvin, and Gagne Sistemas Operacionais Silberschatz, Galvin, and Gagne

Exemplo FCFS

Escalonamento FCFS (Cont.)

Processo (Ordem) Burst Time Instante cheg.

Facilmente implementado por uma fila FIFO;


P1 20 0 P2 3 0 P3 3 0 0 P1 P2 P3 20 23 26

Tempo mdio de espera = (0 + 20 + 23) / 3 = 14,3

Quando um processo entra na fila de processos prontos, seu PCB ligado ao final da fila; Quando a CPU liberada, ela alocada ao processo cujo PCB encontra-se no incio da fila;

Exemplo 2
Processo (Ordem) Burst Time Instante cheg. P3 3 0 P2 3 1 P1 20 2 P3 P2 0 3 6 P1 26

O algoritmo de escalonamento FCFS no-preemptivo.


Assim que a CPU tiver sido alocada a um processo, esse processo mantm a CPU at liber-la, quer seja por ter sido concludo, quer seja por ter de atender a um pedido de I/O;

Tempo mdio de espera = (0 + 2 + 4) / 3 = 2

Esse algoritmo no indicado para sistemas de tempo


compartilhado, onde importante que o usurio tenha acesso a CPU em intervalos regulares.

Proporciona baixa utilizao da CPU.


Sistemas Operacionais Silberschatz, Galvin, and Gagne Sistemas Operacionais Silberschatz, Galvin, and Gagne

SO

Escalonamento Shortest-Job-First (SJF)

Exemplo: SJF No Preemptivo


Processo Burst Time

Associa a cada processo o prximo tempo de CPU (CPU burst).


Usa esse valor para escalonar os processos com o menor tempo

P1 P2 P3 P4

6 8 7 3

Dois esquemas:
No-preemptivo uma vez que a CPU foi dada a um processo, ela no pode lhe ser tomada at que complete seu tempo de CPU. Preemptivo Se um novo processo chega e possui menor tempo de CPU que o restante de tempo do processo corrente, a CPU lhe tomada. Este esquema conhecido como Shortest-Remaining-Time-First (SRTF).

SJF ( grfico de Gantt) P4 3 P1 9 P3 16 P2 24

SJF o timo d a menor mdia de tempo de espera para um


dado conjunto de processos.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Tempo mdio de espera = (3 + 16 + 9 + 0)/4 = 7


Silberschatz, Galvin, and Gagne

Exemplo: SJF No Preemptivo


Processo P1 P2 P3 P4 Tempo de Chegada Burst Time 0.0 2.0 4.0 5.0 7 4 1 4

Exemplo de SJF Preemptivo

Processo P1 P2 P3 P4

Tempo de Chegada 0.0 2.0 4.0 5.0

Burst Time 7 4 1 4

SJF (no-preemptivo)
P1 0 3 7 P3 8 P2 12 P4 16

SJF (preemptivo) P1 0 2 P2 4 P3 5 P2 7 P4 11 P1 16

Tempo de espera mdio = (0 + 6 + 3 + 7)/4 = 4


Sistemas Operacionais Silberschatz, Galvin, and Gagne

Tempo de espera mdio = (9 + 1 + 0 +2)/4 = 3

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Exemplos SJF no Preemptivo


Processo (Ordem) Burst Time Instante P1 6 0 P2 8 0 P3 7 0 P4 3 0

Shortest Remaining Time (SRT)

Verso preemptiva do SJF poltica


Escolher o processo com o menor tempo de CPU burst, e executar esse processo preemptivamente at que: Ocorra sua finalizao ou bloqueie, ou Um outro processo entre na fila de processos prontos Nesse momento, escolher um outro processo para executar, caso ele tenha um tempo de CPU Burst inferior ao do processo que est correntemente sendo executado.

SJF

P4 0 3

P1 9

P3 16

P2 24

Tempo mdio de espera = (0 + 3 + 9 + 16) / 4 = 7

FCFS, mesmo exemplo:


P1 0 6 P2 14 P3 P4 21 24

Tempo mdio de espera = (0 + 6 + 14 + 21) / 4 = 10.25


Sistemas Operacionais Silberschatz, Galvin, and Gagne Sistemas Operacionais Silberschatz, Galvin, and Gagne

SO

Exemplo de SRT
Processo (Ordem) Burst Time P1 8 0 P2 4 1 P3 9 2 P4 5 3

Determinando o tamanho do prximo tempo de CPU

SJF

Ordem chegada

Utilizados em ambientes interativos Pode-se somente estimar o prximo tempo de CPU Pode ser feito usando o tempo anterior de CPU e
usando mdia exponencial atravs da estimativa: tn = tempo de CPU no n-simo ciclo de CPU

ordem P2 P3 P4 P1 0 8 P2 P4 12 17 P3 26

P1 P2 P3 P4 Tempo mdio de espera = (0 + (81) + (123) + (172)) / 4 = 7.75

n+1 = valor estimado para o prximo ciclo de CPU , constante tal que 0 < Define-se: n+1 = tn + (1 - ) n
Sistemas Operacionais Silberschatz, Galvin, and Gagne

SRT ou Shortest-Remaining-Time-First
ordem P2 P3 P4 P1 P2 P4 P1 P3 0 5 10 17 26 P1 P2 P3 P4 Tempo mdio de espera = ((0+(101)) + (11) + (172) + (53)) / 4 = 6.5
Sistemas Operacionais Silberschatz, Galvin, and Gagne

<

Exemplos de mdia exponencial

Exemplo

=0
n+1 = n histrias recentes no contam (transitrias)

Para
Tempos ti surto

=1/2, t0 = 6 e 0 =10 teremos as

seguintes estimativas:
0 6 1 4 8 2 6 6 3 4 6 4 13 5 5 13 9 6 13 11 12 7 ...... ...... ......

=1
n+1 = tn S o ltimo CPU burst conta ( histrico irrelevante)

Se expandirmos a frmula, teremos:


n+1 = tn+(1 - ) tn -1 + +(1 - )j tn -1 + +(1 - )n=1 tn 0

i 10 previso ti i

Desde que ambos e (1 - ) sejam menores ou iguais a


1, cada termo sucessivo tem menor peso que seu antecessor
Sistemas Operacionais Silberschatz, Galvin, and Gagne

tempo efetivo de gasto de CPU no i-simo tempo tempo estimado de CPU no i-simo tempo
Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Escalonamento por prioridade

Exemplo de Escalonamento por Prioridade


Processo Burst Time
P1 P2 P3 P4 P5 P2
0 1

Uma

prioridade (valor inteiro) associado a cada processo prioridade (menor inteiro prioridade maior). Preemptivo No-preemptivo prioridade definida pelo tempo de CPU

Prioridade
3 1 4 5 2 P3
16

A CPU alocada para o processo que tiver a maior

10 1 2 1 5 P5
6

SJF um escalonamento por prioridade, onde a Problema Starvation (inanio) processos de baixa
prioridade podem nunca executar

P1

P4
18 19

Soluo Aging (envelhecimento) com o passar do


tempo incrementar a prioridade dos processos.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Considerando 1 como sendo a prioridade mxima, o Tempo Mdio de Espera = 8.2


Sistemas Operacionais Silberschatz, Galvin, and Gagne

SO

Exerccio de Escalonamento por Prioridade - 1

Exerccio de Escalonamento por Prioridade - 2


Processos Burst time Prioridade Instante de chegada P1 P2 P3 P4 P5 10 1 2 1 5 3 1 4 5 2 0.0 1.0 2.0 3.0 4.0

Processos Burst time Prioridade P1 P2 P3 P4 P5 10 1 2 1 5 3 1 4 5 2

Considerando a prioridade 1, como sendo a


mais elevada, o tempo mdio de espera resulta em: (6+0+16+18+1)/5=8.2
Silberschatz, Galvin, and Gagne

Faa o grfico de Gantt para o escalonamento


preemptivo e no preemptivo e calcule o tempo mdio de espera
Silberschatz, Galvin, and Gagne

Filas por Prioridade


P0 Dispatch Sada Processador

Round Robin (RR) ou Revezamento Circular



Indicado para sistemas de tempo compartilhado. Cada processo ganha uma pequena unidade de tempo da CPU (quantum), normalmente 10-100 milissegundos. Aps esse tempo, o processo interrompido, a CPU lhe tomada, sendo ento adicionado no fim da fila de processos prontos. Se existirem n processos esperando na fila e o quantum de tempo for q, ento cada processo pega 1/n do tempo da CPU, em bloco de no mximo q unidades de tempo, por vez. Nenhum processo espera mais que (n-1)q unidades de tempo. Rendimento: q grande FIFO q pequeno q deve ser grande o suficiente para respeitar a mudana de contexto, caso contrrio haver grande ineficincia (overhead).

P1 . . . Pn

Entrada

Preempo Aguarda Evento Evento ocorre


Sistemas Operacionais

Fila de Bloqueados

Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Exemplo: RR com Quantum de Tempo = 20


Processo P1 P2 P3 P4 Tempo de CPU 53 17 68 24

time slice = 4
Processo (Ordem Proc.) Burst Time Instante P1 24 0 P2 3 0 P3 3 0

Exemplos RR
P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30 Tempo de espera mdio= (4 + 7 + (104)) / 3 = 5.66

O diagrama de Gantt fica:


P1 0 20 P2 37 P3 57 P4 77 P1 P3 97 117 P4 P1 P3 P3

Exemplo 2

Processo (Ordem Proc.) Burst Time Instante

P3 3 0

P2 3 0

P1 24 0

121 134 154 162

P3 P2 P1 P1 P1 P1 P1 P1 0 3 6 10 14 18 22 26 30 Tempo de espera mdio = (0 + 3 + 6) / 3 = 3

Tipicamente, turnaround maior que o SRTF, mas a resposta


melhor.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

SO

Round-Robin (RR) - Exemplo


Processo 1 2 3 4 5 Instante de Chegada 0 2 4 6 8 CPU 3 6 4 5 2

Outro Exemplo RR (q = 1)

Silberschatz, Galvin, and Gagne

Silberschatz, Galvin, and Gagne

Outro Exemplo RR e (q = 4)

Exemplo de RR com Quantum = 20


Processo P1 P2 P3 P4 Burst Time 53 17 68 24

O diagrama de Gantt fica:


P1 0
Silberschatz, Galvin, and Gagne A. Frank - P. Weisberg

P2 20 37

P3 57

P4 77

P1

P3 97 117

P4

P1

P3

P3

121 134 154 162


Silberschatz, Galvin, and Gagne

Quantum de Tempo menor Aumenta a Troca de Contexto

Tempo de Turnaround Varia com o Quantum de Tempo

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

SO

RR - Turnaround x Quantum
Para q = 6, o turnaround mdio : (6 + 9 + 10 + 17) = 42/4 = 10.5 Para q=1, o turnaround mdio ser: (seja 1, 2, 3, 4 os processos P1, P2, P3 e P4, ento a seqncia de execuo ser) 1............................................................... 17 1 2 3 4 1 2 4 1 2 4 1 4 1 4 1 4 4 P3
Sistemas Operacionais

Mltiplas Filas Fila de processos Prontos particionada em filas separadas:


foreground (interativa ou primeiro plano) background (batch ou segundo plano)

Cada fila tem seu prprio algoritmo de escalonamento:


foreground RR background FCFS

Escalonamento deve ser feito entre as filas.


Escalonamento de prioridade fixa; i.e., atende tanto foreground quanto background. Possibilidade de ocorrncia de starvation (inanio) Time slice (Quantum de tempo) cada fila ganha uma certa quantidade de tempo de CPU a qual ela pode escalonar entre estes processos; i.e.:
80% de foreground em RR 20% de background em FCFS
Sistemas Operacionais

tempo

P2

P1

P4 (finalizao)
Silberschatz, Galvin, and Gagne

(3+9+15+17)/4 = 44/4 = 11

Silberschatz, Galvin, and Gagne

Escalonamento de Mltiplas Filas

Mltiplas Filas com Realimentao


Um processo pode se mover entre as vrias filas; envelhecimento
(aging) pode ser implementado desta maneira.

O escalonamento de mltiplas filas com feedback (realimentao)


definido pelos seguintes parmetros: nmero de filas; algoritmos de escalonamento para cada fila; mtodo usado para determinar quando fazer upgrade de um processo; mtodo usado para determinar quando rebaixar um processo; mtodo usado para determinar em qual fila um processo ir entrar quando aquele processo precisar de algum servio.
Sistemas Operacionais Silberschatz, Galvin, and Gagne Sistemas Operacionais Silberschatz, Galvin, and Gagne

Mltiplas Filas com Realimentao

Exemplo de Mltiplas Filas com Realimentao

Trs Filas:
Q0 quantum de tempo de 8 milissegundos Q1 quantum de tempo de 16 milissegundos Q2 FCFS

Escalonamento:
Um novo job entra na fila Q0 que servida por FCFS. Quando este ganha a CPU, recebe 8 milissegundos. Se o job no terminar em 8 milissegundos, transferido para a fila Q1. Em Q1 o trabalho atendido novamente por FCFS e recebe 16 milissegundos adicionais. Se ele ainda no se completar, preemptado (perde a CPU) e transferido para a fila Q2.
Sistemas Operacionais Silberschatz, Galvin, and Gagne Sistemas Operacionais Silberschatz, Galvin, and Gagne

10

SO

Escalonamento com Mltiplos Processadores

Escalonamento em Mltiplos Processadores


(cont.)

Escalonamento de CPU mais complexo quando vrias


CPUs esto disponveis.

Multiprocessamento Simtrico (Symmetric


Multiprocessing -SMP) cada processador faz suas prprias decises de escalonamento.

Processadores homogneos dentro do multiprocessador


=> qualquer processador pode processar qualquer processo.

Processadores heterogneos => cada processador


compila e processa seus programas

Multiprocessamento Assimtrico apenas


um processador acessa as estruturas de dados do sistema, aliviando a necessidade de compartilhamento de dados.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Compartilhamento de carga (Load sharing) somente


uma fila de prontos (quando processadores homogneos)
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Escalonamento em Mltiplos Processadores


(cont.)

Escalonamento em Tempo Real Sistemas de Tempo Real Forado exige que se complete uma
tarefa crtica em um intervalo de tempo garantido. Software especfico em hardware dedicado

Multiprocessamento simtrico (SMP)


Cada processador processa uma mesma cpia do sistema operacional. Muitos processos podem ser executados ao mesmo tempo sem degradao de performance (desempenho). Vrios sistemas operacionais modernos tem o suporte a SMP

Sistema de Tempo Real Simples exige que processos crticos


recebam prioridade maior que outros menos importantes.

Latncia do Dispatcher - Tempo necessrio para se completar


uma mudana de contexto. Em sistemas de tempo real o tempo de latncia do dispatcher deve ser o mnimo possvel

Multiprocessamento assimtrico
A cada processador atribuda uma tarefa especfica; o processador principal (Mestre) escalona e aloca trabalho para processadores escravos. Muito comum em sistemas extremamente grandes.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Pode ocorrer inverso de prioridade. Um processo de alta


prioridade necessita modificar um dado que est sendo acessado por um processo de baixa prioridade => processo de alta espera processo de baixa prioridade. Soluo herdar prioridade do processo de alta prioridade para finalizar rpido.
Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Latncia do Dispatch

Scheduling em Sistemas de Tempo Real Um sistema de Tempo Real Escalonvel?

Considerando:
m eventos peridicos Cada evento i ocorre dentro de um perodo Pi e requer Ci segundos

Logo a carga computacional somente pode ser


tratada se:
m i =1

P
i
Sistemas Operacionais Silberschatz, Galvin, and Gagne Sistemas Operacionais

Ci

1
Silberschatz, Galvin, and Gagne

11

SO

Escalonamento no UNIX

As Prioridades so recalculadas a cada segundo, ou seja os processos que no finalizaram ou foram bloqueados dentro desse tempo so preemptados; 160 nveis de prioridade divididos em 3 classes de prioridade. Um fator de ajuste utilizado para manter o processo dentro de sua classe; O kernel tradicional no preemptivo
Classe de Prioridade Valor Global 159 Real-time Seqncia de escalonamento primeiro

Escalonamento de Processos no Linux 2 algoritmos independentes de escalonamento de processos: time-sharing: baseado em prioridade Soft-real time: FCFS e RR somente processos no modo usurio podem ser pre-emptados.

. . . . . . . . . .

Kernel

100 99 60 59

Time-shared
Sistemas Operacionais

ltimo

Silberschatz, Galvin, and Gagne

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Escalonamento no Windows Escalonamento pre-emptivo baseado em Prioridade Uma thread ser processada at que seja pre-emptada por outra de
maior prioridade termina, tem seu quantum de tempo expirado, ou chama um system call que cause bloqueio.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Prioridade no Windows NT

Apresenta um esquema de 32 nveis de prioridade:


Classe normal (1-15) e real-time (16-31), 0 (gerenciamento de memria) Uma fila para cada prioridade. Procura das filas de maior prioridade para as de menor prioridade at encontrar uma thread que esteja pronta para ser executada; Processa a thread idle quando no h nenhuma thread ready Prioridade Base de cada classe de prioridade A prioridade inicial de uma thread que pertence a essa classe.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Prioridade base

Mais elevada Acima do normal normal Abaixo do normal Mais baixa

Prioridade do Processo
Sistemas Operacionais

Prioridade Base da Thread

Prioridade Dinmica Da Thread


Silberschatz, Galvin, and Gagne

Escalonamento de Threads

Programao do Solaris 2

Thread de usurio
Escalonamento Local Escalonamento via biblioteca de threads, que decide qual thread ir ser processado por um LWP disponvel. Escalonamento local aplicao. No existe mudana de contexto entre alternncia entre os threads de usurios. Alternncia tarefa da programao.

Thread de Kernel
Escalonamento Global O sistema decide qual thread ser o prximo a ganhar controle da CPU. Neste caso tarefa real do SO e existe uma mudana de contexto a ser realizada.
Sistemas Operacionais Silberschatz, Galvin, and Gagne Sistemas Operacionais Silberschatz, Galvin, and Gagne

12

SO

Escalonamento de Threads em Java

Programao de Threads Java (cont)


JVM programa um thread para ser executado quando:

JVM usa um algoritmo preemptivo, baseado em


prioridade. Todo thread em Java possui uma prioridade. Um novo thread escolhido (escalonado) para assumir a CPU, quando: O thread corrente termina O thread corrente entra em estado de bloqueado, esperando por uma E/S O mtodo suspend() chamado O mtodo stop() chamado

1.O thread que est executando deixa o estado em


execuo.

2.Um thread de alta prioridade entra no estado em


execuo.

Filas FIFO so utilizadas se existem mltiplos threads


com a mesma prioridade.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

* Nota JVM no especifica se os threads so de tempo compartilhado (time slice) ou no.

Sistemas Operacionais

Silberschatz, Galvin, and Gagne

Compartilhamento de Tempo - Java

Prioridades de Thread - Java

Uma vez que o ambiente JVM no garante quantum de


tempo (time Slice) o mtodo yield() pode ser utilizado: while (true) { // Realiza tarefas de CPU intensivas ... Thread.yield(); } Isto transfere (cede) o controle para outro thread de mesma prioridade.
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Prioridades de Thread:
Prioridade Thread.MIN_PRIORITY Thread.MAX_PRIORITY Thread.NORM_PRIORITY Comentrio Prioridade mnima Prioridade mxima Prioridade padro

Prioridade podem ser atribudas usando-se o mtodo setPriority(): setPriority(Thread.NORM_PRIORITY + 2);


Sistemas Operacionais Silberschatz, Galvin, and Gagne

Avaliao de Algoritmos de Escalonamento

Avaliao (cont.)
Modelos de filas
- considera o sistema como um rede de servidores (CPU, Discos, impressoras, etc). Cada servidor possui uma fila associada. Conhecendo a razo de chegada e razo de atendimento, podemos computar a utilizao, tamanho mdio de fila, tempo de espera mdio, etc. de um servidor. n=xW

Avaliao Analtica - utiliza um dado algoritmo e a carga


do sistema para produzir uma formula ou valor numrico que avalia o comportamento do algoritmo para uma dada carga.

Modelagem determinstica tipo de modelagem analtica


que de posse de uma dada carga pr-determinada do sistema (workload), define-se o comportamento de cada algoritmo de escalonamento de acordo com esta carga.

Frmula de Litle

onde n = tamanho mdio da fila (excluindo processo sendo servido = razo mdia de chegada na fila (i.e. 3 processos/segundo) W= tempo mdio de espera na fila

Exemplo - Para um conjunto de 5 processos, chegando em


tempo 0, na ordem dada, com os tempos de CPU dados, qual algoritmo, entre FCFS, SJF e RR possui o menor tempo mdio de espera? Dados P1=10, P2=29, P3=3, P4=7 e P5=12
Sistemas Operacionais Silberschatz, Galvin, and Gagne

Frmula de Litle pressupe sistema em equilbrio, i.e nmero de


processos chegando igual ao nmero de processos saindo do sistema
Sistemas Operacionais Silberschatz, Galvin, and Gagne

13

SO

Avaliao (cont.)

Avaliao de Escalonamento da CPU por simulao

Modelo de Simulao - implementar o modelo do


sistema de computao e processar vrias simulaes. um mtodo mais acurado para avaliar algoritmos de escalonamento, porm mais caro pois requer vrias horas de tempo de computao. Quanto mais prximo do sistema real (acurado) for o modelo implementado mais preciso o resultado.

Simulao:

Representar as estruturas mais importantes do sistema, representar o relgio por uma varivel. Variao do relgio (varivel) faz o simulador modificar os estados do sistema para refletir as atividades dos dispositivos.
Silberschatz, Galvin, and Gagne Sistemas Operacionais Silberschatz, Galvin, and Gagne

Sistemas Operacionais

14