Você está na página 1de 21

Gerncia do Processador

Disciplina de Sistemas Operacionais

Mecanismos de escalonamento

Diversos mecanismos (algoritmos) foram sendo desenvolvidos ao longo dos anos; Cada um possui uma vantagem ou desvantagem, mas os escolhidos so aqueles que oferecem um bom desempenho, ou seja, evitam ao mximo o tempo de espera e mantm os recursos ocupados em ambientes de processos heterogneos. A seguir so citados alguns deles...

Principais Mecanismos de Escalonamento

FIFO Menor Job Primeiro (SJF) Cooperativo Circular (Round-Robin) Por prioridades Circular por prioridades Por mltiplas filas Mltiplas filas com retro-alimentao

FIFO

Acrnimo de First-In First-Out, ou seja, o 1 a entrar o 1 a sair Foi um dos primeiros algoritmos implementados Funciona como uma fila, tal como a de um banco ou supermercado, onde o caixa atende a uma pessoa de cada vez.

FIFO
Job 4 Job 3 Job 2 Job 1

CPU

No h preempo, ou seja, o prximo da fila s atendido quando o atual tiver encerrado todas as suas operaes Voc no acha chato ter que esperar por um cliente que entrou na frente e tem um monte de compras, enquanto que voc s quer comprar um pacote de bolachas?!

Menor Job Primeiro (SJF)

No algoritmo anterior (FIFO) os processos que processam menos (levam menos tempo) podem ser prejudicados se ficarem atrs dos que levam mais tempo. Lembre-se do caixa do supermercado! Neste caso, o tempo mdio que um Job espera para processar pode ser muito grande O algoritmo pode ser modificado de forma que estes (os menores) sejam processados antes. Com isto, o tempo de espera mdio diminui. O Shortest Job First ou algoritmo do Menor Job Primeiro busca resolver este problema.

Menor Job Primeiro (SJF)

O tempo mdio de espera (TME) calculado da seguinte forma:


(TE1 TE2 ... TEn ) TME = n
ou TME =

(i 1 TEi )
n

Ou seja, igual a soma dos tempos de espera de cada job, dividida pelo nmero de jobs.

Menor Job Primeiro (SJF)

O tempo de espera (TE) de cada job o tempo que ele levou para comear a processar:
JOB 4 JOB 3 1s 3s

JOB 2
JOB 1 0 TE1=0 3s 3 TE2=3

5s

8 TE3=8

9 TE4=9

12

tempo

TME = (0+3+8+9)/4 = 5s

Menor Job Primeiro (SJF)

No SJF esse tempo diminui:


JOB 4 JOB 3 JOB 2 JOB 1 0 1 3s 4 TE3=4 7 TE4=7 12 tempo 1s 5s 3s

TE1=0 TE2=1

TME = (0+1+4+7)/4 = 3s

Cooperativo

Nos algoritmos anteriores, os processos no podiam ser preemptados por tempo mximo de processamento (timesharing). Com a evoluo, os computadores passaram a ser multi-usurio ou multitarefa. Neste caso, uma maior interao com o usurio e uma melhor utilizao da CPU pelos programas tornou-se necessria. O mtodo cooperativo foi uma forma de tornar isso possvel...

Cooperativo

Neste caso, os processos cooperam uns com os outros, passando a CPU a um outro caso este seja necessrio. Uma forma de implementar este modelo criando uma fila ou caixa de mensagens, onde informaes sobre os eventos ocorridos so postadas:
Processamento da mensagem
xxxx yyyy zzzz hhhh iiii

Programa 1

Caixa de mensagens

(processo ativo)

Os processos verificam continuamente a caixa de mensagens, retirando e processando as que so endereadas a eles. Os processos ou eventos do sistema geram novas mensagens, que so colocadas no final da fila.

Cooperativo
Mensagem para programa 2 !
xxxx yyyy zzzz hhhh iiii

Programa 1 (processo ativo)

ativa

Programa 2 (inativo)

Caixa de mensagens

Se o processo perceber uma mensagem que no seja para ele, chama o programa adequado, passando assim a CPU ao prximo. Nas primeiras verses do Windows este sistema estava presente, e se chamava Multitarefa cooperativa!

Circular (Round-Robin)

O algoritmo anterior, apesar de cooperativo, no garantia a execuo de todos os programas, j que eles no poderiam ser obrigatoriamente parados. Em sistemas de timesharing o tempo de CPU deve ser compartilhado, sendo dada uma parcela de tempo a cada programa (time-slice). O Algoritmo Round-Robin (circular) resolve este problema, dando uma parcela de tempo a cada processo.

Circular (Round-Robin)

Os processos so ento colocados em uma fila circular e executados um-a-um. Quando seu tempo acaba, o processo volta para o final da fila. Quando um processo solicita E/S, vai para uma fila especfica (bloqueio ou espera) e, ao terminar a operao, volta para o final da fila.
4 3 2 1

CPU

Preempo por tempo Bloqueio ou espera

Circular (Round-Robin)

Os processos IO-Bound (que realizam operaes de E/S) so prejudicados, pois usam muito pouco a CPU e quando retornam de uma operao vo para o final da fila. Como o tempo de E/S demorado e imprevisvel, os processos IO-Bound podem no voltar na mesma posio e at mesmo perder vrias voltas, tal como um piloto de frmula 1 que entra nos boxes e tem problemas no carro, perdendo posies...

Por Prioridades

Neste caso, cada processo tem uma prioridade associada (FIFO por prioridade). Quando um processo de maior prioridade entra na fila, ele passa na frente, como num banco, onde os idosos tem a preferncia. A princpio, s existe preempo por prioridade, ou seja, os processos no saem da CPU por sua fatia de tempo ter acabado.

Por Prioridades

Este algoritmo recomendado para sistemas de processamento em tempo real, onde determinadas atividades ou processos tem prioridade sobre os demais e devem ser tratados no momento em que ocorrem. Um problema que surge o dos processos com menor prioridade no serem nunca processados se existirem processos de maior prioridade. Neste caso, o processo morre de fome (starvation). Em alguns casos o Sistema Operacional pode mudar a prioridade dos processos, minimizando este problema.

Circular por Prioridades

Semelhante ao anterior, onde os processos so interrompidos e substitudos se um de mais alta prioridade surge na fila (preempo por prioridade). Porm, os processos tambm so preemptados por tempo, como no Round-Robin.
4 3 2 1

CPU

Preempo por prioridade Preempo por tempo Bloqueio ou espera

Por Mltiplas Filas


Similar ao anterior, porm, com mais de uma fila, onde a prioridade est associada fila, no ao processo. Cada fila pode ter um mecanismo diferente de funcionamento e uma semntica ou utilidade diferente associada. No exemplo, temos uma FIFO de processos do sistema operacional (de alta prioridade), uma fila circular de mdia prioridade para os processos do usurio (interativos) e uma FIFO de baixa prioridade para processos batch ou CPU-Bound. A princpio, os processos no mudam de fila!
Alta prioridade: (FIFO) Mdia prioridade: (Circular) Baixa prioridade: (FIFO)

CPU

Mltiplas Filas com Retro-alimentao


Parecido com o anterior, mas os processos podem mudar de fila. Alm da prioridade, cada fila tem um tempo (time-slice) diferente. Um mecanismo adaptativo implementado de forma a avaliar o comportamento do processo e alterar sua fila. No exemplo, toda vez que um processo preemptado por tempo ele muda de fila, diminuindo sua prioridade e aumentando sua fatia de tempo (time-slice).
(FIFO adaptado)
Preempo por tempo

Alta prioridade

Menor tempo

(FIFO adaptado)
Preempo por tempo

Preempo por tempo

(Circular)
Baixa prioridade Maior tempo

Bibliografia

Machado, Francis B.; Maia, Luiz P. Arquitetura de Sistemas Operacionais. 3 edio. Rio de Janeiro: Ed. LTC, 2010.

Você também pode gostar