Neste tutorial, aprenderemos um conceito importante em algoritmos de escalonamento de processos de CPU. O nome do conceito importante é First Come First Serve. Este é o algoritmo básico que todo aluno deve aprender para compreender todos os fundamentos dos algoritmos de escalonamento de processos de CPU.
O First Come First Serve abre o caminho para a compreensão de outros algoritmos. Este algoritmo pode ter muitas desvantagens. Mas essas desvantagens criaram algoritmos muito novos e eficientes. Portanto, é nossa responsabilidade aprender sobre os algoritmos de agendamento de processos de CPU por ordem de chegada.
Abreviações importantes
- CPU - - - > Unidade Central de Processamento
- FCFS - - - > Primeiro a chegar, primeiro a servir
- AT - - - > Hora de Chegada
- BT - - - > Tempo de explosão
- WT - - - > Tempo de espera
- TAT - - - > Tempo de retorno
- CT - - - > Tempo de conclusão
- FIFO - - - > Primeiro a entrar, primeiro a sair
Primeiro a chegar, primeiro a servir
O algoritmo de agendamento de CPU por ordem de chegada, também conhecido como FCFS, é o primeiro algoritmo do algoritmo de agendamento de processo de CPU. No algoritmo First Come First Serve, o que fazemos é permitir que o processo seja executado de maneira linear.
Isso significa que qualquer processo que entre primeiro na fila de prontidão será executado primeiro. Isso mostra que o algoritmo First Come First Serve segue o princípio First In First Out (FIFO).
O algoritmo First Come First Serve pode ser executado de maneira preventiva e não preemptiva. Antes de entrar nos exemplos, vamos entender o que é abordagem pré-emptiva e não pré-emptiva no agendamento de processos de CPU.
Abordagem Pré-Emptiva
Neste caso de agendamento preventivo de processos, o sistema operacional aloca os recursos para um processo por um período de tempo predeterminado. O processo transita do estado de execução para o estado pronto ou do estado de espera para o estado pronto durante a alocação de recursos. Essa troca acontece porque a CPU pode atribuir precedência a outros processos e substituir o processo atualmente ativo pelo processo de maior prioridade.
Abordagem Não Preemptiva
Neste caso de agendamento de processo não preemptivo, o recurso não pode ser retirado de um processo antes que ele termine de ser executado. Quando um processo em execução termina e transita para o estado de espera, os recursos são alternados.
Efeito comboio em ordem de chegada (FCFS)
Efeito Convoy é um fenômeno que ocorre no algoritmo de agendamento denominado First Come First Serve (FCFS). O algoritmo de agendamento por ordem de chegada ocorre de forma não preemptiva.
A forma não preemptiva significa que se um processo ou trabalho for iniciado, o sistema operacional deverá concluir seu processo ou trabalho. Até que o processo ou trabalho seja zero, o novo ou próximo processo ou trabalho não inicia sua execução. A definição de Agendamento Não Preemptivo em termos de Sistema Operacional significa que a Unidade Central de Processamento (CPU) será totalmente dedicada até o final do processo ou trabalho iniciado primeiro e o novo processo ou trabalho será executado somente após o término do processo mais antigo ou trabalho.
Pode haver alguns casos que podem fazer com que a Unidade Central de Processamento (CPU) dedique muito tempo. Isso ocorre porque na abordagem não preemptiva do algoritmo de agendamento por ordem de chegada, os processos ou trabalhos são escolhidos em ordem serial. Devido a isso, trabalhos ou processos mais curtos por trás de processos ou trabalhos maiores levam muito tempo para concluir sua execução. Devido a isso o tempo de espera, o tempo de resposta e o tempo de conclusão são muito altos.
Portanto, aqui, como o primeiro processo é grande ou o tempo de conclusão é muito alto, ocorre esse efeito Convoy no algoritmo First Come First Serve.
Suponhamos que o Longer Job leve um tempo infinito para ser concluído. Então, os demais processos terão que esperar o mesmo tempo infinito. Devido a este efeito de comboio criado pelo trabalho mais longo, a fome dos processos de espera aumenta muito rapidamente. Esta é a maior desvantagem do agendamento de processos de CPU FCFS.
Características do agendamento de processos de CPU FCFS
As características do agendamento de processos de CPU FCFS são:
- A implementação é simples.
- Não causa nenhuma causalidade durante o uso
- Adota uma estratégia não preventiva e preventiva.
- Ele executa cada procedimento na ordem em que são recebidos.
- O horário de chegada é utilizado como critério de seleção dos procedimentos.
Vantagens do agendamento de processos de CPU FCFS
As vantagens do agendamento de processos de CPU FCFS são:
- Para alocar processos, utiliza a fila First In First Out.
- O processo de agendamento de CPU FCFS é simples e fácil de implementar.
- No agendamento preventivo da situação FCFS, não há chance de privação de processo.
- Como não há consideração da prioridade do processo, é um algoritmo equitativo.
Desvantagens do agendamento de processos de CPU FCFS
As desvantagens do agendamento de processos de CPU FCFS são:
- Algoritmo de agendamento de CPU FCFS tem longo tempo de espera
- O agendamento de CPU FCFS favorece a CPU em vez de operações de entrada ou saída
- No FCFS existe a possibilidade de ocorrência do Efeito Comboio
- Como o FCFS é tão simples, muitas vezes não é muito eficaz. Períodos de espera prolongados andam de mãos dadas com isso. Todos os outros pedidos ficam ociosos se a CPU estiver ocupada processando um pedido demorado.
Problemas no algoritmo de agendamento de CPU por ordem de chegada
Exemplo
S. No Process ID Process Name Arrival Time Burst Time _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 P 1 A 0 9 2 P 2 B 1 3 3 P 3 C 1 2 4 P 4 D 1 4 5 P 5 E 2 3 6 P 6 F 3 2
Abordagem Não Preemptiva
Agora, vamos resolver este problema com a ajuda do algoritmo de agendamento denominado Primeiro a chegar, primeiro a servir em uma abordagem não preemptiva.
O gráfico de Gantt para o Exemplo 1 acima é:
Tempo de entrega = Tempo de conclusão - Hora de chegada
Tempo de espera = Tempo de retorno - Tempo de estouro
Solução para a pergunta acima, exemplo 1
Sim não | ID do processo | Tempo de chegada | Tempo de explosão | Tempo de conclusão | Tempo de resposta | Tempo de espera | |
---|---|---|---|---|---|---|---|
1 | P1 | A | 0 | 9 | 9 | 9 | 0 |
2 | P2 | B | 1 | 3 | 12 | onze | 8 |
3 | P3 | C | 1 | 2 | 14 | 13 | onze |
4 | P4 | D | 1 | 4 | 18 | 17 | 13 |
5 | P 5 | E | 2 | 3 | vinte e um | 19 | 16 |
6 | P 6 | F | 3 | 2 | 23 | vinte | 18 |
O tempo médio de conclusão é:
CT médio = (9 + 12 + 14 + 18 + 21 + 23) / 6
CT médio = 97/6
CT médio = 16,16667
O tempo médio de espera é:
Peso médio = (0 + 8 + 11 + 13 + 16 + 18) /6
Peso médio = 66/6
Peso médio = 11
O tempo médio de resposta é:
TAT médio = (9 + 11 + 13 + 17 + 19 +20) / 6
TAT médio = 89/6
TAT médio = 14,83334
É assim que o FCFS é resolvido na abordagem não preventiva.
Agora, vamos entender como eles podem ser resolvidos na abordagem preventiva
Abordagem Pré-Emptiva
Agora, vamos resolver este problema com a ajuda do algoritmo de agendamento denominado Primeiro a chegar, primeiro a servir em uma abordagem preventiva.
Na Abordagem Pre Emptive buscamos o melhor processo que está disponível
O gráfico de Gantt para o Exemplo 1 acima é:
char para int
Sim não | ID do processo | Tempo de chegada | Tempo de explosão | Tempo de conclusão | Tempo de resposta | Tempo de espera | |
---|---|---|---|---|---|---|---|
1 | P1 | A | 0 | 9 | 23 | 23 | 14 |
2 | P2 | B | 1 | 3 | 8 | 7 | 4 |
3 | P3 | C | 1 | 2 | 3 | 2 | 0 |
4 | P4 | D | 1 | 4 | quinze | 14 | 10 |
5 | P 5 | E | 2 | 3 | onze | 9 | 7 |
6 | P 6 | F | 3 | 2 | 5 | 2 | 0 |
próximo → ← anterior Para eliminar o problema do desperdício dos sinais de despertar, Dijkstra propôs uma abordagem que envolve o armazenamento de todos os sinais de despertar. Dijkstra afirma que, em vez de dar o alerta diretamente ao consumidor, o produtor pode armazenar o alerta em uma variável. Qualquer um dos consumidores pode lê-lo sempre que precisar. Semáforo são as variáveis que armazenam todos os sinais de despertar que estão sendo transferidos do produtor para o consumidor. É uma variável na qual a leitura, modificação e atualização acontecem automaticamente no modo kernel. O semáforo não pode ser implementado no modo de usuário porque sempre pode surgir uma condição de corrida quando dois ou mais processos tentam acessar a variável simultaneamente. Ele sempre precisa do suporte do sistema operacional para ser implementado. De acordo com a demanda da situação, o Semáforo pode ser dividido em duas categorias.
Discutiremos cada um em detalhes. |