Vous êtes sur la page 1sur 48

Sistemas Operacionais com Java

Aula 6
Captulo 6 Escalonamento de CPU
6.1 Conceitos bsicos
6.2 Critrios de Escalonamento

6.3 Algoritmos de Escalonamento

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Escalonamento de CPU
O escalonamento de CPU a base dos SOs

multiprogramados.
Alternando a CPU entre os processos, o SO pode
tornar o computador mais produtivo.
Vamos ver os conceitos bsicos de escalonamento de
CPU e diversos algoritmos de escalonamento de
CPU.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1 Conceitos Bsicos


Em

um sistema monoprocessado s
processo pode ser executado de cada vez.

um

Se houver mais processos, o restante ter

de esperar
que a CPU esteja livre e possa se reescalonada.

O objetivo da multiprograma o

ter algum processo


em execu o durante todos os momentos, para
maximizar a utiliza o da CPU.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1 Conceitos Bsicos


Com a multiprogramao, tentamos usar esse tempo

de forma produtiva.
Diversos processos so mantidos na memria ao

mesmo tempo. Quando um processo precisa esperar,


o SO afasta a CPU desse processo e d a CPU a
outro processo.
O escalonamento uma funo fundamental do SO.

Quase todos os recursos so escalonados antes do


uso.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.1 Ciclo de Burst (surto) CPU E/S

A execu o de um processo consiste em um ciclo de

execu o da CPU e espera por E/S.


Os processos alternam entre esses dois estados.
A execuo do processo come a com um burst de

CPU se segue com um burst de E/S, que por sua vez,


seguido por outro burst de CPU e assim por diante.
Por fim, o burst de CPU final termina com uma

requisio do sistema para encerrar a execu o.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.1 Ciclo de Burst CPU E/S

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.1 Ciclo de Burst CPU E/S

A curva geralmente caracterizada como exponencial

ou hiperexponencial veja figura a seguir.


Existe um grande nmero de bursts de CPU curtos e

um nmero pequeno de bursts de CPU longos.


Um programa I/O-bound (limitado por E/S) geralmente

ter muitos bursts de CPU curtos.


Um programa CPU-bound (limitado por CPU) poder

ter alguns bursts de CPU longos.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.1 Ciclo de Burst CPU E/S

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.2 Escalonador de CPU

Quando a CPU fica ociosa o SO dever

escolher um
processo dentre os processos que esto na fila de
prontos para ser executado.

processo de sele o
executado pelo
escalonador de curto prazo ou escalonador de
CPU.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.2 Escalonador de CPU

O escalonador seleciona um processo entre os

presentes na mem ria que esto prontos para


execu o, e o aloca CPU.
No necessariamente a fila de processos prontos

uma fila FIFO (primeiro a entrar, primeiro a sair).


Podemos organizar a fila de prontos usando v rias

estrat gias como veremos mais adiante.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.3 Escalonamento preemptivo

As decises de escalonamento de CPU podem

ocorrer sob as quatro circunstncias a seguir:


1. Quando um processo passa do estado executando para o
estado esperando.
2. Quando um processo passa do estado executando para o
estado pronto.
3. Quando um processo passa do estado esperando para o
estado pronto.
4. Quando um processo termina.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.3 Escalonamento preemptivo

Nos casos 1 e 4, no h opo em termos de

escalonamento.
Nestes

casos dizemos que o esquema


escalonamento no-preemptivo ou cooperativo.

de

Em escalonadores no-preemptivos, depois que a

CPU foi alocada a um processo, o processo mantm a


CPU at liber-la terminando ou passando para o
estado de espera.
Este esquema foi usado no Windows 3.x.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.3 Escalonamento preemptivo

O escalonamento preemptivo ocorre nos casos 2 e 3.


Escalonadores preemptivos trazem custos adicionais

em relao a coordenao de acesso aos dados


compartilhados.
Exemplo:
Considere o caso de dois processos que compartilhem

os dados. Enquanto um est atualizando dados


interrompido para que o segundo processo possa
executar. O segundo processo tenta ler os dados, que
esto no estado inconsistente. Precisamos de novos
mecanismos para coordenar o acesso a dados
compartilhados.
Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.3 Escalonamento preemptivo

A preempo tambm tem um efeito no projeto do

kernel, em alguns casos o processo pode solicitar


uma chamada de sistema e o kernel pode estar
ocupado com uma atividade solicitada por outro
processo.
Tais atividades podem implicar na alterao de dados

importantes do kernel.
O que acontece se o processo for interrompido no

meio dessas mudanas e o kernel precisar ler ou


modificar a mesma estrutura?
Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.3 Escalonamento preemptivo

Certos SOs, incluindo a maioria das verses do UNIX,

tratam desse problema esperando que uma chamada


de sistema seja concluda ou que ocorra uma
operao com um bloco de E/S antes de realizar um
troca de contexto.
Esse esquema garante que a estrutura do kernel ser

simples, pois ele no se apropria de um processo


enquanto as estruturas de dados do kernel estiverem
em um estado incoerente.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.4 Despachante

Outro

componente envolvido na funo


escalonamento de CPU o despachante.

de

Despachante (Dispatcher)

o m dulo que d o
controle da CPU ao processo selecionado pelo
escalonador de curto prazo. Essa funo envolve:
Trocar o contexto.
Trocar o modo do usu rio.

Desviar para o local apropriado no programa do usu rio para

reiniciar esse programa.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.1.4 Despachante

O despachante deve ser o mais r pido poss vel. Ele

chamado durante a troca de processo.


Latncia

de despacho
tempo gasto para o
despachante interromper um processo e iniciar a
execu o de outro.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.2 Critrios de escalonamento


Diferentes

algoritmos de escalonamento tm
diferentes propriedades e podem favorecer uma
classe de processos mais que outra;

Os critrios usados incluem:


Utilizao de CPU mantm a CPU ocupada pelo mximo

de tempo possvel.
(Throughput) nmero de processos que so
completados por unidade de tempo. Para processos longos a
taxa pode ser de um processo por hora; para transaes
curtas, pode ser 10 processos por segundo.

Vazo

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.2 Critrios de escalonamento


Tempo de Retorno (Turnaround) o intervalo entre a

submisso de um processo at seu trmino. Esse tempo a


soma dos perodos gastos esperando para acessar a
memria, aguardando na fila de processos prontos,
executando na CPU e realizando operaes de E/S.
de espera tempo que um processo gasta
esperando na fila de prontos.

Tempo

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.2 Critrios de escalonamento


Tempo de resposta

o tempo que o processo leva para


come ar a responder, mas no o tempo que leva para gerar
a resposta. O tempo de resposta geralmente limitado pela
velocidade do dispositivo de sa da.

desej vel maximizar a utiliza o de CPU e a


Vazo, e minimizar o tempo de retorno, o tempo de
espera e o tempo de resposta.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.2 Critrios de escalonamento


Utilizao de CPU mxima
Vazo (Throughput) mxima
Tempo de retorno (Turnaround) mnimo

Tempo de espera mnimo


Tempo de resposta mnimo

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3 Algoritmos de escalonamento


O escalonamento de CPU trata do problema de

decidir qual dos processos na fila de prontos deve ser


entregue CPU.
Existem muitos algoritmos de escalonamento de CPU

diferentes.
A seguir veremos esses algoritmos:

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.1 Escalonamento
First-Come, First-Served (FCFS)
o algoritmo mais simples.
O processo que solicita a CPU primeiro, a recebe

primeiro.
A implementa o da pol tica FCFS

gerenciada com a fila FIFO.

Silberschatz, Galvin e Gagne (c) 2003

facilmente

Sistemas Operacionais com Java

6.3.1 Escalonamento
First-Come, First-Served (FCFS)
Quando um processo entra na fila de processos

prontos, seu PCB

ligado ao final da fila.

A CPU quando liberada aloca o processo que est

no

in cio da fila.
O tempo de espera m dio com a pol tica FCFS muitas

vezes

bem longo.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.1 Escalonamento
First-Come, First-Served (FCFS)
Processo

Burst de CPU
(milissegundos)

P1
P2
P3

24
3
3

Suponha que o processo chegue na ordem: P , P e P . O


diagrama de Gantt para o escalonamento ser:

Tempo de espera para P = 0; P = 24; P = 27


Tempo de espera mdio: (0 + 24 + 27)/3 = 17 milissegundos

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.1 Escalonamento
First-Come, First-Served (FCFS)

Suponha que o processo chegue na ordem


P ,P ,P
O diagrama de Gantt para o escalonamento ser:

Tempo de espera para P = 6; P = 0; P = 3


Tempo de espera mdio: (6 + 0 + 3)/3 = 3 milissegundos

Muito melhor do que no caso anterior


Efeito comboio processo curto atrs de processo longo

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.2 Escalonamento
Shortest Job First (SJF)
Esse algoritmo associa a cada processo a dura o do

seu pr ximo burst de CPU.


Usa esses tempos para escalonar o processo com o

tempo mais curto.


Caso dois processos tenham a mesma dura o do

burst de CPU, o escalonamento FCFS ser


para o desempate.

usado

O termo mais apropriado para este algoritmo seria o

pr ximo burst de CPU mais curto.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.2 Escalonamento
Shortest Job First (SJF)
Processo

Burst de CPU
(milissegundos)

P1
P2
P3
P4

7
4
1
4

Tempo de espera para P = 9; P = 1; P = 0; P = 5


Tempo de espera mdio: (9 + 1 + 0 + 5)/4 = 3,75 milissegundos

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.2 Escalonamento
Shortest Job First (SJF)
O escalonamento SJF

comprovadamente timo,
pois fornece o tempo m dio de espera m nimo para
um determinado conjunto de processos.

A dificuldade com o algoritmo

conhecer a dura o

do pr ximo pedido de CPU.


O escalonamento SJF

usado com frequncia em


escalonamento de longo prazo.

Ento ele no pode ser abordado no n vel de

escalonamento de CPU de curto prazo.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.2 Escalonamento
Shortest Job First (SJF)
Uma

t cnica utilizada
escalonamento SJF.

tentar

aproximar

Talvez no seja poss vel saber a dura o do pr ximo

burst de CPU, mas podemos tentar prever o seu valor.


Esperamos

que o pr ximo burst de CPU seja


semelhante em dura o aos anteriores.

Assim podemos selecionar o processo com o menor

burst de CPU previsto.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.2 Escalonamento
Shortest Job First (SJF)
O

algoritmo SJF pode ser preemptivo ou no


preemptivo.
Caso seja preemptivo quando um novo processo chega na

fila de processos prontos com tamanho de burst de CPU


menor do que o tempo restante do processo atualmente em
execuo, ele retirado. Esse esquema conhecido como
Shortest Remaining Time First (SRTF).
No-preemptivo uma vez dada ao processo, a CPU no

pode ser preemptada at que complete seu burst de CPU.

O SJF

o timo prov o menor tempo de espera


m dio para um determinado conjunto de processos.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

6.3.2 Escalonamento
Shortest Job First (SJF)
Processo

Chegada

Burst de CPU
(milissegundos)

P1
P2
P3
P4

0
2
4
5

7
4
1
4

SJF (no-preemptivo)

Tempo de espera para:


P1 = 0 (tempo de atendimento) 0 (chegada) = 0
P2 = 8 (tempo de atendimento) 2 (chegada) = 6
P3 = 7 (tempo de atendimento) 4 (chegada) = 3
P4 =12 (tempo de atendimento) 5 (chegada) = 7
Tempo de espera mdio = (0 + 6 + 3 + 7)/4 = 4 milissegundos
Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Exemplo de SJF preemptivo


Processo

chegada

Burst de CPU
(milissegundos)

P1
P2
P3
P4

0
2
4
5

7
4
1
4

SJF (preemptivo)

Tempo de espera para:


P1 = (0 atendimento 0 chegada) + (11 atendimento 2 processamento) = 9
P2 = (2 atendimento 2 chegada) + (5 atendimento 4 processamento) = 1
P3 = (4 atendimento 4 chegada) = 0
P4= (7 atendimento 5 chegada) = 2
Tempo de espera mdio = (9 + 1 + 0 +2)/4 = 3 milissegundos
Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Escalonamento por Prioridade


A prioridade est associada a cada processo, e a

CPU alocada ao processo com prioridade mais alta.


Processos de prioridade igual so escalonados na
ordem FCFS.
As prioridades so indicadas por algum intervalo de

n meros, como 0 a 7, ou 0 a 4095.


Contudo no existe um acordo geral com rela o a se

a maior ou a menor prioridade.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Escalonamento por Prioridade


Um valor de prioridade (inteiro)

associado a cada

processo.
A CPU

alocada para o processo com a prioridade


mais alta (menor inteiro = prioridade mais alta).
Escalonadores

preemptivo por prioridade interrompe o


processo em execuo quando o processo que chega na fila
de pronto tem maior prioridade sobre o processo em
execuo.

Escalonadores no-preemptivo no interrrompe o processo

em execuo mas coloca o processo que chegou com maior


prioridade no topo da fila de prontos.
Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Escalonamento por Prioridade


SJF um escalonamento por prioridade em que a

prioridade o prximo tempo de surto de CPU


previsto.
Problema => Estagnao processos de baixa

prioridade podem nunca ser executados.


Soluo => Envelhecimento conforme o tempo

passa, aumente a prioridade do processo.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Escalonamento por Prioridade


Processo

Prioridade

Burst de CPU
(milissegundos)

P1
P2
P3
P4
P5

3
1
3
4
2

10
1
2
1
5

No-preemptivo

Tempo de espera para P = 6; P = 0; P = 16; P = 18; P = 1


Tempo de espera mdio = (6 + 0 + 16 + 18 + 1)/5 = 8,2 milissegundos

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Escalonamento por Prioridade


Processo

Chegada

Prioridade

Burst de CPU
(milissegundos)

P1
P2
P3
P4
P5

0
1
2
3
4

Preemptivo

Silberschatz, Galvin e Gagne (c) 2003

3
4
2
3
1

10
1
5
2
1

Sistemas Operacionais com Java

Escalonamento por Prioridade


Preemptivo

Tempo de espera para:


P1 = (0 atendimento 0 chegada) + (8 atendimento 2 processamento) = 6
P2 = (18 atendimento 1 chegada) = 17
P3 = (2 atendimento 2 chegada) (5 atendimento 4 processamento) = 1
P4= (16 atendimento 3 chegada) = 13
P5= (4 atendimento 4 chegada) = 0
Tempo de espera mdio = (6 + 17 + 1+ 13 + 0)/5 = 7,4 milissegundos

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Escalonamento por Prioridade

Curiosidade

sobre

escalonamento

por

prioridade:
Dizem que, quando desativaram o IBM 7094 no MIT em

1973, encontraram um processo de baixa prioridade que

tinha sido submetido em 1967 e ainda no tinha sido


executado.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Algoritmo de escalonamento
Round-Robin (RR)
(RR Revezamento Circular) foi
projetado especialmente para sistemas de tempo
compartilhado.

Round-Robin

semelhante ao escalonamento FCFS, mas a


preempo acrescentada para alternar entre
processos.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Algoritmo de escalonamento
Round-Robin (RR)
Este escalonador introduz o conceito de QUANTUM

DE TEMPO que uma pequena unidade de tempo


que geralmente de 10 a 100 milissegundos.
A fila de prontos tratada como uma fila circular, o

escalonador de CPU percorre a fila de processos


prontos, alocando a CPU a cada processo por um
intervalo de tempo de at 1 quantum de tempo.

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Algoritmo de escalonamento
Round-Robin (RR)
Desempenho
Quantum de tempo grande FIFO
Quantum de tempo pequeno quantum precisa ser grande

com relao ao tempo de troca de contexto ou o custo


adicional ser muito alto

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Exemplo de RR com
Quantum de Tempo = 20
Processo

Burst de CPU
(milissegundos)

P1
P2
P3
P4

53
17
68
24

O diagrama de Gantt :

Normalmente, turnaround m dio mais alto do que SJF,


mas melhora a resposta

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Exemplo de RR com
Quantum de Tempo = 20

Tempo de espera para:


P1 = 0 + (77 atendimento 20 processamento) + (121 atendimento 97 processamento) = 81
P2 = 20

P3 = 37 + (97 atendimento 57 processamento)

(134 atendimento 117 processamento) = 94

P4= 57 + (117 atendimento 77 processamento) = 97

Tempo de espera mdio = (81 + 20 + 94 + 97)/4 = 73 milissegundos

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Quantum de Tempo e
Tempo de Troca de Contexto

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

O Turnaround varia Conforme o


Quantum de Tempo

Silberschatz, Galvin e Gagne (c) 2003

Sistemas Operacionais com Java

Referncias

Captulo 6 da referncia abaixo:


SILBERSCHATZ, ABRAHAM; GAGNE, GREG; GALVIN,
PETER BAES. Sistemas operacionais: com java. . Rio de
Janeiro: Elsevier, 2004.

Vous aimerez peut-être aussi