Algoritmos de escalonamento de CPU em sistemas operacionais

Índice:

Anonim

O que é o escalonamento da CPU?

O escalonamento da CPU é um processo de determinar qual processo possuirá a CPU para execução enquanto outro processo está em espera. A principal tarefa do escalonamento da CPU é garantir que sempre que a CPU permanecer ociosa, o SO selecione pelo menos um dos processos disponíveis na fila de prontidão para execução. O processo de seleção será realizado pelo escalonador da CPU. Ele seleciona um dos processos na memória que estão prontos para execução.

Neste tutorial de agendamento de CPU, você aprenderá:

  • O que é escalonamento de CPU?
  • Tipos de escalonamento de CPU
  • Terminologias de agendamento de CPU importantes
  • Critérios de escalonamento de CPU
  • Temporizador de intervalo
  • O que é Dispatcher?
  • Tipos de algoritmo de escalonamento de CPU
  • Primeiro a chegar, primeiro a servir
  • Menor Tempo Restante
  • Agendamento com base em prioridade
  • Agendamento do Round-Robin
  • Trabalho mais curto primeiro
  • Agendamento de filas de vários níveis
  • O objetivo de um algoritmo de escalonamento

Tipos de escalonamento de CPU

Aqui estão dois tipos de métodos de programação:

Agendamento preventivo

No Agendamento preventivo, as tarefas são geralmente atribuídas com suas prioridades. Às vezes, é importante executar uma tarefa com prioridade mais alta antes de outra tarefa de prioridade mais baixa, mesmo se a tarefa de prioridade mais baixa ainda estiver em execução. A tarefa de prioridade mais baixa é mantida por algum tempo e recomeça quando a tarefa de prioridade mais alta termina sua execução.

Programação Não Preemptiva

Neste tipo de método de escalonamento, a CPU foi alocada para um processo específico. O processo que mantém a CPU ocupada irá liberá-la ao alternar o contexto ou ao encerrar. É o único método que pode ser usado para várias plataformas de hardware. Isso porque ele não precisa de hardware especial (por exemplo, um cronômetro) como o agendamento preventivo.

Quando o agendamento é Preemptivo ou Não Preemptivo?

Para determinar se a programação é preemptiva ou não preemptiva, considere estes quatro parâmetros:

  1. Um processo muda do estado de execução para o estado de espera.
  2. O processo específico muda do estado de execução para o estado pronto.
  3. O processo específico muda do estado de espera para o estado de pronto.
  4. O processo terminou sua execução e foi encerrado.

Aplicam-se apenas as condições 1 e 4, o escalonamento é denominado não preemptivo.

Todos os outros agendamentos são preventivos.

Terminologias de agendamento de CPU importantes

  • Tempo de Burst / Tempo de Execução: É o tempo exigido pelo processo para completar a execução. Também é chamado de tempo de execução.
  • Hora de chegada: quando um processo entra em estado pronto
  • Tempo de término: quando o processo é concluído e sai de um sistema
  • Multiprogramação: Vários programas que podem estar presentes na memória ao mesmo tempo.
  • Jobs: É um tipo de programa sem nenhum tipo de interação do usuário.
  • Usuário: É uma espécie de programa com interação com o usuário.
  • Processo: É a referência usada tanto para o trabalho quanto para o usuário.
  • Ciclo de burst de CPU / IO: caracteriza a execução do processo, que alterna entre a atividade da CPU e I / O. Os tempos de CPU são geralmente mais curtos do que o tempo de E / S.

Critérios de escalonamento de CPU

Um algoritmo de agendamento de CPU tenta maximizar e minimizar o seguinte:

Maximizar:

Utilização da CPU: a utilização da CPU é a principal tarefa em que o sistema operacional precisa garantir que a CPU permaneça o mais ocupada possível. Pode variar de 0 a 100 por cento. No entanto, para o RTOS, pode variar de 40 por cento para o sistema de baixo nível e 90 por cento para o sistema de alto nível.

Taxa de transferência: o número de processos que terminam sua execução por unidade de tempo é conhecido como Taxa de transferência. Assim, quando a CPU está ocupada executando o processo, naquele momento, o trabalho está sendo realizado, e o trabalho concluído por unidade de tempo é denominado Throughput.

Minimizar:

Tempo de espera: o tempo de espera é uma quantidade que o processo específico precisa esperar na fila de espera.

Tempo de resposta: é o tempo em que a solicitação foi enviada até que a primeira resposta seja produzida.

Tempo de retorno: o tempo de retorno é uma quantidade de tempo para executar um processo específico. É o cálculo do tempo total gasto esperando para entrar na memória, esperando na fila e executando na UCP. O período entre o tempo de envio do processo e o tempo de conclusão é o tempo de retorno.

Temporizador de intervalo

A interrupção do cronômetro é um método intimamente relacionado à preempção. Quando um determinado processo obtém a alocação da CPU, um cronômetro pode ser definido para um intervalo especificado. A interrupção do cronômetro e a preempção forçam um processo a retornar a CPU antes que seu burst de CPU seja concluído.

A maior parte do sistema operacional multiprogramado usa alguma forma de cronômetro para evitar que um processo bloqueie o sistema para sempre.

O que é Dispatcher?

É um módulo que fornece controle da CPU ao processo. O Dispatcher deve ser rápido para que possa ser executado em cada troca de contexto. Latência de despacho é a quantidade de tempo necessária pelo agendador da CPU para interromper um processo e iniciar outro.

Funções desempenhadas pelo despachante:

  • Mudança de contexto
  • Mudando para o modo de usuário
  • Movendo-se para o local correto no programa recém-carregado.

Tipos de algoritmo de escalonamento de CPU

Existem basicamente seis tipos de algoritmos de escalonamento de processos

  1. Primeiro a chegar, primeiro a servir (FCFS)
  2. Programação Shortest-Job-First (SJF)
  3. Menor Tempo Restante
  4. Agendamento prioritário
  5. Agendamento de Round Robin
  6. Agendamento de fila multinível
Algoritmos de escalonamento

Primeiro a chegar, primeiro a servir

Primeiro a chegar, primeiro a servir é a forma completa de FCFS. É o algoritmo de escalonamento de CPU mais fácil e simples. Nesse tipo de algoritmo, o processo que solicita a CPU obtém primeiro a alocação da CPU. Este método de programação pode ser gerenciado com uma fila FIFO.

Conforme o processo entra na fila de prontidão, seu PCB (Bloco de Controle de Processo) é vinculado ao final da fila. Portanto, quando a CPU ficar livre, ela deve ser atribuída ao processo no início da fila.

Características do método FCFS:

  • Oferece algoritmo de escalonamento preventivo e não preemptivo.
  • Os trabalhos são sempre executados por ordem de chegada
  • É fácil de implementar e usar.
  • No entanto, esse método tem baixo desempenho e o tempo de espera geral é bastante alto.

Menor Tempo Restante

A forma completa de SRT é o menor tempo restante. Também é conhecido como agendamento preemptivo SJF. Neste método, o processo será alocado à tarefa, que está mais próxima de sua conclusão. Este método evita que um processo de estado de prontidão mais recente retenha a conclusão de um processo mais antigo.

Características do método de programação SRT:

  • Este método é aplicado principalmente em ambientes em lote onde trabalhos curtos devem ter preferência.
  • Este não é um método ideal para implementá-lo em um sistema compartilhado onde o tempo de CPU necessário é desconhecido.
  • Associe a cada processo como a duração de seu próximo surto de CPU. Para que esse sistema operacional use esses comprimentos, o que ajuda a agendar o processo com o menor tempo possível.

Agendamento com base em prioridade

O agendamento prioritário é um método de agendamento de processos com base na prioridade. Neste método, o planejador seleciona as tarefas para trabalhar de acordo com a prioridade.

A programação de prioridade também ajuda o sistema operacional a envolver atribuições de prioridade. Os processos com prioridade mais alta devem ser executados primeiro, enquanto os trabalhos com prioridades iguais são executados em rodízio ou FCFS. A prioridade pode ser decidida com base nos requisitos de memória, requisitos de tempo, etc.

Agendamento do Round-Robin

Round robin é o algoritmo de agendamento mais antigo e simples. O nome desse algoritmo vem do princípio round-robin, em que cada pessoa recebe uma parte igual de alguma coisa. É usado principalmente para algoritmos de agendamento em multitarefa. Este método de algoritmo ajuda a execução livre de fome de processos.

Características da programação Round-Robin

  • Round robin é um modelo híbrido que é movido por relógio
  • A fração de tempo deve ser mínima, que é atribuída para uma tarefa específica a ser processada. No entanto, pode variar para diferentes processos.
  • É um sistema em tempo real que responde ao evento dentro de um determinado limite de tempo.

Trabalho mais curto primeiro

SJF é uma forma completa de (Shortest job first) é um algoritmo de agendamento no qual o processo com o menor tempo de execução deve ser selecionado para execução a seguir. Este método de agendamento pode ser preemptivo ou não preemptivo. Isso reduz significativamente o tempo médio de espera para outros processos aguardando execução.

Características do escalonamento SJF

  • Ele está associado a cada trabalho como uma unidade de tempo para ser concluído.
  • Neste método, quando a CPU estiver disponível, o próximo processo ou job com o menor tempo de conclusão será executado primeiro.
  • É implementado com política não preemptiva.
  • Este método de algoritmo é útil para processamento em lote, em que aguardar a conclusão dos trabalhos não é crítico.
  • Ele melhora a produção do trabalho, oferecendo trabalhos mais curtos, que devem ser executados primeiro, que geralmente têm um tempo de resposta mais curto.

Agendamento de filas de vários níveis

Este algoritmo separa a fila pronta em várias filas separadas. Neste método, os processos são atribuídos a uma fila com base em uma propriedade específica do processo, como a prioridade do processo, tamanho da memória, etc.

No entanto, este não é um algoritmo de sistema operacional de agendamento independente, pois precisa usar outros tipos de algoritmos para agendar os trabalhos.

Característica da programação de filas de vários níveis:

  • Várias filas devem ser mantidas para processos com algumas características.
  • Cada fila pode ter seus algoritmos de agendamento separados.
  • As prioridades são dadas para cada fila.

O objetivo de um algoritmo de escalonamento

Aqui estão as razões para usar um algoritmo de agendamento:

  • A CPU usa agendamento para melhorar sua eficiência.
  • Ajuda a alocar recursos entre processos concorrentes.
  • A utilização máxima da CPU pode ser obtida com a multiprogramação.
  • Os processos a serem executados estão em fila de espera.

Resumo:

  • O escalonamento da CPU é um processo de determinar qual processo possuirá a CPU para execução enquanto outro processo está em espera.
  • No Agendamento preventivo, as tarefas são geralmente atribuídas com suas prioridades.
  • No método de escalonamento não preemptivo, a CPU foi alocada para um processo específico.
  • O tempo de burst é um tempo necessário para que o processo conclua a execução. Também é chamado de tempo de execução.
  • A utilização da CPU é a principal tarefa em que o sistema operacional precisa se certificar de que a CPU permanece o mais ocupada possível
  • O número de processos que terminam sua execução por unidade de tempo é conhecido como Throughput.
  • O tempo de espera é uma quantidade que o processo específico precisa esperar na fila de espera.
  • É um período de tempo em que a solicitação foi enviada até que a primeira resposta seja produzida.
  • O tempo de retorno é uma quantidade de tempo para executar um processo específico.
  • A interrupção do cronômetro é um método intimamente relacionado à preempção,
  • Um despachante é um módulo que fornece controle da CPU para o processo.
  • Seis tipos de algoritmos de escalonamento de processo são:
  • Primeiro a chegar, primeiro a servir (FCFS), 2) Agendamento mais curto do trabalho primeiro (SJF) 3) Tempo restante mais curto 4) Agendamento de prioridade 5) Agendamento de round Robin 6) Agendamento de fila multinível
  • No método First Come First Serve, o processo que solicita a CPU obtém a alocação da CPU primeiro.
  • No menor tempo restante, o processo será alocado para a tarefa, que está mais próxima de sua conclusão.
  • Em Priority Scheduling, o agendador seleciona as tarefas para trabalhar de acordo com a prioridade.
  • Em, este agendamento round robin funciona em princípio, onde cada pessoa recebe uma parte igual de algo por sua vez
  • No trabalho mais curto primeiro, o tempo de execução mais curto deve ser selecionado para a execução seguinte
  • Na programação multinível, o método separa a fila pronta em várias filas separadas. Neste método, os processos são atribuídos a uma fila com base em uma propriedade específica
  • A CPU usa agendamento para melhorar sua eficiência.