Escalonamento garantido: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Linha 3: Linha 3:
Se acontecer de um processo utilizar menos tempo de execução do que poderia, sua prioridade de execução é aumentada. Se outro processo utilizou mais do que deveria, sua prioridade é diminuida.
Se acontecer de um processo utilizar menos tempo de execução do que poderia, sua prioridade de execução é aumentada. Se outro processo utilizou mais do que deveria, sua prioridade é diminuida.

Uma abordagem completamente diferente para agendamento é fazer promessas realistas aos usuários sobre o desempenho e, então, conviver com elas. Uma promessa que é realista e fácil de cumprir é: se houver N usuários conectados no momento em que você estiver trabalhando, você receberá aproximadamente 1/N do poder da CPU. De maneira semelhante, em um sistema monousuário com N processos executando, todas as coisas sendo iguais, cada uma deve receber 1/N dos ciclos da CPU.

Para cumprir essa promessa, o sistema deve monitorar quanto da CPU cada processo teve, desde sua criação. Então, ele calcula o quanto da CPU é atribuído a cada um, isto é, o tempo desde a criação dividido por N. Como a quantidade de tempo de CPU que cada processo realmente teve também é conhecida, é simples calcular a proporção entre o tempo real da CPU e o tempo da CPU atribuído. Uma proporção de 0,5 significa que um processo só teve a metade do que deveria ter tido e uma proporção de 2,0 significa que um processo teve o dobro de tempo que lhe foi atribuído. O algoritmo, então, executará o processo com a proporção mais baixa até que sua proporção tenho subido acima do seu competidor mais próximo



Exemplo: 3 processos querem executar, o [[algoritmo]] fornece a cada um deles 3 segundos de execução para utilizar CPU. O 1º processo executa 3 segundos e pára, então entra o 2º executa 3 segundos e pára, 3º executa 3 segundos pára e o 1º executa novamente 3 segundos e assim por diante até eles terminarem sua execução.
Exemplo: 3 processos querem executar, o [[algoritmo]] fornece a cada um deles 3 segundos de execução para utilizar CPU. O 1º processo executa 3 segundos e pára, então entra o 2º executa 3 segundos e pára, 3º executa 3 segundos pára e o 1º executa novamente 3 segundos e assim por diante até eles terminarem sua execução.

Revisão das 17h15min de 27 de maio de 2010

Escalonamento garantido é um dos tipos de algoritmos escalonadores. Ele garante aos processos sua execução, dando a todos eles a mesma quantidade de tempo de execução utilizando a CPU.

Se acontecer de um processo utilizar menos tempo de execução do que poderia, sua prioridade de execução é aumentada. Se outro processo utilizou mais do que deveria, sua prioridade é diminuida.

Uma abordagem completamente diferente para agendamento é fazer promessas realistas aos usuários sobre o desempenho e, então, conviver com elas. Uma promessa que é realista e fácil de cumprir é: se houver N usuários conectados no momento em que você estiver trabalhando, você receberá aproximadamente 1/N do poder da CPU. De maneira semelhante, em um sistema monousuário com N processos executando, todas as coisas sendo iguais, cada uma deve receber 1/N dos ciclos da CPU.

Para cumprir essa promessa, o sistema deve monitorar quanto da CPU cada processo teve, desde sua criação. Então, ele calcula o quanto da CPU é atribuído a cada um, isto é, o tempo desde a criação dividido por N. Como a quantidade de tempo de CPU que cada processo realmente teve também é conhecida, é simples calcular a proporção entre o tempo real da CPU e o tempo da CPU atribuído. Uma proporção de 0,5 significa que um processo só teve a metade do que deveria ter tido e uma proporção de 2,0 significa que um processo teve o dobro de tempo que lhe foi atribuído. O algoritmo, então, executará o processo com a proporção mais baixa até que sua proporção tenho subido acima do seu competidor mais próximo


Exemplo: 3 processos querem executar, o algoritmo fornece a cada um deles 3 segundos de execução para utilizar CPU. O 1º processo executa 3 segundos e pára, então entra o 2º executa 3 segundos e pára, 3º executa 3 segundos pára e o 1º executa novamente 3 segundos e assim por diante até eles terminarem sua execução.

Funciona de forma diferente dos demais escalonadores porque este sistema garante que cada usuário terá uma fração da CPU independente da quantidade de processos alocados.

Esta forma de escalonamento é normalmente usada em sistemas de tempo real.

   - O SO faz promessas e deve mantê-las.
   - O escalonador sabe exatamente o tempo necessário para realizar cada operação do sistema operacional.
   - Cada operação deve ter um tempo máximo de execução garantido.
   – O escalonamento garantido altera a prioridade dinamicamente, garantindo o mesmo tempo de execução.
   - A Fórmula que a CPU usa para determinar o tempo que cada programa é: (e.g. 1/n CPU).