Você está na página 1de 43

Sistemas Operacionais

Escalonamento de Processo
Prof. Dr. Mrcio Andrey Teixeira

Quando um computador multiprogramado, ele muitas vezes tem variados


processos que competem pela CPU ao mesmo tempo;
Essa situao ocorre sempre que
simultaneamente no estado de pronto;

dois

ou

mais

processos

esto

A parte do SO que faz a escolha de qual processo deve ser executado


chamado de escalonador, e o algoritmo que usado chamado de
algoritmo de escalonamento;
Comportamento do processo
A figura abaixo mostra como os programas se comportam em relao a
utilizao da CPU

a)
Espera pela E/S

b)

Quando escalonar
Quando se deve escalonar ???
1 Quando se cria um novo processo !!!
2 No trmino de um processo !!!
3 Quando um processo bloqueado !!!!
4 Quando um processo executa o evento de E/S !!!

O algoritmo de escalonamento pode ser:


No preemptivo: O processo executa at o fim, sem ser interrompido;
Preemptivo: O processo executa em fatias de tempo (quantum)
determinado pelo sistema operacional.

Em sistemas multiprogramados, mltiplos processos so mantidos na memria


principal, cada qual alternando o uso do processados. Como fator principal da
multiprogramao, quatro tipo de escalonamento so possveis:
Longterm Scheduling: Determina os processos que sero admitidos no sistema.
Mediumterm Scheduling: Determina a adio de um nmero de processos que esto
parcialmente ou completamente na memria
Shortterm Scheduling: Determina quais processos sero executados pelo processador

Longterm Scheduling e Mediumterm Scheduling esto diretamente relacionados


com aspectos de performance, ou seja grau de multiprogramao. utilizado quando o
processo dever ser admitido no sistema e quando tomar deciso de trocar parte do
processo da memria primria para a memria secundria.
Shortterm Scheduling aborda com alto grau de performance o escalonamento de
processos que esto pronto para executar na memria principal.

A Figura abaixo mostra um exemplo da utilizao dos tipos de algoritmos de


escalonamento:

O objetivo do escalonador atribuir processos para serem executados pelos


processadores de modo a atingir parmetros de performance, tais como tempo
de resposta, vazo e eficincia do processados

Reorganizao dos tipos de algoritmos de escalonamento existente:

O escalonamento afeta a performance do sistema, pois determina quais


processos devero esperar e quais devero progredir. Isso envolve o
gerenciamento de filas, exemplo:

Longterm Scheduling: Determina quais programas sero admitidos pelo sistema para o
processamento, ou seja, controla o grau da multiprogramao.
- Em alguns sistemas, um processo que acabou de ser criado inicia-se na memria
secundria e, neste caso, ser adicionado a fila do escalonador intermedirio.
- Em sistemas operacionais de processamento em lote, processos recm criados so
direcionados para o disco e mantidos numa fila de lote.
- A deciso de quando criar um novo processo geralmente tomada como resultado do
grau de multiprogramao. Quanto mais processos existirem menor o tempo da tomada
para cada um ser executado, pois mais processos competem pelos recursos .

- Em termos de frequncia de execuo, Long term Scheduler desempenha o


gerenciamento grosseiro, e portanto, executado com baixa frequncia.

Medium-term Scheduling: Responsvel pela troca (swapping) entre memria


secundria e memria principal.
- Executa com mais freqncia que o anterior para o gerenciamento de swapping.
Short term Scheduling: Tambm conhecido como dispatcher, executado muito
frequntemente sendo responsvel pela tomada de desciso de qual processo a ser
executado (prximo processo).
- Este escalonamento executado quando da ocorrncia de um evento que conduza o
bloqueio do processo corrente, cria-se uma oportunidade de preenpo em favor de outro
processo. Exemplos desses eventos so:
- Clock da CPU;
- Interrupes de I/O;
- Chamadas do sistema operacional;
- O Short term Scheduling procura alocar o tempo do processador de tal maneira a
otmizar um ou mais aspectos do comportamento do sistema.

Os critrios utilizados para isso so distinguidos em: critrios orientados ao sistema e


critrios orientados aos usurios.
Critrios orientados aos usurios: Esto relacionados como os usurios ou os
processos quantificam o comportamento do sistema:
- Response Time: Para um processo interativo, este o tempo desde a submisso de
uma requisio at a sua resposta. A disciplina de escalonamento dever maximizar o
nmero de usurios interativos em um tempo de resposta aceitvel;
- Turnaround time: Este o intervalo de tempo entre a submisso de um processo e o
seu trmino de execuo. Este tempo inclui o tempo atual de execuo mais o tempo de
espera pelo recurso, incluindo a CPU. Est a mdia apropriada de um Job em Lote;
- Deadlines: Quando um deadline de um processo pode ser especificado, a disciplina do
algoritmo de escalonamento deve maximizar a porcentagem da execuo dos deadlines
existentes;

Critrios orientados ao sistema: Esto relacionados o comportamento do sistema em si.

- Throughput: A politica de escalonamento deve tentar maximizar o nmero de processos


completados por unidade de tempo. Esta a mdia de quanto trabalho iniciado
executado;
- Processor utilization: Porcentagem de tempo em que o processador est ocupado. Em
um sistema compartilhado, este um critrio significante;
- Balanceamento de recursos: A politica de escalonamento deve manter os recursos do
sistema ocupado;
- Priority: A poltica de escalonamento deve favorecer os processos com maiores
prioridades;

Os critrios citados so independente, sendo complicado otimiz-los em conjunto e


simultaneamente.
Ex:. Para prover um bom tempo de resposta, pode exigir do algoritmo de escalonamento
que freqentemente troque o contexto entre processos, o que aumenta o overhead do
sistema, ou seja, contribui para reduzir a vazo dos processos.

Na maioria dos sistemas operacionais interativos, o tempo de resposta o critrio principal;


Em muitos sistemas, cada processo atribudo uma prioridade e o escalonador ir sempre
escolher com mais alta prioridade sobre o de menor prioridade;
A figura a seguir ilustra um exemplo de escalonamento com filas de prioridade

Um dos problemas deste algoritmo que processos com baixa prioridade podem chegar a
no serem executados;
Soluo: alterar a prioridade do processo de acordo com seu histrico de execuo e em
funo do tempo;

Exemplo de um Overhead do sistema

Categorias de escalonamento de processo


Para ambientes diferentes de sistemas operacionais, so necessrios tipos
diferentes de algoritmos de escalonamento. Esses ambientes podem ser:
1. Lote;
2. Interativo (propsito geral);
3. Tempo real;
Em sistemas em Lote, no h terminal com usurios esperando impacientes
por uma resposta rpida. Conseqentemente, algoritmos com longo
intervalo de tempo para cada processo em geral so aceitveis.
Em sistemas com usurios interativos, a preempo para evitar que um
processo se aposse da CPU, e com isso negue servio aos outros.
Em sistemas com restrio de tempo real, a preempo estranhamente,
desnecessria algumas vezes, pois os processos sabem que no podem
executar por longos perodos de tempo e em geral fazem seus trabalhos e
bloqueiam rapidamente.

Categorias de escalonamento de processo


Um bom algoritmo de escalonamento projetado de acordo com os critrios de
utilizao j mencionados, isso dependendo o ambiente do sistema operacional
(em lote, interativo ou tempo real), mas existem alguns critrios que so
desejveis para todos os casos, exemplo:
Para todos os ambiente:
- Justia: Dar a cada processo uma poro justa da CPU;
- Aplicao da poltica: verificar se a poltica estabelecida cumprida;
- Equilbrio: manter ocupada todas as partes do sistema;
Sistemas em lote:
- Vazo (Througput): Maximizar o nmero de jobs por hora;
- Tempo de retorno: Minimizar o tempo de entre a submisso e o trmino
da execuo;
- Utilizao da CPU: manter a CPU ocupada todo o tempo;

Sistemas interativos:
- Tempo de resposta: responder rapidamente s requisies;
- Proporcionalidade: Satisfazer as perspectivas dos usurios;

Sistemas de tempo real:


- Cumprimento dos prazos: evitar a perda de dados;
- Previsibilidade: evitar a degradao da qualidade em sistemas
multimdias

Algoritmos de escalonamento (Lote)


Primeiro a chegar, primeiro a ser servido
O algoritmo (first come, first served FCFS) possui as seguintes
caractersticas:
- Com esse algoritmo, a CPU atribuda aos processos na ordem em que
eles a requisitam. Basicamente h uma fila nica de processos prontos;
- Quando o processo requisita a CPU ele executado. Quando chega mais
processos, estes so inseridos em uma fila.

Considere a seguinte tabela


Processo

Tempo de
chegada

Tempo de
servio

Primeiro a chegar, primeiro a ser servido


Grande vantagem desse algoritmo que: de fcil entendimento e de fcil
implementao.
Maior desvantagem desse algoritmo: quando tem-se programas orientados a
CPU e programas orientados a E/S. Por exemplo, um programa orientado a
CPU executa 1 segundo, e um programa orientado a E/S que executa pouco
tempo de CPU, mas necessita de executar mil leituras no disco antes de
terminar;
Em um algoritmo com preempo a cada 10 milessegundos (em vez de cada
um segundo), o processo terminaria em 10 segundos;

Job mais curto primeiro


Vejamos um outro algoritmo em lote no preemptivo que supe como
previamente conhecido todos os tempos de execuo.

Job mais curto primeiro


Considere a seguinte seqncia de execuo !

Tempo de retorno:
A = 8;
B = 12;
C = 16;
D = 20 ;
Tempo mdio
(A + B + C + D) / 4

Exemplo. Considere a tabela abaixo.


Tempo de
chegada

Tempo de
servio

P1

P2

P3

P4

P5

Processo

Job mais curto primeiro

Prximo de menor tempo restante


Uma verso preemptiva do FCFS o prximo menor tempo restante. Com
este algoritmo, o escalonador sempre escolhe o processo cujo o tempo de
execuo restante seja o menor.
Novamente, o tempo de execuo dever ser previamente conhecido.
Quando chega um novo job, seu tempo total comparado ao tempo restante
do processo em curso. Se para terminar, o novo job precisar de menos tempo
que o processo atual, ento esse ser suspenso e o novo job ser iniciado.

Algoritmos de escalonamento interativo


Escalonamento por alternncia circular (Round Robin)
- Um dos algoritmos mais antigos
- A cada processo atribudo um intervalo de tempo, o quantum, no qual
ele permitido executar;
- Se no final do quantum o processo no terminou, a CPU sofre uma
preempo e outro processo entra para executar;
- Quando um processo termina o seu quantum, ele colocado no final da
fila. Exemplo:

- O que interessa em um escalonador circular o tamanho do quantum.


A alternncia de um processo para outro requer uma certa quantidade de
tempo (Troca de contexto).
Vamos supor que para cada processo, a troca de contexto dure 1ms.
Suponha tambm que o quantum de 4 ms. Com este exemplo, aps 4 ms
de trabalho, a CPU gastar 1 ms para alternar o processo;
Nesse exemplo, 20% da CPU ser gasta com a troca de contexto dos
processos gerando um overhead muito alto.
Para melhorar a eficincia, vamos supor um quantum de 100 ms, agora o
tempo gasto com o overhead de 1% do tempo da CPU;
Considere o que pode acontecer quando 10 usurios de um sistema interativo
apertem a tecla <ENTER> quase ao mesmo tempo. Dez processos sero
alocados na lista de pronto para executar.
O que acontecer ?????????
Um quantum entre 25 a 50 ms bastante razovel

A Figura a seguir ilustra um a execuo do escalonamento RR com quantum


de 1 e 4 ms.
Tempo de
chegada

Tempo de
servio

P1

P2

P3

P4

P5

Processo

Escalonamento por prioridades


O escalonamento circular pressupe que todos os processos so igualmente
importantes. Para que haja diferenas externas de execuo, foi criado o
escalonamento por prioridade. A idia bsica simples:
- A cada processo atribudo uma prioridade, e o processo com maior
prioridade executado primeiro;
Mesmo em um PC comum com um nico proprietrio, pode haver mltiplos
processos com prioridades diferentes.
- Exemplo, um processo como um deamon de correio eletrnico deve ter
menor prioridade que um processo que atualiza um vdeo na tela;
Para evitar que processos de alta prioridade executem infinitamente, o
escalonador pode reduzir a prioridade do processo a cada execuo do
mesmo.
As prioridades so atribudas pelo S.O. No Linux, o comando nice altera a
prioridade de um processo de acordo com que o usurio desejar.

Muitas vezes conveniente agrupar processos em classes de prioridade e


usar o escalonamento de prioridade entre as classes, contudo em cada classe
usar o escalonamento circular.
A figura a seguir mostra um exemplo com quatro classes de prioridades:

Outro exemplo de escalonamento com classes de prioridades.

Medidas de Desempenho dos algoritmos de escalonamento


Considere as seguintes itens:
Tempo de chegada: Tempo em que o processo entra no sistema;
Tempo de servio: Tempo total de processamento;
Turneraund Time: Intervalo entre a entrada do processo no sistema e o seu
trmino;
Tt / Ts: Tempo de desempenho do processo;
Calcular o desempenho dos algoritmos de escalonamento utilizando a tabela
abaixo:
Tempo de
chegada

Tempo de
servio

P1

P2

P3

P4

P5

Processo

Medidas de Desempenho dos algoritmos de escalonamento

Determine as medidas de tempo para os algoritmos abaixo:


Job mais curto primeiro

Determine as medidas de tempo para os algoritmos abaixo:


Round Roubin: Q=1; Q=4

Escalonamento utilizado pelo sistema


operacional Linux
O problema bsico de escalonamento em sistemas operacionais como satisfazer
simultaneamente objetivos conflitantes: tempo de resposta rpido, bom throughput para
processos background, evitar postergao indefinida, conciliar processos de alta
prioridade com de baixa prioridade, etc. (Determinar a poltica de escalonamento)
Os sistemas operacionais Linux implementam o escalonamento da seguinte forma:
Os processos so divididos em trs grandes classes: processos interativos,
processos batch e processos tempo real.
Em cada classe, os processos podem ser ainda subdivididos em I/O bound ou CPU
bound de acordo com a proporo de tempo que ficam esperando por operaes de
entrada e sada ou utilizando o processador.
O escalonador do Linux no distingue processos interativos de processos batch,
diferenciando-os apenas dos processos tempo real. Como todos os outros
escalonadores UNIX, o escalonador Linux privilegia os processos I/O bound em relao
aos CPU bound de forma a oferecer um melhor tempo de resposta s aplicaes
interativas.

Escalonamento utilizado pelo sistema operacional Linux


O escalonador do Linux baseado em time-sharing, ou seja, o tempo do processador
dividido em fatias de tempo (quantum) as quais so alocadas aos processos. Se,
durante a execuo de um processo, o quantum esgotado, um novo processo
selecionado para execuo, provocando ento uma troca de contexto
Esse procedimento completamente transparente ao processo e baseia-se em
interrupes de tempo. Esse comportamento confere ao Linux um escalonamento do
tipo preemptivo.
Outra caracterstica do escalonador Linux a existncia de prioridades dinmicas. O
escalonador do Linux monitora o comportamento de um processo e ajusta
dinamicamente sua prioridade, visando a equalizar o uso do processador entre os
processos.
Processos que recentemente ocuparam o processador durante um perodo de tempo
considerado longo tm sua prioridade reduzida. De forma anloga, aqueles que esto
h muito tempo sem executar recebem um aumento na sua prioridade, sendo ento
beneficiados em novas operaes de escalonamento.
As prioridades dos processos podem ser modificadas pelo usurio, utilizando o comando
nice. As prioridades dos processos variam entre 20 e -19, sendo esta a prioridade mais
alta.

Escalonamento utilizado pelo sistema operacional Linux


Na realidade, o sistema Linux trabalha com dois tipos de prioridades: esttica e
dinmica. As prioridades estticas so utilizadas exclusivamente por processos de
tempo real e, neste caso, a prioridade do processo tempo real definida pelo usurio e
no modificada pelo escalonador.
O esquema de prioridades dinmicas aplicado aos processos interativos e batch. Aqui,
a prioridade calculada, considerando-se a prioridade base do processo e a quantidade
de tempo restante em seu quantum.
O escalonador do Linux executa os processos de prioridade dinmica apenas quando
no h processos de tempo real. Em outros termos, os processos de prioridade esttica
recebem uma prioridade maior que os processos de prioridade dinmica. Para
selecionar um processo para execuo, o escalonador do Linux prev trs polticas
diferentes :

Escalonamento utilizado pelo sistema operacional Linux


SCHED_FIFO: Essa poltica valida apenas para os processos de tempo real. Na
criao, o descritor do processo inserido no final da fila correspondente sua
prioridade. Nessa poltica, quando um processo alocado ao processador, ele executa
at que uma de trs situaes ocorra: (i) um processo de tempo real de prioridade
superior torna-se apto a executar; (ii) o processo libera espontaneamente o processador
para processos de prioridade igual sua; (iii) o processo termina, ou bloqueia-se, em
uma operao de entrada e sada ou de sincronizao.
SCHED_RR: Na criao, o descritor do processo inserido no final da fila
correspondente sua prioridade. Quando um processo alocado ao processador, ele
executa at que uma de quatro situaes ocorra: (i) seu perodo de execuo (quantum)
tenha se esgotado nesse caso o processo inserido no final de sua fila de prioridade;
(ii) um processo de prioridade superior torna-se apto a executar; (iii) o processo libera
espontaneamente o processador para processos de prioridade igual a sua; (iv) o
processo termina, ou bloqueia-se, em uma operao de entrada e sada ou de
sincronizao. Essa poltica tambm s vlida para processos de tempo real.

Escalonamento utilizado pelo sistema operacional Linux


Se o processo a ser desbloqueado possuir uma prioridade mais alta, o escalonador
acionado, e ocorre uma troca de processo.
- A terceira, e ltima forma de execuo lazy, quando um processo explicitamente
invoca o escalonador atravs de uma chamada de sistema do tipo yield. Essa
chamada de sistema permite a um processo passar sua vez de execuo a outro
processo, e, para isso, parece claro, necessrio executar o escalonador.

Escalonamento utilizado pelo sistema operacional Linux


SCHED_OTHER: Corresponde a um esquema de filas multinvel de prioridades
dinmicas com timesharing. Os processo interativos e batch recaem nessa categoria.
O escalonador do Linux executado a partir de duas formas diferentes:
- A primeira a forma direta atravs de uma chamada explcita rotina que implementa
o escalonador. Essa a maneira utilizada pelo ncleo do Linux quando, por exemplo,
detecta que um processo dever ser bloqueado em decorrncia de uma operao de
entrada e sada ou de sincronizao.
- A segunda forma, denominada de lazy, tambm conseqncia do procedimento de
escalonamento, ocorrendo tipicamente em uma das duas situaes:
- A primeira dessas situaes a rotina de tratamento de interrupo de tempo que
atualiza os temporizadores e realiza a contabilizao de tempo por processo. Essa
rotina, ao detectar que um processo esgotou seu quantum de execuo aciona o
escalonador para que seja efetuada uma troca de processo.
- A segunda situao ocorre quando um processo de mais alta prioridade
desbloqueado pela ocorrncia do evento que esperava. A parte do cdigo que efetua
o desbloqueio, isto , trata os eventos de sincronizao e de entrada e sada,
consulta a prioridade do processo atualmente em execuo e compara-a com a do
processo que ser desbloqueado.

Escalonamento utilizado pelo sistema operacional


Windows 2000
O escalonador do Windows 2000 preemptivo com prioridades. As prioridades so
organizadas em duas classes: tempo real e varivel.
Cada classe possui 16 nveis de prioridades, sendo que as threads da classe tempo real
tm precedncia sobre as threads da classe varivel, isto , sempre que no houver
processador disponvel, uma thread de classe varivel preemptada em favor de uma
thread da classe tempo real.
Todas as threads prontas para executar so mantidas em estruturas de filas associadas
a prioridades em cada uma das classes. Cada fila atendida por uma poltica Roundrobin.
A atribuio de prioridades a threads diferente para cada uma das classes. Enquanto
na classe de tempo real, as threads possuem prioridade fixa, determinada no momento
de sua criao, as threads da classe varivel tm suas prioridades atribudas de forma
dinmica (por isso o nome de varivel para essa classe).

Escalonamento utilizado pelo sistema operacional Windows


2000
Dessa forma, uma thread de tempo real, quando criada, recebe uma prioridade e ser
sempre inserida na fila dessa prioridade, ao passo que uma thread da classe varivel
poder migrar entre as diferentes filas de prioridades.
Em outros termos, o Windows 2000 implementa um esquema de mltiplas filas para as
threads da classe real e mltiplas filas com realimentao para as threads da classe
varivel. A figura a seguir ilustra o sistema de prioridades de Wndows 2000.

Escalonamento utilizado pelo sistema operacional Windows


2000
Na classe varivel, a prioridade de uma thread estabelecida a partir de dois
parmetros, um vnculado prpria thread e outro, ao processo a que pertence.
Um objeto processo, durante sua criao, recebe um valor, entre zero e 15 inclusive,
para sua prioridade de base. Cada thread recebe uma prioridade inicial, variando 2
unidades acima ou abaixo da prioridade de base do processo, que indica sua prioridade
relativa dentro desse processo.
A prioridade de uma thread varia durante a sua vida, mas nunca assumir valores
inferiores a sua prioridade base nem superiores a 15. O critrio empregado para variar a
prioridade de uma thread o tempo de utilizao do processador.
Se a thread for preemptada por ter executado durante todo o quantum de tempo que lhe
foi atribudo, o escalonador do Windows 2000 diminui sua prioridade; caso contrrio, sua
prioridade aumentada. Em outros termos, o escalonador do Windows 2000 tende a
atribuir prioridades mais elevadas para threads do tipo I/O bound.

Escalonamento utilizado pelo sistema operacional Windows


2000
Em mquinas monoprocessadoras, a thread de mais alta prioridade est sempre ativa a
menos que esteja bloqueada esperando por um evento (E/S ou sincronizao). Caso
exista mais de uma thread com um mesmo nvel de prioridade o processador
compartilhado de forma round-robin entre essas threads.
Em um sistema multiprocessador com n processadores, as threads de mais alta
prioridade executam nos n-1 processadores extras. As threads de mais baixa prioridade
disputam o processador restante.

Você também pode gostar