Sistemas Operacionais

Propaganda
Sistemas Operacionais
Escalonamento
Gerência do Processador
• Com o surgimento dos sistemas multiprogramáveis, nos quais múltiplos
processos poderiam permanecer na memória principal compartilhando o
uso da CPU, a gerência do processador tornou-se uma das atividades
mais importantes em um sistema operacional.
• A partir do momento em que diversos processos podem estar no estado
de pronto, critérios devem ser estabelecidos para determinar qual
processo será escolhido para fazer uso do processador.
Execução
Espera
Pronto
Gerência do Processador
Critérios de Escalonamento
• Utilização do Processador (CPU)
É o tempo gasto pela CPU na execução dos processos do usuário.
Na maioria dos sistemas é desejável que o processador permaneça a
maior parte do seu tempo ocupado. Uma utilização na faixa de 30%
indica um sistema com uma carga de processamento baixa, enquanto
na faixa de 90% indica um sistema bastante carregado, próximo da sua
capacidade máxima.
• Throughput (Vazão)
Throughput representa o número de processos executados em um
determinado intervalo de tempo.
Quanto maior o throughput, maior o número de tarefas executadas em
função do tempo.
A maximização do throughput é desejada na maioria dos sistemas.
Gerência do Processador
Critérios de Escalonamento
• Tempo de Processador (CPU)
É o tempo que um processo leva no estado de execução durante seu
processamento.
As políticas de escalonamento não influenciam no tempo de
processador de um processo, sendo este tempo função apenas do
código da aplicação e da entrada de dados.
• Tempo de Espera
É o tempo total que um processo permanece na fila de pronto durante
seu processamento, aguardando para ser executado.
A redução do tempo de espera dos processos é desejada pela maioria
das políticas de escalonamento.
Gerência do Processador
Critérios de Escalonamento
• Tempo de Turnaround
É o tempo que um processo leva desde a sua criação até seu término.
As políticas de escalonamento buscam minimizar o tempo de
turnaround.
• Tempo de Resposta
É o tempo decorrido entre uma requisição ao sistema ou à aplicação e o
instante em que a resposta é exibida.
Em sistemas interativos, podemos entender como o tempo decorrido
entre a última tecla digitada pelo usuário e o início da exibição do
resultado no monitor.
Gerência do Processador
Escalonamento Não-Preemptivo e Preemptivo
• Não-Preemptivo
Neste tipo de escalonamento, quando um processo está em execução,
nenhum evento externo pode ocasionar a perda do uso da CPU.
O processo somente sai do estado de execução caso termine seu
processamento ou execute instruções do próprio código que ocasionem
uma mudança para o estado de espera.
• Preemptivo
Neste tipo de escalonamento o sistema operacional pode interromper
um processo em execução e passá-lo para o estado de pronto, com o
objetivo de alocar outro processo na CPU.
Gerência do Processador
FIFO ou FCFS
• No escalonamento FIFO (first in, first out) também conhecido como
FCFS (first come, first served), o processo que chegar primeiro ao
estado de pronto é selecionado para execução.
• Sempre que chega um processo no estado de pronto, ele é colocado no
final da fila.
• Se um processo for para o estado de espera, o próximo da fila é
escalonado.
• Quando um processo do estado de espera volta para o estado de
pronto, este vai para o final da fila.
Gerência do Processador
FIFO ou FCFS
Término
Fila dos processos no estado de Pronto
Criação
Execução
Espera
Gerência do Processador
SJF
• No escalonamento SJF (shortest job first), o algoritmo de
escalonamento seleciona o processo que tiver o menor tempo de
processador (burst) ainda por executar.
• Dessa forma, o processo em estado de pronto que necessitar de menos
tempo de CPU para terminar seu processamento é selecionado para
execução.
• Uma implementação do escalonamento SJF com preempção é
conhecida como escalonamento SRT (Shortest Remaining Time).
• Nesta política, toda vez que um processo no estado de pronto tem um
tempo de processador estimado menor do que o processo em
execução, o sistema operacional realiza uma preempção substituindo-o
pelo novo processo.
• De modo semelhante ao SJF, o sistema operacional deve ser o
responsável por estimar os tempos de processador dos processos, e o
risco de starvation continua presente.
Gerência do Processador
Cooperativo
• O escalonamento cooperativo é uma implementação que busca
aumentar o grau de multiprogramação em políticas de escalonamento
que não possuam mecanismos de preempção.
• Neste caso, um processo em execução pode voluntariamente liberar o
processador, retornando à fila de pronto e possibilitando que um novo
processo seja escalonado, permitindo assim uma melhor distribuição no
uso da CPU.
• A principal característica do escalonamento cooperativo está no fato de
a liberação do processador ser uma tarefa realizada exclusivamente
pelo processo em execução, que de uma maneira cooperativa libera a
CPU.
Gerência do Processador
Fila Circular ou Round Robin
Término
Fila dos processos no estado de Pronto
Criação
Execução
Preempção por tempo
Espera
Gerência do Processador
Fila Circular ou Round Robin
• O escalonamento circular (round robin scheduling), é um escalonamento
do tipo preemptivo, projetado especialmente para sistemas de tempo
compartilhado.
• Esse algoritmo é bastante semelhante ao FIFO, porém quando um
processo passa para o estado de execução existe um tempo limite para
o uso contínuo do processador denominado fatia de tempo (time slice)
ou quantum.
• No escalonamento circular, toda vez que um processo é escalonado
para execução uma nova fatia de tempo é concedida.
• Caso a fatia de tempo expire, o sistema operacional interrompe o
processo em execução, salva seu contexto e direciona-o para o final da
fila de pronto.
• Este mecanismo é conhecido como preempção por tempo.
Gerência do Processador
Fila Circular ou Round Robin
• A figura anterior ilustra o escalonamento circular, onde a fila de
processos em estado de pronto é tratada como uma fila circular.
• O escalonamento é realizado alocando a CPU ao primeiro processo da
fila de pronto.
• O processo permanecerá no estado de execução até que termine seu
processamento, voluntariamente passe para o estado de espera ou que
sua fatia de tempo expire, sofrendo, neste caso, uma preempção pelo
sistema operacional.
• Após isso, um novo processo é escalonado com base na política de
FIFO.
Gerência do Processador
Fila Circular ou Round Robin
• O valor da fatia de tempo depende da arquitetura de cada sistema
operacional e, em geral, varia entre 10 e 100 milissegundos.
• Este valor afeta diretamente o desempenho da política de
escalonamento circular.
• Caso a quantum tenha um valor muito alto, este escalonamento tenderá
a ter o mesmo comportamento do escalonamento FIFO.
• Caso o valor do quantum seja pequeno, a tendência é que haja um
grande número de preempções, o que ocasionaria excessivas
mudanças de contexto, prejudicando o desempenho do sistema e
afetando o tempo de turnaround dos processos.
• A principal vantagem do escalonamento circular é não permitir que um
processo monopolize a CPU, sendo o tempo máximo alocado
continuamente igual ao quantum definido no sistema.
• No caso de sistemas de tempo compartilhado, onde existem diversos
processos interativos concorrendo pelo uso do processador, o
escalonamento circular é adequado.
Gerência do Processador
Fila Circular ou Round Robin
• O valor da fatia de tempo depende da arquitetura de cada sistema
operacional e, em geral, varia entre 10 e 100 milissegundos.
• Este valor afeta diretamente o desempenho da política de
escalonamento circular.
• Caso a quantum tenha um valor muito alto, este escalonamento tenderá
a ter o mesmo comportamento do escalonamento FIFO.
• Caso o valor do quantum seja pequeno, a tendência é que haja um
grande número de preempções, o que ocasionaria excessivas
mudanças de contexto, prejudicando o desempenho do sistema e
afetando o tempo de turnaround dos processos.
• A principal vantagem do escalonamento circular é não permitir que um
processo monopolize a CPU, sendo o tempo máximo alocado
continuamente igual ao quantum definido no sistema.
• No caso de sistemas de tempo compartilhado, onde existem diversos
processos interativos concorrendo pelo uso do processador, o
escalonamento circular é adequado.
Gerência do Processador
Fila Circular ou Round Robin
• Um problema presente nesta política é que processos CPU-bound são
beneficiados no uso do processador em relação aos processos I/Obound.
• Devido às suas características, os processos CPU-bound tendem a
utilizar por completo a fatia de tempo, enquanto os processos I/O-bound
têm mais chances de passar para o estado de espera antes de sofrerem
preempção por tempo.
• Estas características distintas ocasionam um balanceamento desigual
no uso do processador entre os processos.
Gerência do Processador
Fila Circular Virtual
• Um refinamento do escalonamento circular, que busca reduzir este
problema, é conhecido como escalonamento circular virtual, ilustrado
seguir.
• Neste esquema, processos que saem do estado de espera vão para
uma fila de pronto auxiliar.
• Os processos da fila auxiliar possuem preferência no escalonamento em
relação à fila de pronto, e o escalonador só seleciona processos na fila
de pronto quando a fila auxiliar estiver vazia.
• Quando um processo é escalonado a partir da fila auxiliar, sua fatia de
tempo é calculada como sendo o valor da fatia de tempo do sistema
menos o tempo de processador que o processo utilizou na última vez
em que foi escalonado a partir da fila de pronto.
• Estudos comprovam que, apesar da maior complexidade na
implementação, o balanceamento do uso do processador neste
escalonamento é mais equilibrado.
Gerência do Processador
Fila Circular Virtual
Término
Fila dos processos no estado de Pronto
Criação
Execução
Preempção por tempo
Fila auxiliar
Espera
Gerência do Processador
Escalonamento por Prioridades
Fila dos processos no estado de Pronto
Prioridade P1
Término
Prioridade P2
Criação
Execução
Prioridade Pn
Preempção por Prioridade
Espera
Gerência do Processador
Escalonamento por Prioridades
• O escalonamento por prioridades é um escalonamento do tipo
preemptivo realizado com base em um valor associado a cada processo
denomidado prioridade de execução.
• O processo com maior prioridade no estado de pronto é sempre o
escolhido para execução, e processos com valores iguais são
escalonados seguindo o critério de FIPO.
• Neste escalonamento, o conceito de fatia de tempo não existe,
conseqüentemente um processo em execução não pode sofrer
preempção por tempo.
• No escalonamento por prioridades, a perda do uso do processador só
ocorrerá no caso de uma mudança voluntária para o estado de espera
ou quando um processo de prioridade maior passa para o estado de
pronto.
Gerência do Processador
Escalonamento por Prioridades
• Neste caso, o sistema operacional deverá interromper o processo
corrente, salvar seu contexto e colocá-Io no estado de pronto.
• Esse mecanismo é conhecido como preempção por prioridade.
• Após isso, o processo de maior prioridade é escalonado.
• Um dos principais problemas no escalonamento por prioridades é o
starvation.
• Processos de baixa prioridade podem não ser escalonados,
permanecendo indefinidamente na fila de pronto.
• Uma solução para este problema, possível em sistemas que
implementam prioridade dinâmica, é a técnica de aging.
• Este mecanismo incrementa gradualmente a prioridade de processos
que permanecem por muito tempo na fila de pronto.
Gerência do Processador
Escalonamento Circular com Prioridades
Fila dos processos no estado de Pronto
Prioridade P1
Término
Prioridade P2
Criação
Execução
Prioridade Pn
Preempção por Tempo ou Prioridade
Espera
Gerência do Processador
Escalonamento Circular com Prioridades
•
•
•
•
•
•
O escalonamento circular com prioridades implementa o conceito de quantum e
de prioridade de execução associada a cada processo.
Neste tipo de escalonamento, um processo permanece no estado de execução
até que termine seu processamento, voluntariamente passe para o estado de
espera ou sofra uma preempção por tempo ou prioridade.
A principal vantagem deste escalonamento é permitir o melhor balanceamento
no uso do processador em sistemas de tempo compartilhado.
Processos com o perfil I/O-bound devem receber do administrador do sistema
prioridades com valores maiores que as dos processos CPU-bound.
Isso permite ao sistema operacional praticar uma política compensatória entre
processos de perfis distintos, compartilhando o processador de forma mais
igualitária.
Este tipo de escalonamento é amplamente utilizado em sistemas de tempo
compartilhado, como o Windows e o Unix.
Gerência do Processador
Escalonamento por Múltiplas Filas com Realimentação
Fila dos processos no estado de Pronto
Criação
Quantum
Execução  Espera Pronto
Maior
Prioridade
Prioridade P1
Menor
Quantum
Execução  Pronto
Execução  Espera Pronto
Prioridade P2
Execução  Pronto
Execução  Espera Pronto
Prioridade P3
Execução  Pronto
Fila Circular ou Round robin
Menor
Prioridade
Prioridade Pn
Maior
Quantum
Gerência do Processador
Escalonamento por Múltiplas Filas com Realimentação
• Um mecanismo FIFO adaptado com quantum é implementado para
escalonamento em todas as filas, com exceção da fila de menor
prioridade, que utiliza o escalonamento circular.
• O escalonamento de um processo em uma fila ocorre apenas quando
todas as outras filas de prioridades mais altas estiverem vazias.
• O quantum em cada fila varia em função da sua prioridade, ou seja,
quanto maior a prioridade da fila, menor o seu quantum.
• Sendo assim, o quantum concedido aos processos varia em função da
fila de pronto na qual ele se encontra.
• Um processo, quando criado, entra no final da fila de maior prioridade,
porém, durante sua execução, a cada preempção por tempo, o
processo é redirecionado para uma fila de menor prioridade.
Gerência do Processador
Escalonamento por Múltiplas Filas com Realimentação
• O escalonamento por múltiplas filas com realimentação (multilevel
feedback queues scheduling) os processos podem trocar de filas
durante seu processamento.
• Sua grande vantagem é permitir ao sistema operacional identificar
dinamicamente o comportamento de cada processo, direcionando-o
para filas com prioridades de execução mais adequados ao longo de
seu processamento.
• Esse esquema permite que os processos sejam redirecionados entre as
diversas filas, fazendo com que o sistema operacional implemente um
mecanismo adaptativo.
• Os processos não são previamente associados às filas de pronto, e,
sim, direcionados pelo sistema para as filas existentes com base no seu
comportamento.
Gerência do Processador
Escalonamento por Múltiplas Filas com Realimentação
• Esse escalonamento atende às necessidades dos diversos tipos de
processos.
• No caso de processos I/O-bound, um tempo de resposta adequado é
obtido, já que esses processos têm prioridades mais altas por
permanecerem a maior parte do tempo nas filas de maior prioridade,
pois dificilmente sofrerão preempção por tempo.
• Por outro lado, em processos CPU-bound a tendência é de que, ao
entrar na fila de mais alta prioridade, o processo ganhe o processador,
gaste seu quantum e seja direcionado para uma fila de menor
prioridade.
• Dessa forma, quanto mais tempo do processador um processo utiliza,
mais ele vai caindo para filas de menor prioridade.
Gerência do Processador
Escalonamento por Múltiplas Filas com Realimentação
• O escalonamento por múltiplas filas com realimentação é um algoritmo
de escalonamento generalista, podendo ser implementado em qualquer
tipo de sistema operacional.
• Um dos problemas encontrados nesta política é que a mudança de
comportamento de um processo CPU-bound para I/O-bound pode
comprometer seu tempo de resposta.
• Outro aspecto a ser considerado é sua complexidade de
implementação, ocasionando um grande overhead (sobrecarga) ao
sistema.
Gerência do Processador
Escalonamento em Sistema de Tempo Real
•
•
•
•
•
•
Diferentemente dos sistemas de tempo compartilhado, nos quais a aplicação
não é prejudicada pela variação no tempo de resposta, algumas aplicações
específicas exigem respostas imediatas para a execução de determinadas
tarefas.
Neste caso, a aplicação deve ser executada em sistemas operacionais de
tempo real, onde é garantida a execução de processos dentro de limites rígidos
de tempo, sem o risco de a aplicação ficar comprometida.
Aplicações de controle de processos, como sistemas de controle de produção
de bens industriais e controle de tráfego aéreo, são exemplos de aplicação de
tempo real.
O escalonamento em sistemas de tempo real deve levar em consideração a
importância relativa de cada tarefa na aplicação.
Em função disso, o escalonamento por prioridades é o mais adequado, já que
para cada processo uma prioridade é associada em função da importância do
processo dentro da aplicação.
No escalonamento para sistemas de tempo real não deve existir o conceito de
quantum, e a prioridade de cada processo deve ser estática.
Download