Diferença entre programação preemptiva e não preemptiva em sistemas operacionais

Diferença entre programação preemptiva e não preemptiva em sistemas operacionais

Agendamento do processador(ouAgendamento de CPU) determina quais processos são atribuídos e removidos da CPU, com base em modelos de agendamento, comoPreemptivaeProgramação Não Preemptiva(também conhecido comoProgramação Cooperativa)



Os sistemas mais antigos podiam operar em modos autônomos simples, mas com a crescente necessidade de sistemas responsivos e flexíveis, bem como virtualização, o gerenciamento de multiprocessamento com eficiência fornece uma resposta rápida a todas as solicitações de processamento de tarefas.



As unidades de programação são freqüentemente chamadas detarefae é trabalho do Agendador executar e gerenciar essas tarefas sempre que necessário; o Scheduler seleciona a tarefa a ser removida e atribuída à CPU para processamento, de acordo com o modelo de escalonamento utilizado.

Como o Scheduler sabe quais tarefas são prioritárias?

O Scheduler precisa executar um processo de seleção justo e eficiente, levando em consideração as solicitações de processamento dinâmicas e variáveis ​​e aproveitando ao máximo os ciclos da CPU.



As tarefas podem estar em dois estados durante o processamento:

  1. Em umCPU Burstonde a CPU está realizando cálculos para processar a tarefa (o período para um Burst da CPU varia de tarefa para tarefa e de programa para programa).
  2. Em umBurst de entrada / saída (I / O)aguardando que os dados sejam recebidos ou enviados do sistema.

Quando a CPU está ociosa, o Scheduler lê oFila prontae seleciona a próxima tarefa a ser executada. Então, é oExpedidorque dá à tarefa selecionada o controle da CPU, então ela precisa ser rápida! Qualquer tempo gasto pelo Dispatcher é conhecido comoLatência de despacho.

Existem diferentes estruturas e parâmetros personalizados para definir oFila pronta, bem como vários métodos que podem ser usados ​​para gerenciar as complexidades do processo de programação.



Geralmente, trata-se de otimizar e maximizar a utilização da CPU, rendimento, etc.

O Programador deve tomar uma decisão durante uma das seguintes etapas:

  1. Quando a tarefa muda de umCorridapara umEstado de espera(por exemplo, esperando durante uma solicitação de E / S).
  2. Quando a tarefa muda deCorridaparapronto(por exemplo, respondendo a uma interrupção).
  3. Quando a tarefa muda deEsperandoparapronto(por exemplo, uma solicitação de E / S foi concluída).
  4. Quando oTarefa

Uma nova tarefa deve ser selecionada se o estágio 1 ou 4 acontecer para garantir a utilização total da CPU, e nos dois estágios 2 e 3, a tarefa pode continuar em execução ou uma nova é selecionada.

Depois de entender como uma tarefa é processada, vamos examinar dois modelos de agendamento que lidam com interrupções de CPU.

Ambos têm recursos semelhantes com tarefas, estados de tarefas, filas e prioridades (estáticas ou dinâmicas):

  • Programação Não Preemptivaé quando uma tarefa é executada até parar (voluntariamente) ou terminar. O Windows tinha um agendamento não preemptivo até o Windows 3.x, após o qual foi alterado para preemptivo do Windows 95.
  • Agendamento preventivoé onde uma tarefa pode ser suspensa à força por uma interrupção da CPU, ao contrário de Não Preemptivo, onde a tarefa é executada até que libere o controle da CPU.

Programação Não Preemptiva

As tarefas em um sistema não preemptivo serão executadas até serem concluídas.

O Agendador verifica os estados de todas as tarefas e agenda a próxima tarefa de maior prioridade com umprontoEstado.

Com o Agendamento Não Preemptivo, uma vez que uma tarefa tenha sua atribuição à CPU, ela não pode ser retirada, mesmo que tarefas curtas tenham que esperar que tarefas mais longas sejam concluídas.

O gerenciamento de agendamento em todas as tarefas é “justo” e os tempos de resposta são previsíveis, pois as tarefas de alta prioridade não podem prejudicar as tarefas em espera na fila.

O Scheduler garante que cada tarefa receba sua parte da CPU, evitando qualquer atraso em qualquer tarefa. A 'quantidade de tempo' alocada para a CPU pode não ser necessariamente igual, pois depende de quanto tempo a tarefa leva para ser concluída.

Agendamento preventivo

Este modelo de agendamento permite que as tarefas sejam interrompidas - em contraste com o Agendamento Não Preemptivo que tem uma abordagem de “execução até a conclusão”.

As interrupções, que podem ser iniciadas a partir de chamadas externas, invocam o Scheduler para pausar uma tarefa em execução para gerenciar outra tarefa de prioridade mais alta - para que o controle da CPU possa ser antecipado.

A tarefa de maior prioridade em umprontoestado é executado, permitindo uma resposta rápida a eventos em tempo real.

Alguns dos contras do Agendamento preventivo envolvem o aumento de sobrecargas nos recursos ao usar interrupções e problemas podem ocorrer com duas tarefas compartilhando dados, já que uma pode ser interrompida durante a atualização de estruturas de dados compartilhadas e pode afetar negativamente a integridade dos dados.

Por outro lado, é prático ser capaz de pausar uma tarefa para gerenciar outra que pode ser crítica.

Em suma

Muitas variações e dependências em políticas diferentes podem ser definidas, como o uso de um“Política de Round Robin [Eu] 'onde cada tarefa (com prioridade igual) é executada uma vez e, em seguida, colocada no final da fila, para o próximo ciclo.

Outras políticas incluemPrimeiro a entrar, primeiro a sair,Shortest-Job-First,Shortest-Job-Next,Menor Tempo Restanteetc.

A análise de dados históricos pode fornecer informações sobre aspectos, como a taxa em que novas tarefas chegam, a CPU e Bursts de I / O etc, para que as distribuições de probabilidade possam calcular as características dos tempos de espera das tarefas, armando assim os administradores com dados relevantes para definir modelos de agendamento.

Publicações Populares

Diferença entre hidratante e creme

Hidratante vs Creme A diferença entre um hidratante e um creme é que o hidratante é um tipo particular de matéria que é usado para restaurar

O primeiro oficial sino-americano da história do Corpo de Fuzileiros Navais salvou 8.000 vidas no 'Frozen Chosin'

Talvez os chineses sejam todos fatalistas ', disse Kurt Chew-Een Lee. 'Nunca esperei sobreviver à guerra. Então, eu estava inflexível para que minha morte fosse honrosa, seja espetacular '

Diferença entre dedução e indução

Lógica de dedução vs indução é o estudo dos princípios de raciocínio e inferência. É aplicado em filosofia, ética, psicologia, matemática, semântica,

Diferença entre e entre

Entre vs Entre Preposições são usadas para ligar substantivos e pronomes a outras palavras chamadas objetos dentro de uma frase. Entre e entre os mais comuns

Diferença entre lagosta e lagostim

Lagosta vs. Lagostins Se você gosta de frutos do mar, deve ter notado a pergunta comum de como se pode saber a diferença entre uma lagosta e um lagostim.

Diferença entre magnetismo e gravidade

Magnetismo vs Gravidade O magnetismo e a gravidade não são conceitos semelhantes. Esses dois conceitos ou termos são totalmente diferentes um do outro. Embora ambos sejam