O QUE É ESCALONAMENTO PREEMPTIVO E NÃO PREEMPTIVO?

Quando o sistema pode interromper um processo em execução
para que outro processo utilize o processador.

É implementado por um algoritmo projetado para sistemas de tempo
compartilhado.

É semelhante ao FIFO, porém quando o processo está em estado de
execução existe um tempo-limite para utilização da UCP
Quando expira o tempo, time-slice ou quantum, o processo volta ao
estado de pronto, dando a vez a outro processo
Isso ocorre mesmo se o processo não terminou o seu processamento, esse
procedimento é chamado de preempção por tempo.


De acordo com o Wikipédia o que é escalonamento?

O escalonamento de processos ou agendador de tarefas (em inglês scheduling) é uma atividade organizacional feita pelo escalonador (scheduler) da CPU ou de um sistema distribuído, possibilitando executar os processos mais viáveis e concorrentes, priorizando determinados tipos de processos, como os de I/O Bound e os computacionalmente intensivos. 

Objetivos do Escalonamento

O escalonador de processos de 2 níveis escolhe o processo que tem mais prioridade e menos tempo e coloca-o na memória principal, ficando os outros alocados em disco; com essa execução o processador evita ficar ocioso.


Escalonador de curto prazo

Seleciona entre os processos em estado de pronto que estão na memória, para serem executados pelo processador. O escalonador de curto prazo faz decisões de escalonamento muito mais frequentemente que os de médio e longo prazo.

Seleciona entre os processos que estão na memória virtual, reduz o grau de multiprogramação. Ele temporariamente remove o processo da memória principal e o coloca na memória secundária (swap) fazendo as operações de swapping in e swapping out.

Escalonador de longo prazo

Seleciona entre os processos novos, os que são limitados por entrada/saída e os que são limitados por CPU, dando prioridade aqueles limitados por I/O, já que utilizam menos tempo o processador. Este escalonador é o responsável pelo grau de multiprocessamento, ou seja a quantidade de processos que o sistema irá trabalhar.

Para que a CPU não fique muito tempo sem executar tarefa alguma, os sistemas operacionais utilizam técnicas para escalonar os processos que estão em execução ao mesmo tempo na maquina.

O escalonamento de processos é uma tarefa complicada, pois nenhum algoritmo é totalmente eficiente e a prova de falhas, principalmente em se tratando de sistemas interativos, como o Windows, pois a interação com o usuário é fundamental para este sistema onde quem o utiliza procura respostas rápidas e a todo o momento processos são interrompidos pelo usuário.
O escalonador do SO utiliza alguns critérios de escalonamento, como: a taxa de utilização de CPU, que é a fração de tempo durante a qual ela está sendo ocupada; throughput que são números de processos terminados por unidade de tempo; turnaround que é o tempo transcorrido desde o momento em que o software entra e o instante em que termina sua execução; tempo de resposta: intervalo entre a chegada ao sistema e inicio de sua execução; tempo de espera: soma dos períodos em que o programa estava no seu estado pronto.
Responsáveis por essa tarefa são algoritmos que são entendidos mais facilmente, estudados separadamente, mas na pratica os sistemas operacionais utilizam combinações deles para melhor escalonar os processos.

O projeto de um escalonador adequado deve levar em conta uma série de diferentes necessidades, ou seja, o projeto de uma política de escalonamento deve contemplar os seguintes objetivos:

  • Ser justo: Todos os processos devem ser tratados igualmente, tendo possibilidades idênticas de uso do processador, devendo ser evitado o adiamento indefinido.
  • Maximizar a produtividade (throughput): Procurar maximizar o número de tarefas processadas por unidade de tempo.
  • Ser previsível: Uma tarefa deveria ser sempre executada com aproximadamente o mesmo tempo e custo computacional.
  • Minimizar o tempo de resposta para usuários interativos.
  • Maximizar o número possível de usuário interativos.
  • Minimizar a sobrecarga (overhead): Recursos não devem ser desperdiçados embora algum investimento em termos de recursos para o sistema pode permitir maior eficiência.
  • Favorecer processos “bem comportados”: Processos que tenham comportamento adequado poderiam receber um serviço melhor.
  • Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos que usam recursos sub- utilizados deveriam ser favorecidos.
  • Exibir degradação previsível e progressiva em situações de intensa carga de trabalho.
Como pode ser visto facilmente, alguns destes objetivos são contraditórios, pois dado que a quantidade de tempo disponível de processamento (tempo do processador) é finita, assim como os demais recursos computacionais, para que um proceso seja favorecido outro deve ser prejudicado. O maior problema existente no projeto de algoritmos de escalonamento está associado à natureza imprevisível dos processos, pois não é possível prevermos se um dado processo utilizará intensamente o processador, ou se precisará grandes quantidades de memória ou se necessitará numerosos acessos aos dispositivos e E/S.




Deixar um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *