Você está na página 1de 49

Processos

Escalonamento da CPU

Conceitos Bsicos Escalonamento de Processador Critrios de Escalonamento Escalonamento No Preemptivo Escalonamento Preemptivo Mecanismos de Interrupo em Intervalos de Tempo Prioridades Algoritmos de Escalonamento Escalonamento para Vrios Processadores Escalonamento em Tempo Real Estudo de Casos: Escalonamento no Unix, Windows XP,

Linux e de Threads
Escalonamento de CPU

Eduardo Nicola F. Zagari

Multiprogramao: corresponde a diversos programas distintos

executando em um mesmo processador


maximiza utilizao da CPU

No entanto, somente um processo executado a cada instante

em um processador
Toda vez que um processo tiver que esperar (evento ou E/S)

outro processo usa a CPU (ciclo de vida de um processo)


A execuo de um processo consiste de um ciclo de execuo de

CPU e espera de I/O escalonado pronto interrupo E/S ou evento


bloqueado

execuo espera por E/S ou evento

Escalonador

Eduardo Nicola F. Zagari

Escalonamento de CPU

Eduardo Nicola F. Zagari

Escalonamento de CPU

Conhecido como Escalonador de Processsos Determina/Escolhe, dentre os processos que esto em memria,

qual processo ser associado a uma CPU, quando esta estiver disponvel
Age sobre os processos prontos para executar (processos do

estado de pronto)
Segue uma poltica de escolha Executado vrias vezes por segundo Reside permanentemente na memria

Eduardo Nicola F. Zagari

Escalonamento de CPU

Situao para escalonamento:


processo passa do estado em execuo para pronto processo passa de em execuo para espera/bloqueado processo passa de espera/bloqueado para pronto processo termina

Preempo: quando um processo em estado de pronto tem

precedncia sobre o que est usando a CPU.


Escalonamenteo No-Preemptivo: no contempla as

preempes, isto , o escalonador no interrompe os processos que esto em execuo.


Escalonamento Preemptivo: que contempla a preempo das

tarefas, isto , provoca uma interrupo forada de um processo para que outro, com a preempo, possa usar a CPU.

Eduardo Nicola F. Zagari

Escalonamento de CPU

Determina qual processo no estado pronto para executar ser

associado a uma CPU, quando esta estiver disponvel


executado vrias vezes por segundo Reside permanentemente na memria

Eduardo Nicola F. Zagari

Escalonamento de CPU

Determina quais os processos que podero competir pela CPU Responsvel pela suspenso e ativao de processos, o que

signica utuaes na carga do sistema visando um melhor balanceamento


Atua como um buffer entre a admisso de jobs e a associao

da CPU aos processos que constituem os jobs admitidos


Job: um conjunto de atividades necessrias para a realizao

do trabalho computacional requerido por um usurio (divide-se em diversos steps (passos) )

Eduardo Nicola F. Zagari

Escalonamento de CPU

Determina quais jobs sero admitidos e podero competir pelos

recursos do sistema (admission scheduling)


Permite que no existam jobs em demasia no sistema, o que

acarretaria uma eterna competio pelos recursos


Todo job, uma vez admitido, acarreta na criao de um ou mais

processos

Eduardo Nicola F. Zagari

Escalonamento de CPU

O mdulo Dispatcher d o controle da CPU para o processo

selecionado pelo escalonador de curto prazo. Isto envolve:


Troca de contexto Mudana do processador para o Modo Usurio Salto para a localizao adequada no programa do usurio para o

seu reincio Latncia de Despacho tempo que leva para o dispatcher parar

um processo e reiniciar a execuo de outro

Eduardo Nicola F. Zagari

10

Escalonamento de CPU

Utilizao da CPU: % do tempo que a CPU ca ocupada (0

100%) Throughput: nmero de processos completados por unidade de tempo Turnaround: intervalo de tempo entre a submisso de um processo e sua nalizao (soma dos intervalos esperando para ser carregado na memria, la de pronto, em execuo e em espera) Tempo de espera: tempo que cada processo ca na la de pronto Tempo de resposta: tempo que o processo demora para produzir alguma resposta uma requisio (importante para processos interativos)

desejvel maximizar os 2 primeiros e minimizar os 3 ltimos Para sistemas interativos, importante minimizar a varincia do

tempo de resposta (previsibilidade)

Eduardo Nicola F. Zagari

11

Escalonamento de CPU

Objetivos das polticas de escalonamento: maximizar a utilizao da CPU


maximizar o throughput minimizar o turnaround minimizar o tempo de espera minimizar o tempo de resposta ser justa maximizar o nmero de usurios interativos ser previsvel minimizar o uso de recursos balancear o uso de recursos balancear usurios interativos com os demais priorizar processo que segurem recursos chave no degradar o sistema etc

Eduardo Nicola F. Zagari

12

Escalonamento de CPU

No permite a retirada da CPU de um processo aps este t-la

conseguido
Tempo de resposta mais previsvel

mais justo?
Processos curtos precisam esperar pelos longos Permite monopolizao da CPU

Eduardo Nicola F. Zagari

13

Escalonamento de CPU

Permite que a CPU seja retirada de um processo para ser

entregue a outro
Garante que os processos possam progredir uniformemente No permite a monopolizao da CPU Usado para:
atendimento rpido de processos mais importantes tratamento de interrupes em sistemas de tempo real atender os usurios em sistemas de tempo compartilhado

A mudana de contexto envolve sobrecarga

Eduardo Nicola F. Zagari

14

Escalonamento de CPU

Para prevenir processos do usurio de monopolizar o sistema

(CPU), por acidente ou de propsito, uma interrupo por tempo usada

quantum ou time-slice
o tempo limite para uso da CPU, aps o qual ocorre a

interrupo por tempo Um processo do usurio, uma vez interrompido por trmino do

seu quantum, volta la de pronto para executar e permite o escalonamento de outro processo
Um processo em execuo mantm controle sobre a CPU at:
voluntariamente liber-la quantum time expirado outra interrupo exija ateno da CPU para que seja tratada erro de execuo
Eduardo Nicola F. Zagari 15 Escalonamento de CPU

Podem ser xas (estticas) durante a vida do processo ou

modicveis (dinmicas)
Podem ser associadas externamente ou de maneira automtica Podem ser calculadas e associadas de forma racional ou

arbitrria

Eduardo Nicola F. Zagari

16

Escalonamento de CPU

FIFO (First-In First-Out) (tambm conhecido por FCFS (First-

Come First-Served))
SJF (Shortest Job First) Round-Robin SRT (Shortest Remaining Time) Prioridade Mltiplas Filas Mltiplas Filas com Realimentao Escalonamento para Vrios Processadores Escalonamento de Tempo Real
Earliest Deadline

Eduardo Nicola F. Zagari

17

Escalonamento de CPU

No preemptivo (Uma vez em execuo, executado at o

trmino)
O processo que chegar primeiro (rst-in) o primeiro a ser

selecionado para execuo (rst-out)


Implementado atravs de la Inicialmente criado para sistemas batch Injusto com jobs curtos (veja exemplos!) Ineciente para sistemas de tempo compartilhado Combinado com outros esquemas

Eduardo Nicola F. Zagari

18

Escalonamento de CPU

Suponha que os processos cheguem na ordem P1, P2 e P3

Turnaround mdio = ( 10 + 12 + 14 ) / 3 = 12 u.t. Tempo de espera mdio = ( 0 + 10 + 12) / 3 = 7,33 u.t.

Eduardo Nicola F. Zagari

19

Escalonamento de CPU

Suponha que os processos cheguem na ordem P2, P3 e P1

Turnaround mdio: ( 14 + 2 + 4 ) / 3 = 6,67 u.t. Tempo de espera mdio = ( 4 + 0 + 2) / 3 = 2 u.t.

Eduardo Nicola F. Zagari

20

Escalonamento de CPU

No preemptivo O processo com o menor tempo para ser completado

escolhido
quando a informao sobre o tempo de execuo no se encontra

disponvel

deve ser estimado ou usa-se o da ltima vez

desempate pode ser, por exemplo, por FIFO

Reduz tempo mdio de espera

mais do que isto: SJF timo, pois d o tempo de espera mnimo para um dado conjunto de processos espera

No entanto, apresenta uma grande varincia no tempo de

Eduardo Nicola F. Zagari

21

Escalonamento de CPU

Turnaround mdio FIFO: (6+14+21+24)/4 = 16,25 u.t. Tempo de espera mdio: (0 + 6 + 14 + 21)/4 = 10,25 u.t.

Turnaround mdio SJF: (3 + 9 + 16 + 24) / 4 = 13 u.t. Tempo de espera mdio: (3 + 16 + 9 + 0) / 4 = 7 u.t.


Eduardo Nicola F. Zagari 22 Escalonamento de CPU

O processo em execuo libera voluntariamente a CPU

retornando para a la de pronto sem a interrupo do sistema operacional (no preemptivo)


Um programa mal escrito pode monopolizar a CPU Fila de mensagem vericada periodicamente (Win 3.11)

Eduardo Nicola F. Zagari

23

Escalonamento de CPU

Dene-se uma unidade de tempo denominada quantum ou time-

slice (usualmente de 10 a 100ms) que corresponde ao tempo limite para uso da CPU por cada processo
Aps este tempo ter sido passado, o processo sofre preempo

e colocado no nal da la de pronto


A la de pronto tratada como uma la circular (FIFO) O escalonador pega o primeiro processo da la de pronto para

ser executado e dene um timer para o tempo de 1 quantum


Se o tempo de execuo for maior que 1 quantum, o timer gera

uma interrupo e o SO faz o chaveamento de contexto Projetado para sistemas de tempo compartilhado
Se houver n processos na la de pronto e o tempo do quantum for

q, ento cada processo obtm 1/n do tempo da CPU e fatias de no mximo q unidades de tempo por vez. Nenhum processo espera por mais que (n-1)q unidades de tempo.

Eduardo Nicola F. Zagari

24

Escalonamento de CPU

Claramente preemptivo O tempo mdio de espera alto O desempenho depende do tamanho do quantum
se for muito grande (innito)

tende a

FIFO

se for muito pequeno, o overhead com ochaveamento de

contexto se torna alto demais...

Eduardo Nicola F. Zagari

25

Escalonamento de CPU

Quantum = 1 u.t.

Turnaround mdio RR: (16 + 8 + 9) /3 = 11 u.t. Tipicamente, o turnaround mdio maior que o do SJF, mas o

tempo de resposta melhor

Eduardo Nicola F. Zagari

26

Escalonamento de CPU

a contra-partida preemptiva do SJF O processo com menor tempo para ser completado escolhido Um processo em execuo interrompido se um novo processo,

com menor tempo para ser completado aparece na la de pronto


Apresenta sobrecarga maior que o SJF
Variaes:
Tempo para ser completado pequeno Tempo para ser completado do processo que chega pouco

menor

Eduardo Nicola F. Zagari

27

Escalonamento de CPU

Turnaround mdio SRT: ((17-0)+(5-1)+(26-2)+(10-3))/4 = 13 u.t. E qual o turnaround mdio se fosse escalonado segundo SJF?
Resp.: 14,25 u.t.
Escalonamento de CPU

Eduardo Nicola F. Zagari

28

Uma prioridade associada a cada processo e a CPU alocada

ao processo de maior prioridade


SJF um caso de escalonamento por prioridade em que a

prioridade maior para os processos de menor tempo de execuo


A prioridade geralmente representada por um nmero (entre

0-7 ou 0-255), mas no existe uma conveno de qual nmero (o maior ou o menor) o de maior prioridade
Pode ser preemptivo ou no SJF um Escalonamento por Prioridade onde a prioridade

denida de acordo com o tempo de CPU estimado do processo

Eduardo Nicola F. Zagari

29

Escalonamento de CPU

Turnaround mdio: (16+1+6+18+19)/4 = 15 u.t.

Eduardo Nicola F. Zagari

30

Escalonamento de CPU

Prioridade denida:
internamente: usa alguma quantidade mensurvel para computar a

prioridade.

(dinmica)

Ex.: memria, arq. abertos, razo I/O por CPU usada

externamente: importncia do processo, departamento de origem,

fatores polticos, hierarquia.

(esttica)

Problema: starvation - processos de baixa prioridade podem

car indenidamente no estado de pronto (IBM 7094 no MIT processo rodando por 6 anos)
Soluo: aumentar progressivamente a prioridade dos

processos que esto aguardando

Eduardo Nicola F. Zagari

31

Escalonamento de CPU

Os processos so previamente divididos em grupos em funo do

tipo de processamento realizado


Interativo (foreground) Batch (background)

A cada grupo aplicado um mecanismo de escalonamento

adequado
Interativo RR Batch FIFO

Alta prioridade

Fila de processos do sistema Fila de processos interativos

Possibilidade de starvation

Baixa prioridade

Fila de processos batch

utra alternativa: time-slices entre las (ex.: 80% para os interativos O

em RR e 20% para os batch em FIFO)


Eduardo Nicola F. Zagari 32 Escalonamento de CPU

Os processos no permanecem em uma mesma la at o trmino

do processamento O SO faz um ajuste dinmico (mecanismo adaptativo) para ajustar os processos em funo do comportamento do sistema Os processos no so previamente associados s las, mas direcionados pelo sistema entre as diversas las com base no seu comportamento Parmetros:
nmero de las, algoritmo de escalonamento para cada la, mtodo para mudar (promover ou rebaixar) o processo de la, mtodo para determinar em que la um processo entra

Mtodo mais complexo

Eduardo Nicola F. Zagari

33

Escalonamento de CPU

Um exemplo (existem outras variaes):

Processos novos entram no m da primeira la Nas las, os processos so escalonados segundo Round Robin O quantum varia de uma la para outra (aumenta em direo s

ltimas, quantum 1 para a primeira, 2 para a segunda, etc)


Os processos das primeiras las tm maior prioridade (um processo

no pode ser escolhido, a menos que, as las anteriores estejam vazias) Um processo em execuo interrompido, caso aparea um processo em uma das las anteriores sua
Sempre que um processo esgotar seu quantum , ele suspenso na la

da prxima classe de prioridade


Se o processo liberar a CPU, sem preempo, sai da estrutura de las Quando um processo volta estrutura, colocado em uma la de

prioridade mais alta do que estava antes de sair

Eduardo Nicola F. Zagari

34

Escalonamento de CPU

Alta prioridade

Fila 1

Menor quantum

Fila 2

Fila 3

...
Baixa prioridade Fila N Maior quantum

Eduardo Nicola F. Zagari

35

Escalonamento de CPU

Vantagens de uma poltica como esta:


Processos CPU-bound vo caindo em las de prioridade mais baixas,

sendo escolhidos para rodar com menos freqncia; no entanto, eles recebem quanta maiores, necessitando receber a CPU por um nmero menor de vezes, o que reduz a quantidade trocas de contexto
Processos interativos (I/O-bound), normalmente pequenos, so

favorecidos, reduzindo-se o tempo de resposta mdio do sistema


Processos interativos grandes, aps interao com usurios, retornam

em las de prioridade mais alta Problema: pressionar <ENTER> em terminais processando longos

jobs no interativos (CPU-bound)


Moral da histria: implementar uma boa poltica na prtica

muitssimo mais difcil do que idealiz-la

Eduardo Nicola F. Zagari

36

Escalonamento de CPU

Escalonamento mais complexo Processadores idnticos (homogneos)


Compartilhamento de carga (load sharing) Fila por processador: processador pode car ocioso Fila nica: compartilhamento de dados (problemas!)

Abordagens:
Processamento simtrico
Cada processador faz seu prprio escalonamento (excluso

mtua!)
Mestre-Escravo: processamento assimtrico
um algoritmo, executado em um processador reservado para

esse m, o escalonador dos outros processadores (alivia a necessidade de compartilhamento de dados)

Eduardo Nicola F. Zagari

37

Escalonamento de CPU

Sistemas de tempo real: requisitos temporais


Tempo compartilhado puro no funciona Hard real-time: requisitos temporais rgidos requer que uma tarefa

crtica seja completada dentro de um tempo garantido Ex.: trfego areo, armas, sistemas mdicos, controle industrial, etc Soft real-time: requisitos temporais exveis requer que um processo crtico receba prioridade sobre outros menos importantes Ex.: multimdia, realidade virtual, etc Sistemas de TR rgidos: processadores dedicados Sistemas de TR exveis:
Implementados com outros esquemas Processos crticos devem ter prioridade sobre outros Implica na degradao do servio dos outros usurios

Eduardo Nicola F. Zagari

38

Escalonamento de CPU

Escalonamento baseado em prioridades dinmicas A idia bsica atribuir sempre a maior prioridade ao processo que

apresentar o prazo mais prximo a expirar (earliest deadline)


Sempre que um novo processo chega na la de pronto, so

calculadas e atribudas novas prioridades a todos


O Earliest Deadline um algoritmo timo, isto , o fator de

utilizao da CPU 100%


Se os processos no forem independentes:
Problema da Inverso de Prioridades
Soluo: Protocolo de Herana de Prioridade

Conseqncia: queda no fator de utilizao da CPU

Eduardo Nicola F. Zagari

39

Escalonamento de CPU

Eduardo Nicola F. Zagari

40

Escalonamento de CPU

Unix Sistema de Tempo Compartilhado


Meta: bom tempo de resposta aos processos interativos

Escalonamento de 2 nveis Escalonador de baixo nvel: Filas Mltiplas (prioridade) com

realimentao
Processos executando em modo kernel: prioridade negativa (que so as

maiores) Processos executando em modo usurio: prioridade positiva


Roda primeiro processo da la prioritria no vazia interrupes de

tempo: incremento do contador de utilizao da CPU (que aumentar o valor da prioridade do processo)
Round-Robin dentro de cada la A cada segundo as prioridades so recalculadas:
Contadores de uso da CPU divididos por 2 Nova prioridade = base + nice + contador de uso da CPU

Processos interativos voltam do bloqueio com prioridade negativa.


Eduardo Nicola F. Zagari 41 Escalonamento de CPU

Eduardo Nicola F. Zagari

42

Escalonamento de CPU

Dois algoritmos: time-sharing e real-time Time-sharing


Prioridades baseadas em crditos processo com mais crditos o

prximo a ser escalonado Crdito subtrado quando ocorre uma interrupo por tempo
Quando crdito = 0, outro processo escolhido Quando todos os processos tm crdito = 0, ocorre

recarregamento de crditos Baseado em alguns fatores como prioridade e histrico Real-time


Soft real-time (TR Flexvel) Aderente ao Posix.1b duas classes
FIFO e RR Processos de maior prioridade sempre executam primeiro

Eduardo Nicola F. Zagari

43

Escalonamento de CPU

Escalonamento Local Como a biblioteca de threads decide

qual thread do usurio executar quando h um LWP disponvel


Escalonamento Global Como o kernel decide qual kernel

thread deve ser a prxima a ser executada

Eduardo Nicola F. Zagari

44

Escalonamento de CPU

#include <pthread.h> #include <stdio.h> #define NUM THREADS 5 int main(int argc, char *argv[]) { int i; pthread t tid[NUM THREADS]; pthread attr t attr; /* get the default attributes */ pthread attr init(&attr); /* set the scheduling algorithm to PROCESS or SYSTEM */ pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM); /* set the scheduling policy - FIFO, RT, or OTHER */ pthread attr setschedpolicy(&attr, SCHED OTHER); /* create the threads */ for (i = 0; i < NUM THREADS; i++) pthread create(&tid[i],&attr,runner,NULL);
Eduardo Nicola F. Zagari 45 Escalonamento de CPU

/* now join on each thread */ for (i = 0; i < NUM THREADS; i++) } /* Each thread will begin control in this function */ void *runner(void *param) { printf("I am a thread\n"); pthread exit(0); } pthread join(tid[i], NULL);

Eduardo Nicola F. Zagari

46

Escalonamento de CPU

JVM usa um algoritmo de escalonamento baseado em

prioridades e preemptivo
Uma la FIFO usada se houver mltiplas threads com a

mesma prioridade
JVM escalona uma thread para executar quando:
1. A thread em execuo sai do estado de executvel 2. Uma thread de maior prioridade entra no estado executvel

* Nota a JVM no especica se threads so Time-Sliced ou no

Eduardo Nicola F. Zagari

47

Escalonamento de CPU

Uma vez que a JVM no assegura Time-Slicing, o mtodo yield() pode ser usado: while (true) { } // perform CPU-intensive task . . . Thread.yield();

Isto passa o controle a uma outra thread de igual prioridade

Eduardo Nicola F. Zagari

48

Escalonamento de CPU

Prioridade

Comentrio Prioridade Mnima de Thread Prioridade Mxima de Thread Prioridade Default de Thread

Thread.MIN_PRIORITY Thread.MAX_PRIORITY Thread.NORM_PRIORITY

As prioridades podem ser ajustadas usando-se o mtodo setPriority(): setPriority(Thread.NORM_PRIORITY + 2);

Eduardo Nicola F. Zagari

49

Escalonamento de CPU

Você também pode gostar