Um sistema operacional intervém após cada intervalo de tempo / quantum?


0

No contexto da programação de processos, o sistema operacional intervém após cada intervalo de tempo / quantum? Por exemplo, se o computador estivesse ocioso e chegassem 4 tarefas: t1, t2, t3 e t4, e elas fossem agendadas usando o primeiro a chegar, primeiro a servir, consideraríamos normalmente t1, t2, t3, t4 na CPU, mas isso não é uma simplificação? Porque nós t1, OS, t2, OS, t3 OS t4 é o que realmente aconteceria? Se é verdade que o SO intervém após cada intervalo de tempo (também conhecido como quantum), isso não é muito ineficiente?

Respostas:


1

Não necessariamente. Normalmente, o planejador reduz a prioridade dinâmica de uma tarefa depois que seu quantum expira, mas se ainda for a tarefa de maior prioridade, recebe outra. Em geral, sim, quando a tarefa é executada por tempo suficiente, o sistema operacional assume o controle e muda para outro. Por que isso deveria ser ineficiente?


Porque (corrija-me, eu estou errado) a maioria das tarefas leva várias reviravoltas na CPU, portanto, xalgumas vezes o sistema operacional precisa fazer alguns cálculos para cada tarefa, o que há muito. Por exemplo, existem 5 tarefas e, em média, cada uma leva 4 intervalos de tempo para concluir, ou seja, cerca de 4x5 vezes o sistema operacional. Posso estar errado, acho que foi assim que imaginei.
Celeritas

11
@Celeritas, apenas uma tarefa pode estar em execução em uma determinada CPU e o tempo necessário para ajustar a prioridade da tarefa e verificar se há uma prioridade mais alta é muito pequena (como 10.000 ou mais de 100.000 vezes menos) em comparação com o comprimento do quantum.
Psusi

certo, então, se o quantum for ridiculamente curto, as coisas podem começar a ser menos eficientes com a troca de tarefas e a verificação de suas prioridades?
Celeritas

@Celeritas, não há nenhuma troca e quanta não são ridiculamente curto;)
psusi

0

Acredito que nos sistemas operacionais modernos os intervalos de tempo são de duração variável. O agendador é chamado após a manutenção de todas as interrupções (teclado, mouse, tela sensível ao toque, rede, transferência de disco concluída, ...), bem como o cronômetro é interrompido.

Grosso modo, o planejador é projetado para estimar a média móvel dos tempos entre as chamadas do sistema de bloqueio de um processo. Antes que o planejador controle o processo X, ele configura um timer que será interrompido por vez apenas um pouco mais do que a média móvel do processo X. Se o agendador fizer um bom trabalho em adivinhar o tempo para a próxima chamada do sistema de bloqueio, uma grande fração dos processos realmente liberará voluntariamente a CPU fazendo uma chamada de sistema de bloqueio.

O objetivo é fazer com que os processos interativos façam um pouco de computação, faça uma chamada do sistema de bloqueio para solicitar alguns dados de um dispositivo lento e, em seguida, seja reagendada assim que os dados forem retornados. Se o planejador tiver que decidir entre o planejamento entre dois processos, sendo todas as outras coisas iguais, favorecerá o processo que está fazendo as chamadas do sistema de bloqueio com mais frequência. Isso tende a maximizar o número de solicitações de E / S de bloqueio simultâneo, o que melhora a taxa de transferência geral do sistema.


o que é uma chamada bloqueada?
Celeritas

O planejador não é chamado depois de atender todas as interrupções; isso teria muita sobrecarga. Também não há previsão sobre o tempo entre o bloqueio de chamadas; o planejador apenas faz uma verificação rápida para ver se o quantum expirou em cada interrupção do cronômetro.
Psusi

@Celeritas, bloquear significa que a tarefa entra no modo de espera enquanto aguarda algo, como E / S de disco, permitindo que outras tarefas sejam executadas.
Psusi

@psusi então qual é a diferença entre dormir e bloquear? Ou não existe uma palavra como dormir e as pessoas dizem "bloquear"?
Celeritas

@Celeritas, dormir é o estado em que a tarefa está e bloquear é o que uma chamada do sistema faz quando coloca a tarefa em suspensão.
psusi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.