Agendamento de CPU Algorithms in OperaSistemas de gerenciamento

⚡ Resumo Inteligente

O agendamento da CPU determina qual processo pronto o sistema operacional executará em seguida.ping O processador fica ocupado e o desempenho é aprimorado por meio de algoritmos como First Come First Serve (FCFS), Shortest Job First (SJF), Priority (Prioridade) e Round Robin (Round Robin).

  • 🔄 Definição: O escalonamento da CPU seleciona um processo da fila de prontos sempre que a CPU ficaria ociosa.
  • ⚖️ tipos: O agendamento preemptivo pode interromper uma tarefa em execução, enquanto o agendamento não preemptivo espera que ela libere a CPU.
  • 📊 Critérios: Bons algoritmos maximizam a utilização da CPU e a taxa de transferência, minimizando o tempo de espera, resposta e processamento.
  • 🧮 Algorithms: FCFS, SJF, Shortest Remaining Time, Priority, Round Robin e Multilevel Queue são mais adequados para diferentes cargas de trabalho.
  • 🚦 Expedidor: O dispatcher realiza a troca de contexto que transfere o controle da CPU para o processo selecionado.
  • 🤖 Ângulo da IA: O aprendizado de máquina aprimora as decisões de agendamento, e o Copilot ajuda a codificar e testar algoritmos de agendamento.

Agendamento de CPU Algorithms in OperaSistemas de gerenciamento

O que é agendamento de CPU?

Agendamento de CPU O escalonamento da CPU é o processo de determinar qual processo utilizará a CPU para execução enquanto outro processo estiver ocioso. A principal tarefa do escalonamento da CPU é garantir que, sempre que a CPU permanecer ociosa, o sistema operacional selecione pelo menos um dos processos disponíveis na fila de prontos para execução. O processo de seleção é realizado pelo escalonador da CPU, que escolhe um dos processos na memória que estão prontos para execução.

Tipos de agendamento de CPU

Existem dois tipos de métodos de agendamento:

Tipos de agendamento de CPU

Agendamento Preemptivo

No escalonamento preemptivo, as tarefas são geralmente atribuídas de acordo com suas prioridades. Às vezes, é importante executar uma tarefa com prioridade mais alta antes de outra com prioridade mais baixa, mesmo que esta última ainda esteja em execução. A tarefa com prioridade mais baixa é suspensa por um período e retomada quando a tarefa com prioridade mais alta termina sua execução.

Agendamento Não Preemptivo

Nesse tipo de método de escalonamento, a CPU é alocada a um processo específico. O processo que mantém a CPU ocupada a libera, seja trocando de contexto ou encerrando-se. É o único método que pode ser usado em diversas plataformas de hardware, pois não requer hardware especial (por exemplo, um temporizador), como ocorre no escalonamento preemptivo.

Quando o agendamento é preventivo ou não preventivo?

Para determinar se o agendamento é preemptivo ou não preemptivo, considere estes quatro parâmetros:

  1. Um processo muda do estado de execução para o estado de espera.
  2. Um processo específico passa do estado de execução para o estado de pronto.
  3. Um processo específico passa do estado de espera para o estado pronto.
  4. Um processo conclui sua execução e termina.

Se apenas as condições 1 e 4 forem válidas, o agendamento é denominado não preemptivo. Todas as outras situações de agendamento são preemptivas.

Terminologia importante de escalonamento de CPU

  • Tempo de rajada/tempo de execução: O tempo necessário para que um processo complete sua execução. Também é chamado de tempo de execução.
  • Tempo de chegada: O momento em que um processo entra no estado pronto.
  • Tempo de término: O momento em que um processo é concluído e sai do sistema.
  • Multiprogramação: Vários programas podem estar presentes na memória ao mesmo tempo.
  • Empregos: Um tipo de programa sem qualquer tipo de interação com o usuário.
  • Usuário: Um tipo de programa que envolve interação com o usuário.
  • Processo: A referência que é usada tanto para um trabalho quanto para um usuário.
  • Ciclo de rajada de CPU/IO: Caracteriza a execução de processos, que alterna entre atividades de CPU e de E/S. Os tempos de CPU geralmente são mais curtos do que os tempos de E/S.

Critérios de agendamento de CPU

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

Critérios de agendamento de CPU

Maximizar

Utilização da CPU: A utilização da CPU é a principal tarefa do sistema operacional, garantindo que a CPU permaneça o mais ocupada possível. Ela pode variar de 0 a 100%. No entanto, para um RTOS (Sistema Operacional de Tempo Real), pode variar de 40% para um sistema de baixo nível a 90% para um sistema de alto nível.

Taxa de transferência: O número de processos que concluem sua execução por unidade de tempo é conhecido como taxa de transferência. Portanto, quando a CPU está ocupada executando um processo, trabalho está sendo realizado, e o trabalho concluído por unidade de tempo é chamado de taxa de transferência.

Minimizar

Tempo de espera: O tempo de espera é o período de tempo que um processo específico deve aguardar na fila de prontos.

Tempo de resposta: É o período de tempo decorrido desde o envio da solicitação até o recebimento da primeira resposta.

Tempo de resposta: O tempo de resposta (turnaround time) é o tempo necessário para executar um processo específico. É o tempo total gasto aguardando para ser carregado na memória, aguardando na fila e executando na CPU. O período entre o momento em que o processo é submetido e o momento em que é concluído é o tempo de resposta.

Temporizador de intervalo

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

A maioria dos sistemas operacionais com múltiplos programas utiliza algum tipo de temporizador para evitar que um processo ocupe o sistema indefinidamente.

O que é despachante?

O dispatcher é um módulo que fornece o controle da CPU para o processo. O dispatcher deve ser rápido para que possa ser executado a cada troca de contexto. A latência de despacho é o tempo necessário para o escalonador da CPU parar um processo e iniciar outro.

Funções desempenhadas pelo despachante:

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

Tipos de agendamento de CPU Algorithms

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. Tempo restante mais curto
  4. Agendamento prioritário
  5. Agendamento de Round Robin
  6. Agendamento de fila multinível

Agendamento Algorithms

Agendamento Algorithms

Primeiro a chegar, primeiro a servir

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

Quando um processo entra na fila de prontos, seu PCB (Bloco de Controle de Processo) é vinculado ao final da fila. Portanto, quando a CPU fica livre, ela deve ser alocada ao processo no início da fila.

Características do Método FCFS

  • É um algoritmo de escalonamento 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 desempenho ruim e o tempo de espera geral é bastante alto.

Tempo restante mais curto

A sigla SRT significa Shortest Remaining Time (Tempo Restante Mais Curto). Também é conhecido como escalonamento preemptivo SJF. Nesse método, o processo é alocado à tarefa mais próxima de sua conclusão. Isso impede que um processo mais recente, em estado pronto, impeça a conclusão de um processo mais antigo.

Características do Método de Agendamento SRT

  • Este método é aplicado principalmente em ambientes de processamento em lote, onde é necessário dar preferência a tarefas curtas.
  • Este não é um método ideal para implementar em um sistema compartilhado onde o tempo de CPU necessário é desconhecido.
  • Cada processo está associado à duração de sua próxima execução na CPU, portanto, o sistema operacional usa essas durações para agendar o processo com o menor tempo possível.

Agendamento baseado em prioridade

Agendamento prioritário É um método de agendamento de processos baseado em prioridade. Nesse método, o agendador seleciona as tarefas a serem executadas de acordo com sua prioridade.

O agendamento por prioridade também auxilia o sistema operacional na atribuição de prioridades. Os processos com maior prioridade são executados primeiro, enquanto os processos com prioridades iguais são executados em um esquema de rodízio ou por ordem de chegada (FCFS). A prioridade pode ser definida com base em requisitos de memória, requisitos de tempo e outros fatores.

Agendamento Round-Robin

Rodada robin é um dos algoritmos de escalonamento mais antigos e simples. O nome deste algoritmo vem do princípio round-robin, onde cada pessoa recebe uma parte igual de algo em sequência. É usado principalmente para escalonamento em sistemas multitarefa. Este método ajuda a alcançar a execução de processos sem períodos de inanição.

Características do agendamento Round-Robin

  • O Round Robin é um modelo híbrido que funciona com base em um relógio.
  • O intervalo de tempo atribuído ao processamento de uma tarefa específica deve ser mínimo. No entanto, pode variar de acordo com o processo.
  • Ele se comporta como um sistema de tempo compartilhado que responde a cada processo dentro de um limite de tempo específico.

Trabalho mais curto primeiro

SJF (Shortest Job First) é um algoritmo de escalonamento no qual o processo com o menor tempo de execução é selecionado para ser executado em seguida. Esse método de escalonamento pode ser preemptivo ou não preemptivo. Ele reduz significativamente o tempo médio de espera de outros processos que aguardam execução.

Características do agendamento SJF

  • Cada tarefa está associada a uma unidade de tempo para ser concluída.
  • Nesse método, quando a CPU está disponível, o próximo processo ou tarefa com o menor tempo de conclusão é executado primeiro.
  • É implementado com uma política não preventiva.
  • Este algoritmo é útil para processamento em lote, onde esperar a conclusão das tarefas não é crítico.
  • Isso melhora a produtividade executando primeiro as tarefas mais curtas, que geralmente têm um tempo de resposta menor.

Agendamento de filas de vários níveis

Este algoritmo divide a fila de prontos 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, o tamanho da memória e assim por diante.

No entanto, este não é um algoritmo de agendamento independente, pois precisa usar outros tipos de algoritmos para agendar as tarefas.

Características do agendamento de filas de múltiplos níveis

  • Devem ser mantidas várias filas para processos com características em comum.
  • Cada fila pode ter seu próprio algoritmo de agendamento.
  • Prioridades são atribuídas a cada fila.

O objetivo de um algoritmo de agendamento

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

  • A CPU usa agendamento para melhorar sua eficiência.
  • Isso ajuda você a alocar recursos entre processos concorrentes.
  • A utilização máxima da CPU pode ser obtida com multiprogramação.
  • Os processos que devem ser executados são mantidos na fila de prontos.

Perguntas Frequentes

Não existe um único algoritmo ideal. O algoritmo Shortest Job First (SJF) proporciona o menor tempo médio de espera e é comprovadamente ótimo, mas requer tempos de execução conhecidos e pode deixar tarefas longas sem execução. O algoritmo Round Robin é mais justo para sistemas de tempo compartilhado.

A inanição ocorre quando um processo espera indefinidamente porque tarefas de prioridade mais alta ou mais curtas continuam recebendo a CPU primeiro. É comum em escalonamentos por Prioridade e por Menor Número de Tarefas (SJF), onde processos longos ou de baixa prioridade podem nunca ser executados.

O envelhecimento é uma técnica que aumenta gradualmente a prioridade de processos que aguardaram por muito tempo. Isso evita a inanição em escalonamentos baseados em prioridade, já que mesmo um processo de baixa prioridade eventualmente atinge uma prioridade alta o suficiente para ser executado.

A troca de contexto salva o estado do processo atual e carrega o estado de outro processo a partir de seu PCB (Plano de Controle de Processo), permitindo que a execução seja retomada posteriormente. Trata-se de uma sobrecarga de escalonamento pura, gerenciada pelo despachante a cada troca entre processos.

O escalonador de longo prazo (tarefas) controla quantos processos entram na fila de prontos e define o grau de multiprogramação. O escalonador de curto prazo (CPU) escolhe qual processo pronto será executado em seguida e o executa com muito mais frequência.

O Linux utiliza o agendador EEVDF, que substituiu o Completely Fair Scheduler (CFS) no kernel 6.6. Windows Utiliza um agendador preemptivo baseado em prioridades com divisão de tempo round-robin dentro de cada nível de prioridade.

Modelos de aprendizado de máquina preveem os tempos de execução de processos e ajustam ou selecionam políticas de agendamento para reduzir o tempo de espera e o consumo de energia. Esses agendadores baseados em IA são estudados para data centers, servidores em nuvem e sistemas em tempo real.

Sim. O GitHub Copilot pode gerar código FCFS, SJF, Prioridade e Round Robin, além de diagramas de Gantt e cálculos de tempo de espera. Sempre verifique casos extremos, regras de desempate e fórmulas de tempo médio antes de confiar na saída.

Resuma esta postagem com: