Skip to content

pferreirafabricio/cpu-scheduling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 

Repository files navigation

Escalonamento de CPU 📊

Não Preempritivo: O processo não pode ser interrompido
Preempritivo: Pode ser interrompido

➡️ Escalonamento FIFO (First In First Out) ↘️:

  • O escalonamento FIFO, significa o primeiro processo a “chegar” será o primeiro a “sair”, ou seja, ser executado, além de não poder ser interrompido até o final de sua execução (não preemptivo).

Exemplo: Em uma analogia simples com um estacionamento de um shopping, em que há uma fila para poder entrar e sair do mesmo, o 1º carro a chegar, será o 1º a sair também.

💹 Escalonamento HPF (Highest Priority First):

  • Nesse escalonamento, o que define a ordem de execução é a prioridade do processo, logo processos como o do sistema operacional, por exemplo, serão executados antes de outros mais secundários.

Exemplo: Utilizando ainda o exemplo do estacionamento, seria o caso de chegar um carro ao estacionamento de uma pessoa super importante do governo, sendo colocado como o 1º da fila para entrar no estacionamento.

🤏 Escalonamento SJF (Shortest Job First):

  • É quase o contrário do HPF, definindo agora o processo a ser executado pelo seu tamanho, ou seja, quanto menor o processo mais rápido ele será executado, sendo posto assim para ser 1º que outros processos.

Exemplo: No caso do estacionamento, seria o caso de alguém com um meio de locomoção menor, como uma bicicleta, entrar antes de um carro por exemplo, visto que uma bicicleta é menor e mais rápida de entrar e “estacionar”.

⚖️ Escalonamento HRN (Highest Response-Ratio Next):

  • Administra de forma dinâmica os processos que estão na fila, levando em consideração seu tempo de execução e prioridade, unindo assim os escalonamentos SJF e HPF, colocando o processo com maior prioridade para execução, mas depois de concluído, podendo trocá-lo por um processo com menor tempo de execução.

Exemplo: Em um estacionamento, seria o caso de ser a vez da bicicleta entrar, contudo acaba de chegar o carro do presidente do país para entrar no estacionamento, passando assim a entrada ao carro.

🔻 Escalonamento SRT (Shortest Remaining Time):

  • É a versão preemptiva do SJF, ou seja, pode ser interrompida durante sua execução. Possui a mesma ideia de processar primeiro processos menores, porém caso o processo que estiver sendo executado tiver um tempo para ser finalizado maior que o tempo de execução do novo processo que chegou, ele será substituído, voltando para o final da fila.
  • Contudo, voltará somente com o tempo que faltava para terminar seu processamento, ou seja, se o Processo A levava 12s para ser concluído e foi interrompido com 5s de execução, pois chegou um processo B que levava só 2s para ser processado, o processo A voltará para o final da fila faltando 7s para terminar de ser processado pela CPU.

Exemplo: Fazendo uma analogia com um supermercado, podemos imaginar uma fila de um atendimento caracterizado como “Caixa Rápido”, a onde há alguém (Pessoa A) sendo atendido com 7 produtos, dos quais 2 já foram passados pela caixa, porém acaba de chegar mais uma pessoa (Pessoa B) a fila com apenas 2 produtos, logo essa pessoa passará imediatamente a frente da Pessoa A e a mesma voltará ao final da fila, agora com apenas 5 produtos restando.

🔃 Escalonamento RR (Round Robin):

  • É quase igual ao FIFO, com a organização segundo a ordem de chegada, porém nele existe a presença de um intervalo chamado de Quantum, o qual define o tempo que cada processo terá para ser executado, terminando esse tempo e o processo não sendo terminado de ser executado, ele voltará ao final da fila, tendo seu contexto salvo, e aguardará ser processado novamente.

Exemplo: Utilizando as pessoas A e B do exemplo anterior, na mesma fila do supermercado, imaginemos que existe um tempo (Quantum) para a atendente do caixa conseguir passar as compras, por exemplo de 10s, todas as compras da Pessoa A levam cerca de 21s para serem passadas e da Pessoa B 8s.
Assim quando for a vez da Pessoa A ser atendida, ela terá que voltar ao final da fila novamente, com seu contexto de 11s restantes para terminar de ser atendida (visto que 21s da Pessoa A menos 10s da atendente é igual aos 11s restantes), porém a Pessoa B será atendida de uma vez, sem a necessidade de voltar novamente a fila.

🌫️ Escalonamento MQ (Multilevel Queues):

  • Cada tipo de processo é separado em uma fila específica para ele, havendo agora uma ordenação de quais filas são mais importantes e precisam ser executadas primeiro, ou seja, processos do sistema ficam em uma fila que tem a maior prioridade, processos secundários ficam em outra fila (podendo ter um outro tipo de processo como o FIFO por exemplo), processos RR ficam em outra fila e assim por diante, sendo assim, cada fila pode ter um tipo diferente de escalonamento.

Exemplo: Fazendo a analogia com o as filas de um supermercado, onde há caixas (filas) específicas para cada necessidade (processo), por exemplo, há uma fila para pessoas com necessidades especiais (idosos, gestantes, deficientes e etc), uma fila para compras rápidas, uma fila para compras mais extensas e etc, além de que, dependendo da ocasião, uma determinado fila pode ter uma atenção (prioridade) maior que as demais.

➡️ 🔃 Escalonamento MFQ (Multilevel Feedback Queues):

  • É baseado em filas encadeadas, ou seja, uma após a outra, não sendo mais separadas pelo tipo de processo. Todos os novos processos são sempre colocados na 1ª fila que tem o escalonamento FIFO, assim como a 2ª, 3ª ..., menos a última fila, possuindo o escalonamento RR, visto que é necessário que todos os processos sejam finalizados de alguma maneira.

Exemplo: No caso de um supermercado, podemos imaginar uma fila que leva logo a outra, sendo que as pessoas que chegaram primeiro são também as primeiras a chegarem a última fila, que tem por objetivo de que terminem todas as compras, acontecendo nela o mesmo exemplo do escalonamento RR, entre a Pessoa A e a Pessoa B.

♻️ Contribua

Acha que alguma explicação ficou confusa ou que poderia ser melhor? Quer adicionar algum vídeo ou imagem para complementar a explicação? É só mandar um Pull Request com a sua alteração 😃

  1. Clone esse repositório;
  2. Crie uma branch com a sua alteração: git checkout -b adiciona-video-fifo
  3. Commit suas mudanças: git commit -m 'feat: Adiciona vídeo de explicação sobre FIFO'
  4. Push sua branch: git push origin adiciona-video-fifo

📃 Licensa

Esse projeto está sob a licensa MIT. De uma olhada nela LICENSE para mais detalhes.

About

📊 Explicação simples sobre escalonamento de CPU

Topics

Resources

License

Stars

Watchers

Forks

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy