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:
- Um processo muda do estado de execução para o estado de espera.
- O processo específico muda do estado de execução para o estado pronto.
- O processo específico muda do estado de espera para o estado de pronto.
- 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
- Primeiro a chegar, primeiro a servir (FCFS)
- Programação Shortest-Job-First (SJF)
- Menor Tempo Restante
- Agendamento prioritário
- Agendamento de Round Robin
- Agendamento de fila multinível
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.