Buscar

SISTEMA OPERACIONAIS TEMP 3 -1 COM RESPOSTA DE EXERCICIOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Escalonamento de processos
Apresentação
Nos computadores atuais, é comum que, em qualquer tarefa que o usuário executar, diversos 
processos e threads estejam disputando acesso à unidade de processamento ou outros recursos. 
Por exemplo, quando um processo espera pela leitura dos dados em um dispositivo de entrada, 
este não pode bloquear o uso da unidade de processamento para outros processos, logo, ele deve 
ser substituído pelo próximo.
Essa tarefa de organizar como os processos devem ser executados é responsabilidade do 
escalonador de processos, que por meio de uma política de decisões, conhecida como algoritmo de 
escalonamento, define a sequência de execução dos processos, de modo a tentar otimizar a 
utilização dos recursos.
Nesta Unidade de Aprendizagem, você vai aprender o que é um escalonador de processos, diversos 
detalhes de seu funcionamento e quais são as principais estratégias utilizadas.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir um escalonador de processos e suas características.•
Diferenciar escalonamento de processos preemptivo e não preemptivo.•
Identificar os tipos de algoritmos utilizados em escalonamento de processos.•
Desafio
Os sistemas operacionais modernos lidam com diversos processos ao mesmo tempo, atribuindo a 
cada um desses os recursos necessários assim que disponíveis. Saber qual processo escolher para 
execução é uma decisão difícil, pois depende das características de cada processo, assim como do 
estado atual do sistema e da estratégia de escalonamento adotada.
Recentemente, você começou a receber e-mails de alguns professores se queixando da demora na 
resposta das requisições enviadas para as pesquisas. Você sabe que os professores precisam ter um 
certo nível de prioridade, contudo, os alunos não podem deixar de ser atendidos por longos 
períodos de tempo, porque os trabalhos deles também precisam ser entregues e você sabe como é 
ter a pressão de prazos como aluno.
Após uma análise do perfil das requisições enviadas, você conseguiu categorizá-las em três grupos 
com prioridade decrescente, respectivamente:
1 - Requisições de professores
2 - Requisições de alunos para projetos de pesquisa
3 - Requisições de alunos para trabalhos das disciplinas
Sabendo que você pode gerenciar o escalonamento das requisições, qual estratégia seria a melhor 
solução para esse problema? Por quê?
Infográfico
O desempenho de um processo depende muito de quais tarefas esse executa, assim como a 
eficiência que lida com os recursos disponíveis pelo sistema. De modo geral, o comportamento dos 
processos tende a alternar entre o processamento e o acesso a recursos, que podem ser de 
diferentes tipos.
No Infográfico a seguir, você vai conhecer melhor o comportamento de um processo e quando este 
pode ser escalonado.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/bbd001b2-dc4a-45b3-8d0f-511f332ca2f7/bab6b945-0e56-49f1-b2cb-0ef5d9afdfc4.jpg
Conteúdo do livro
A complexidade de um sistema operacional aumenta com a presença de múltiplos processos ativos. 
Os computadores modernos são capazes de gerenciar os processos de uma infinidade de tarefas 
diferentes, permitindo enfileirar vários processos para execução. No entanto, há diferentes 
estratégias para determinar a ordem em que os processos serão executados.
Dessa forma, no capítulo Escalonamento de processos, você entenderá quem é o responsável por 
organizar a ordem de execução dos processos, como estas estratégias são definidas e quais as 
principais características de um escalonador de processos e seus tipos.
SISTEMAS 
OPERACIONAIS
OBJETIVOS DE APRENDIZAGEM
 > Definir um escalonador de processos e suas características.
 > Diferenciar escalonamento de processos preemptivo e não preemptivo.
 > Identificar os tipos de algoritmos utilizados em escalonamento de processos.
Introdução
Em computadores modernos, é comum que vários processos compitam pelo acesso 
a uma unidade de processamento ou a outros recursos durante qualquer tarefa 
do usuário. Isso ocorre porque os sistemas operacionais são capazes de gerenciar 
múltiplos recursos simultaneamente, de modo que aqueles necessários sejam 
alocados assim que estiverem disponíveis. Como você pode imaginar, decidir qual 
processo executar em qual momento é uma tarefa complexa, e o responsável por 
ela é o escalonador de processos. 
Neste capítulo, você vai aprender sobre o escalonador de processos e como ele 
funciona. Além disso, entenderá a diferença entre os escalonamentos preemptivos 
e não preemptivos, bem como verá a função de um algoritmo de escalonamento 
e os seus principais tipos.
Escalonamento 
de processos
Juliane Soares
Escalonamento de processos: 
características
Processos são considerados um dos principais conceitos em um sistema 
operacional. De acordo com Machado e Maia (2007), um processo consiste em 
um programa em execução. No entanto, trata-se de uma definição redutora. 
Atualmente, o processador atua como uma linha de produção, executando 
diversos programas em sequência de forma simultânea, como ler livros na 
web, baixar arquivos e navegar na internet. 
A CPU (central processing unit, termo traduzido como unidade central de 
processamento) é a encarregada pela alternância dos programas, que podem 
ser executados por dezenas ou centenas de milissegundos, permitindo que 
cada um tenha autoridade para processar, dando ao usuário, por consequência, 
uma ilusão de paralelismo ou pseudoparalelismo. Pseudoparalelismo é a 
ilusão de que todos os programas estão rodando ao mesmo tempo. Porém o 
que realmente acontece é que um processo em execução é temporariamente 
suspenso para dar lugar ao processamento de outro processo. Para lidar 
com o paralelismo com mais facilidade, foi desenvolvido um modelo capaz 
de organizar programas executáveis em processos sequenciais. 
Como citado anteriormente, um processo pode ser definido como um 
programa em execução, mas deve ser considerado que esse conceito deve 
incluir o valor do contador do programa atual, registradores e variáveis. 
A CPU muda de um processo para outro o tempo todo, troca chamada de 
multiprogramação (BARBOSA, 2018). Considerando isso, é preciso especificar 
no que realmente consiste o pseudoparalelismo.
No sistema operacional, vários processos compartilham recursos ao 
mesmo tempo, e quem decide qual processo deve ser executado é o es-
calonador baseado no algoritmo de escalonamento. Isso significa que o 
escalonamento do processo é o mecanismo pelo qual o sistema determina 
qual processo executar em um determinado momento. Ele é responsável 
por alocar recursos do sistema, como tempo de CPU e memória, para vários 
processos a fim de mantê-los funcionando de forma eficiente e honesta. Os 
objetivos do escalonamento de processos são maximizar o throughput do 
sistema, minimizar o tempo de resposta e garantir que nenhum processo 
consuma recursos do sistema.
De acordo com Maziero (2019), Barbosa (2018) e Tanenbaum e Bos (2015), 
o escalonamento de processos em um sistema operacional tem as seguintes 
características.
Escalonamento de processos2
 � Escalonamento preemptivo e não preemptivo: com o escalonamento 
preemptivo, o sistema operacional pode encerrar um processo em 
execução e alocar a CPU para outro processo. Com o escalonamento 
não preemptivo, o processo continua em execução até liberar volun-
tariamente a CPU.
 � Filas de escalonamento: na maioria dos algoritmos de escalonamento, 
os processos são organizados em filas de acordo com o seu nível de 
prioridade, hora de chegada ou outros critérios. As filas podem ser 
implementadas como estruturas de dados, como listas encadeadas 
ou arrays.
 � Mudança de contexto: quando o sistema operacional muda de um 
processo para outro, ele deve salvar o estado do processo atual e 
restaurar o estado do novo processo. Isso é conhecido como trocade 
contexto e envolve salvar e restaurar registros de CPU, mapeamento 
de memória e outros recursos.
 � Time quantum: em alguns algoritmos de escalonamento, como o es-
calonamento round-robin (que será visto nas próximas seções), cada 
processo recebe um quantum de tempo. O processo pode ser execu-
tado por um determinado período e, se não terminar, é encerrado e 
colocado no final da fila.
 � Inanição: em algoritmos de escalonamento baseados em prioridade, 
existe o risco de alguns processos de baixa prioridade não receberem 
tempo de CPU se os processos de maior prioridade forem escalonados 
continuamente. Isso é conhecido como inanição e pode ser evitado di-
minuindo ou aumentando a prioridade do processo ao longo do tempo.
 � Sobrecarga: o algoritmo de escalonamento de processo tem alguma 
sobrecarga, como o custo de troca de contexto e manutenção de filas 
de escalonamento. A escolha do algoritmo de escalonamento deve 
equilibrar a sobrecarga com o desempenho geral do sistema.
Em geral, o algoritmo de escalonamento é um componente crítico 
do sistema operacional, de modo que a sua correta implementação 
pode afetar significativamente o desempenho e a capacidade de resposta do 
sistema. Daí a importância de conhecer o comportamento padrão do escalo-
namento de processos.
Escalonamento de processos 3
Quase todos os processos executam cálculos alternadamente utilizando 
solicitações de entrada e saída (E/S), que podem ser de disco ou rede. De 
acordo com Tanenbaum e Woodhull (2008), normalmente a CPU funciona 
sem parar por um tempo e, em seguida, faz chamadas de sistema para ler ou 
gravar arquivos. Quando a chamada de sistema é finalizada, a CPU recalcula 
até precisar de mais dados ou gravar mais dados.
Algumas atividades de E/S contam como computação. Por exemplo, quando 
a CPU está copiando bits para a RAM de vídeo para atualizar a tela, ela está 
fazendo cálculos, não E/S, porque a CPU está em uso. Nesse sentido, a E/S 
é quando um processo entra em um estado bloqueado esperando que um 
dispositivo externo conclua o seu trabalho (TANENBAUM; WOODHULL, 2008).
A Figura 1 mostra que alguns processos passam a maior parte do tempo 
computando. Eles são chamados de limitados pela computação ou pela 
CPU. Geralmente, eles têm longos surtos de CPU seguidos por esperas de 
E/S esporádicas. 
Figura 1. Processos limitados pela CPU.
Fonte: Adaptada de Tanenbaum e Woodhull (2008).
Já a Figura 2 mostra que outros processos passam a maior parte do tempo 
esperando por E/S. Eles são chamados de limitados pela E/S e os responsáveis 
por surtos de CPU curtos e esperas de E/S frequentes.
Figura 2. Processos limitados pela E/S.
Fonte: Adaptada de Tanenbaum e Woodhull (2008).
Escalonamento de processos4
Como é possível observar nas Figuras 1 e 2, o principal fator a ser observado 
é o comprimento do surto da CPU, não o comprimento do surto da E/S. Os 
processos limitados por E/S não fazem muita computação entre as solicitações 
de E/S, não porque tais solicitações sejam particularmente demoradas. Não 
importa quanto tempo leva para processar os dados depois que eles chegam: 
eles levam o mesmo tempo para emitir solicitações de hardware a fim de 
ler blocos de disco. É correto afirmar que, à medida que as CPUs ficam mais 
rápidas, os processos tendem a se tornar mais limitados por E/S, caso em 
que vários processos são necessários para manter a CPU totalmente ocupada 
(TANENBAUM; WOODHULL, 2008).
A seguir, você lerá a respeito das principais diferenças entre escalona-
mentos preemptivos e não preemptivos.
Escalonamento de processos: preemptivo 
versus não preemptivo
O escalonamento pode surgir em várias situações, sendo, em primeiro lugar, 
extremamente necessário nas seguintes (TANENBAUM; WOODHULL, 2008).
1. Quando um processo chega à sua conclusão.
2. Quando um processo for obstruído por um semáforo ou por uma ope-
ração de E/S.
Em ambos os casos, quando um processo não pode mais continuar em 
execução, um processo alternativo deve ser selecionado para assumir o 
controle. Além disso, de acordo com Tanenbaum e Woodhull (2008), o dimen-
sionamento normalmente é realizado nas três seguintes ocasiões adicionais 
(embora se possa argumentar que não é totalmente essencial fazê-lo durante 
essas instâncias).
1. Quando um novo processo é criado. Ao lidar com um processo novo, 
é lógico reavaliar a ordem de importância. É plausível que o processo 
original possa exigir um nível modificado de importância para o pro-
cesso descendente.
2. Quando um dispositivo envia um sinal de interrupção para o módulo 
de E/S. Quando ocorre uma interrupção de E/S, ela normalmente indica 
que um dispositivo de E/S concluiu a sua tarefa. Consequentemente, 
qualquer processo que tenha estado parado, aguardando E/S, pode 
Escalonamento de processos 5
agora prosseguir com a execução, pois já está preparado ou capaz 
de fazê-lo.
3. Quando ocorre uma interrupção de relógio. Nesse caso, ela apresenta 
uma chance de determinar se o processo atualmente ativo está em 
operação por uma duração excessiva.
Assim, é possível afirmar que os algoritmos de escalonamento podem 
ser distinguidos pela forma como lidam com essas interrupções de relógio. 
Eles podem ser preemptivos ou não preemptivos. A principal diferença entre 
escalonamento de processo preemptivo e não preemptivo está em como o 
sistema operacional lida com a alocação da CPU aos processos. Os autores 
Barbosa (2018) e Tanenbaum e Bos (2015) definem cada um desses tipos. 
Veja a seguir.
Escalonamento preemptivo
Quando se trata de agendamento de processos, o agendamento preemptivo 
é um tipo que permite que o sistema operacional interrompa um processo em 
execução. Ao fazer isso, a CPU pode ser atribuída a outro processo. Ou seja, 
o algoritmo de escalonamento preemptivo seleciona um processo e permite 
que ele seja executado por um período limitado. Se ainda estiver em execução 
no final do intervalo de tempo, ele é suspenso e o escalonador seleciona 
outro processo para executar (se disponível). A execução do agendamento 
preemptivo requer a interrupção do relógio no final do intervalo para devolver 
o controle da CPU ao agendador. Se nenhum cronômetro estiver disponível, 
o agendamento não preemptivo é a única solução.
A decisão de antecipar um processo depende de certos fatores, incluindo 
prioridade, quantum de tempo ou outros critérios estabelecidos pelo algoritmo 
de escalonamento.
O escalonamento preemptivo permite que o sistema operacional divida o 
tempo da CPU entre vários processos, possibilitando o compartilhamento de 
tempo e a ilusão de execução simultânea. Cada processo recebe uma pequena 
fatia de tempo, conhecida como quantum de tempo, e a CPU é alternada entre 
os processos quando o quantum de tempo expira. Além disso, esse tipo de 
escalonamento garante a imparcialidade, impedindo que qualquer processo 
monopolize a CPU por um período prolongado. Mesmo que um processo 
tenha um tempo de rajada maior, ele pode sofrer preempção para permitir 
que outros processos tenham uma chance justa de execução. 
Escalonamento de processos6
Esse tipo de escalonamento pode melhorar o tempo de resposta 
dos processos interativos. Interrompendo rapidamente um processo 
de execução longa, o sistema operacional pode atender prontamente tarefas 
de alta prioridade ou urgentes, resultando em melhor capacidade de resposta 
do sistema.
Os sistemas de tempo real utilizam o escalonamento porque o cumpri-
mento de prazos rigorosos é crucial. Ele permite que o sistema operacional 
priorize e garanta a execução de tarefas críticas, antecipando processos de 
menor prioridade. Esse tipo de escalonamento também facilita a multitarefa, 
permitindo a execução simultânea de processos, a realização de operações 
de E/S e a resposta a eventos externos enquanto recursos do sistema são 
compartilhados.
Além do mais, essa categoria de escalonamento adiciona complexidade ao 
sistema devido à necessidade de troca de contexto. Quando um processo sofre 
preempção, o sistemaoperacional deve salvar o estado do processo atual e 
restaurar o estado do processo de entrada, o que gera sobrecarga adicional.
Escalonamento não preemptivo
O escalonamento não preemptivo, também conhecido como escalonamento 
cooperativo, é um tipo de escalonamento de processo no qual um processo 
em execução contínua ajuda a manter a CPU até que ele a libere voluntaria-
mente ou entre em um estado de não execução. O sistema operacional não 
interrompe o processo antes de concluir a sua execução.
Quando um algoritmo de escalonamento não preemptivo é utilizado, 
um processo é selecionado para executar e pode continuar executando até 
que seja bloqueado por E/S ou esperando por outro processo, ou até que 
decida renunciar à CPU. O algoritmo não interrompe o processo, mesmo que 
esteja em execução por várias horas. Durante as interrupções do relógio, as 
decisões de agendamento não são tomadas. Uma vez concluído o processa-
mento da interrupção do relógio, o processo que estava em execução antes 
da interrupção retoma a execução, a menos que um processo de prioridade 
mais alta esteja aguardando um tempo de espera.
Escalonamento de processos 7
O escalonamento não preemptivo é baseado na colaboração do 
processo. O processo deve desistir explicitamente do processador ou 
entrar em um estado aguardando o início de outro processo. Essa cooperação 
costuma ser realizada por meio de chamadas de sistema ou mecanismos de 
sincronização fornecidos pelo sistema operacional.
Em relação ao preemptivo, o escalonamento não preemptivo envolve 
uma troca de contexto relativamente mais simples. Como o próprio processo 
decide quando liberar o processador, não há necessidade de alternar entre 
os processos com frequência e repentinamente. Esse tipo de escalonamento 
também pode fornecer um comportamento previsível de execução do pro-
cesso. Depois que um processo começa a ser executado, ele pode continuar 
em execução até atingir um ponto em que desiste voluntariamente da CPU. 
Isso pode ser benéfico para aplicativos em tempo real ou cenários em que 
é necessário um comportamento consistente e determinístico. Esse tipo de 
escalonamento reduz a carga computacional, já que não há necessidade de ve-
rificar, interromper ou alternar frequentemente o contexto entre os processos. 
No entanto, também há desvantagens, considerando que existe a pos-
sibilidade de atrasos caso o processo não renderize a CPU em tempo hábil. 
Se um processo entrar em um loop infinito ou ficar preso em uma tarefa de 
execução longa sem liberar a CPU, outros processos podem ficar sem tempo 
de CPU. Além do mais, o escalonamento não preemptivo pode não fornecer 
uma distribuição justa do tempo de CPU entre os processos. Se um processo 
estiver bloqueando a CPU ou for incapaz de produzi-la, outros processos 
podem ter tempos de espera aumentados ou desempenho reduzido. 
O escalonamento não preemptivo pode ser apropriado em cenários 
em que a colaboração e o comportamento previsível são desejados, 
mas requer consideração cuidadosa para evitar possíveis atrasos e garantir 
uma alocação justa de recursos entre os processos.
Em resumo, a principal distinção entre escalonamento preemptivo e não 
preemptivo é que o escalonamento preemptivo permite que o sistema ope-
racional interrompa à força um processo em execução e aloque a CPU para 
outro processo, enquanto o escalonamento não preemptivo depende de 
processos que desistem voluntariamente da CPU.
Na próxima seção, você lerá sobre algoritmos de escalonamento e suas 
categorias.
Escalonamento de processos8
Escalonamento de processos: algoritmos
O processo de escalonamento é realizado pelo algoritmo de escalonamento. 
Como observa Maziero (2019), algoritmos fornecem uma estrutura fundamental 
para a construção dos escalonadores mais intrincados que são utilizados em 
sistemas operacionais. A necessidade de diferentes algoritmos de escalona-
mento depende do ambiente onde estão sendo utilizados. Isso ocorre devido 
ao fato de que cada área de aplicação e cada sistema operacional têm os 
próprios objetivos exclusivos. Assim, o escalonador deve otimizar diferentes 
parâmetros em sistemas variados. 
É crucial diferenciar entre três ambientes distintos:
1. em lote;
2. interativo;
3. em tempo real.
O Quadro 1 contém algumas características de cada um desses ambientes, 
também considerando as que são comuns entre todos eles.
Quadro 1. Características dos algoritmos de escalonamento
Sistemas Características
Em lote Taxas de saída: maximizar o número de jobs por hora
Tempo de retorno: minimizar o tempo entre envio e 
término
Utilização da CPU: manter a CPU ocupado o máximo de 
tempo possível
Interativos Tempo de resposta: atender as requisições rapidamente
Proporcionalidade: satisfazer as expectativas do usuários
Em tempo real Cumprir prazos finais: evitar perdas de dados
Previsibilidade: evitar a degradação da qualidade em 
sistemas multimídia
Todos Imparcialidade: dar, a cada processo, o mesmo tempo de 
uso de CPU
Imposição da política: garantir que a política declarada 
seja executada
Balanceamento de carga: manter todas as partes do 
sistema ocupadas
Fonte: Adaptado de Tanenbaum e Woodhull (2008).
Escalonamento de processos 9
Veja, a seguir, as especificações sobre cada um deles de acordo com 
Barbosa (2018), Tanenbaum e Bos (2015), Tanenbaum e Woodhull (2008) e 
Machado e Maia (2007).
Em lote
Nos sistemas em lote, não há usuários esperando por uma resposta ime-
diata nos seus terminais. Assim, algoritmos não preemptivos ou algoritmos 
preemptivos com longos períodos para cada processo são apropriados. Esse 
método serve para diminuir o número de trocas de processo, o que, por sua 
vez, melhora o desempenho. 
Em centros de computação que lidam com muitas tarefas em lote, os 
gerentes utilizam três métricas para avaliar o desempenho do sistema. Essas 
métricas são:
 � vazão;
 � tempo de retorno;
 � utilização da CPU. 
A vazão se refere ao número de tarefas que o sistema pode concluir por 
hora. Um número maior de tarefas concluídas por hora é melhor. Já o tempo 
de resposta se refere ao tempo médio entre o envio de um trabalho em lote 
e a sua conclusão. É preferível um tempo de resposta mais curto. Por fim, 
a utilização da CPU é a quantidade de tempo que a CPU está ativamente 
envolvida em tarefas de processamento, expressa como uma porcentagem.
Veja, na sequência, alguns algoritmos utilizados em sistemas de lote.
 � Primeiro a chegar, primeiro a sair (FIFO, do inglês first in, first out): 
algoritmo não preemptivo. Esse algoritmo opera permitindo que os 
processos recebam o tempo da CPU precisamente na ordem em que 
o solicitam. Existe uma linha singular de processos prontos, com o 
primeiro processo que entra no sistema pela manhã começando ime-
diatamente e continuando pelo tempo que for necessário. À medida 
que outros trabalhos entram na fila, eles são adicionados ao final 
da fila. Depois que o processo em execução é bloqueado, o primeiro 
processo na fila continua a ser executado.
Escalonamento de processos10
Considere que existem seis tarefas, A, B, C, D, E e F, em uma fila de 
processamento e que o tempo de execução de cada uma delas é 30, 
25, 2, 5, 18 e 1 segundos respectivamente. Como a tarefa A foi a primeira a chegar, 
será a primeira a ser executada, liberando para a tarefa B somente após os 30 
segundos da sua execução e assim sucessivamente. Caso entre uma nova tarefa 
na fila, ela só será executada ao fim da execução da tarefa F.
 � Tarefa mais curta primeiro (shortest job first): nesse algoritmo não 
preemptivo, o escalonador escolhe, como o nome já diz, a tarefa mais 
curta primeiro. Isso é feito com a suposição de que todos os processos 
na fila têm a mesma importância.
Considere que existem quatro tarefas, A, B, C e D, na fila, e que o 
tempo de execução de cada uma delas é 7, 5, 5 e 3 minutos respec-
tivamente. Utilizando o algoritmo de tarefa mais curta primeiro, essas tarefas 
serão executadas na seguinte ordem: D, B, C e A. Dessaforma, os tempos de 
retorno serão 3, 8, 13 e 20 minutos, resultando em uma média de 11 minutos.
 � Menor tempo de execução restante (shortest remaining time next): 
esse é um algoritmo preemptivo, em que o escalonador seleciona o 
processo cujo tempo de execução restante é o mais curto. Para que isso 
seja bem-sucedido, a duração de cada processo deve ser conhecida 
com antecedência. Quando uma nova tarefa aparece, ela é comparada 
com o tempo de execução restante do processo atual. Se a nova tarefa 
exigir menos tempo para ser concluída do que o processo atual, o 
processo atual será suspenso e a nova tarefa será substituída. Essa 
abordagem é vantajosa para tarefas curtas, que podem ser concluídas 
com rapidez e eficiência.
Um sistema está executando um processo A, cujo tempo de execu-
ção inicial era de 3 minutos, quando um processo B, com tempo de 
execução total de 1 minuto, entra na fila. Considerando que a tarefa A estava 
sendo executada há 1 hora e 30 minutos, o sistema interromperá a sua execução 
e iniciará a execução da tarefa B, pois o seu tempo total é inferior ao restante 
da A. A tarefa A só será finalizada após o término da tarefa B.
Escalonamento de processos 11
Interativo
Para garantir o uso equitativo da CPU entre vários usuários interativos, a 
preempção é essencial. Isso ocorre devido à possibilidade de um processo 
monopolizar o tempo da CPU e causar uma negação de serviço para outros 
processos. Mesmo no caso de loops infinitos não intencionais causados por 
erros de programa, um único processo pode potencialmente bloquear outros 
indefinidamente. Assim, a preempção é uma medida necessária para evitar 
que essa situações ocorram.
Para criar um sistema interativo mais eficiente, é fundamental priorizar a 
redução do tempo de resposta. Isso significa diminuir a quantidade de tempo 
entre o momento em que o usuário insere um comando e o momento em que 
recebe a saída. No caso de um computador pessoal, em que pode haver um 
processo em segundo plano, como leitura e armazenamento de e-mail, a 
solicitação de um usuário para iniciar um programa ou abrir um arquivo pode 
sofrer um atraso na conclusão devido aos recursos utilizados pelo processo 
em segundo plano. Para otimizar a interatividade do sistema, é importante 
focar em minimizar esse tempo de resposta.
Veja, a seguir, alguns algoritmos utilizados em sistemas interativos.
 � Chaveamento circular (round-robin): um algoritmo simples e comumente 
utilizado no escalonamento de processos é a abordagem round-robin, 
também conhecida como chaveamento circular. A cada processo, é 
atribuído um quantum, um intervalo de tempo predeterminado, durante 
o qual ele pode ser executado. Se o processo estiver executando no final 
do seu quantum, a CPU sofrerá preempção e será alocada para outro 
processo. No entanto, se o processo for bloqueado ou encerrado antes 
de completar o seu quantum, a CPU será atribuída a outro processo na-
quele momento. Esse método é fácil de implementar, pois o escalonador 
precisa apenas manter uma lista de processos executáveis. Quando se 
trata de round-robin, a duração do quantum é a questão que se deve 
dar uma atenção especial. O processo de transição entre diferentes 
tarefas requer um tempo específico para executar tarefas administra-
tivas, como salvar e carregar mapas e registros de memória, atualizar 
listas e tabelas, recarregar e limpar o cache de memória, entre outras 
coisas. Uma abordagem para aumentar a eficiência da CPU é ajustar o 
quantum, embora seja importante ter cuidado, pois diminuir muito o 
quantum leva a um aumento na comutação do processo e a um declínio 
na eficiência, enquanto o alongamento do quantum pode resultar em 
um tempo de resposta lento para curtas solicitações interativas.
Escalonamento de processos12
Suponha que uma fila de processamento tenha o processo A com 
um quantum predefinido de 30 segundos e que haja um próximo 
processo já na fila. Se, ao final dos 30 segundos, o processo A ainda não tiver 
sido concluído, o sistema automaticamente interromperá a sua execução e 
passará para o próximo processo, enviando o processo A para o final da fila.
 � Escalonamento por prioridade: o algoritmo por prioridade se con-
centra em atribuir prioridade aos processos com base no seu nível de 
importância. O processo de prioridade mais alta que está pronto para 
ser executado tem permissão para executar. Cada processo recebe 
um quantum de tempo e, se o processo esgotar o seu tempo alocado, 
o próximo processo com prioridade mais alta tem a oportunidade de 
ser executado. Existem dois tipos de prioridades de execução: estática 
e dinâmica. A prioridade estática permanece inalterada enquanto o 
processo estiver ativo. Por outro lado, a prioridade dinâmica muda 
com base em critérios determinados pelo sistema operacional.
O sistema costuma agrupar os processos em diferentes classes de 
prioridade. Considere a classe 4 como a mais alta e a 1 como a mais 
baixa. Enquanto houver processos a serem executados na classe 4, os demais 
seguirão na fila até que esses processos, um de cada vez, sejam concluídos. 
Caso a classe 3 esteja vazia, o sistema passa para os processos existentes na 
classe de prioridade 2 e assim sucessivamente.
 � Escalonamento por múltiplas filas: esse algoritmo envolve a criação 
de classes de prioridade. Os processos de classe de prioridade mais 
alta recebem um quantum para executar, enquanto os próximos pro-
cessos de classe de prioridade mais alta recebem dois quanta para 
executar. Os processos na classe subsequente podem executar quatro 
quanta e assim por diante. Depois que um processo é executado pelo 
número permitido de quanta, ele é rebaixado para a próxima classe 
de prioridade mais baixa.
Escalonamento de processos 13
Considere um processo que requer computação contínua de 100 
quanta. Inicialmente, ele recebe um único quantum antes de ser 
trocado. Posteriormente, recebe dois quanta antes de ser trocado e, nas exe-
cuções seguintes, 4, 8, 16, 32 e 64 quanta. No entanto, apenas 37 dos 64 quanta 
finais são utilizados para concluir o trabalho. 
Com um algoritmo round-robin puro, seriam necessárias 100 trocas, incluindo 
a carga inicial. Porém, com esse processo, são necessárias apenas sete trocas. 
Além disso, à medida que o processo desce nas filas de prioridade, ele é execu-
tado com menos frequência, permitindo a conservação da CPU para processos 
interativos mais curtos.
A seguinte política foi estabelecida para evitar que um processo, inicial-
mente exigindo longos períodos para ser executado, mas depois se tornando 
interativo, seja punido eternamente: ao pressionar a tecla “Enter” em um 
terminal, o processo pertencente a esse terminal é elevado à classe de prio-
ridade mais alta em antecipação à sua interatividade iminente.
Em tempo real
Ao lidar com sistemas de tempo real, a preempção nem sempre é necessária, 
pois os processos estão cientes das suas restrições de tempo e tendem a 
concluir as suas tarefas atribuídas prontamente antes de serem bloqueados. 
Isso é surpreendentemente verdadeiro, embora possa parecer contraintui-
tivo. Em comparação, os sistemas interativos são diferentes dos sistemas de 
tempo real porque executam todos os programas, incluindo os maliciosos. Os 
sistemas de tempo real executam apenas programas necessários para uma 
aplicação específica. Os sistemas interativos, por outro lado, são versáteis 
e podem executar qualquer tipo de programa.
No domínio dos sistemas de tempo real, o escalonamento prioritário é 
considerado o método mais adequado. Isso acontece porque a prioridade 
de cada tarefa está ligada ao seu processo e, portanto, a importância de 
cada tarefa dentro do aplicativo é levada em consideração. No contexto do 
escalonamento em tempo real, a prioridade de um processo deve permanecer 
estática e não há alocação de tempo para cada tarefa ser executada.
Os sistemas de tempo real têm características únicas, que os distinguem 
dos sistemas interativos, e, por consequência, diferentesobjetivos para 
escalonamento. Eles são identificados pela presença de prazos rígidos que 
devem ser cumpridos. Por exemplo, se um computador estiver a cargo de um 
dispositivo que gera dados em um ritmo consistente, perder o prazo do pro-
Escalonamento de processos14
cesso de coleta de dados poderá levar à perda de dados. Portanto, a principal 
obrigação de um sistema de tempo real é cumprir quase todos os prazos.
Ao lidar com sistemas de tempo real, sobretudo aqueles que envol-
vem multimídia, garantir a previsibilidade é crucial. Embora prazos 
perdidos ocasionais sejam toleráveis, se o processo de áudio apresentar muita 
inconsistência, a qualidade do som diminuirá rapidamente. Embora o vídeo 
também possa representar um problema, o ouvido humano é significativamente 
mais sensível ao atraso do que o olho humano. Para evitar que esse problema 
surja, é necessário que o escalonamento do processo seja extremamente pre-
visível e uniforme.
Os sistemas de tempo real podem ser classificados em duas categorias: 
 � tempo real crítico;
 � tempo real não crítico. 
Os sistemas de tempo real críticos têm prazos inflexíveis que devem ser 
cumpridos, enquanto os sistemas de tempo real não críticos podem tolerar 
prazos perdidos, mas apenas até certo ponto. Em ambos os casos, o programa 
é dividido em processos previsíveis que são executados um após o outro. 
Esses processos geralmente são breves e podem ser concluídos em menos 
de um segundo. Para cumprir todos os prazos, o escalonador é responsável 
por organizar os processos quando um evento externo é detectado. 
Os algoritmos de escalonamento em tempo real podem ser classifica-
dos como estáticos ou dinâmicos. Algoritmos estáticos determinam as suas 
decisões de escala antes que o sistema esteja operacional, enquanto algo-
ritmos dinâmicos tomam as suas decisões durante o tempo de execução. O 
escalonamento estático só é eficaz quando a informação ideal é fornecida 
de antemão sobre as tarefas a serem concluídas e os prazos que devem ser 
cumpridos. Em contraste, os algoritmos de dimensionamento dinâmico não 
são restringidos por essas condições.
Todos os sistemas
Em qualquer caso, a justiça é importante. Processos comparáveis merecem 
serviços comparáveis. É injusto dar a um processo muito mais tempo de CPU 
do que o dado a um processo equivalente. No entanto, diferentes categorias 
de processos podem ser tratadas de forma diferente.
Escalonamento de processos 15
Um aspecto crucial da justiça é a adesão às políticas do sistema. Nos casos 
em que a política determina que os procedimentos de controle de segurança 
devem ser executados a qualquer momento, mesmo que cause um atraso de 
30 segundos no processamento de uma tarefa, o agendador deve garantir 
que essa política seja implementada e seguida rigorosamente.
Um objetivo comum é garantir que os componentes do sistema sejam 
utilizados o máximo possível. Se todos os componentes, incluindo a CPU e 
todos os dispositivos de E/S, permanecerem ativos o tempo todo, a saída 
por segundo aumenta em comparação com certas partes que permanecem 
ociosas. É aconselhável misturar com cuidado os processos para manter 
todo o sistema funcionando simultaneamente, o que se chama de equilíbrio. 
Quando as tarefas vinculadas à E/S entram em ação, elas competem pelo 
disco e a CPU permanece inativa durante esse período.
Neste capítulo, você viu que o escalonamento de processos é fundamental 
para o funcionamento ideal dos sistemas operacionais e computadores atuais, 
visto que, quanto mais evoluem, maior capacidade de execução de processos 
eles adquirem. Por fim, viu como é importante conhecer as diferenças entre 
os seus tipos de escalonadores e algoritmos para entender qual é a melhor 
abordagem conforme cada necessidade.
Referências
BARBOSA, C. S. Sistemas operacionais. Londrina: Editora e Distribuidora Educacional, 
2018.
MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: 
LTC, 2007. 
MAZIERO, C. A. Sistemas operacionais: conceitos e mecanismos. Curitiba: DINF-UFPR, 
2019.
TANENBAUM, A. S.; BOS, H. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson, 
2015.
TANENBAUM, A. S.; WOODHULL, A. S. Sistemas operacionais: projeto e implementação. 
3. ed. Porto Alegre: Bookman, 2008.
Os links para sites da web fornecidos neste capítulo foram todos 
testados, e seu funcionamento foi comprovado no momento da 
publicação do material. No entanto, a rede é extremamente dinâmica; suas 
páginas estão constantemente mudando de local e conteúdo. Assim, os editores 
declaram não ter qualquer responsabilidade sobre qualidade, precisão ou 
integralidade das informações referidas em tais links.
Escalonamento de processos16
Dica do professor
A existência de diversos processos ativos em um sistema operacional trouxe maior complexidade. 
Quando os computadores eram voltados a tarefas mais específicas, o sistema operacional permitia 
a existência de múltiplos processos, contudo, somente ficava pronto um por vez, aguardando a sua 
execução.
Atualmente, os computadores gerenciam também múltiplos processos, porém de tarefas diferentes, 
o que permite a espera de vários processos prontos em uma fila. Entretanto, estar em uma fila de 
espera não significa ser executado nessa ordem, necessariamente. A decisão de qual processo 
executar pode se basear em diferentes estratégias, as quais são conhecidas como algoritmos de 
escalonamento de processos.
Nesta Dica do Professor, você aprenderá os principais algoritmos de escalonamento e as categorias 
pertencentes a ele.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
 
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/361bfd0c5d713595473aad2010107d55
Exercícios
1) Em um computador de um usuário existem três processos (A, B e C) na fila de 
escalonamento, respectivamente, competindo pelo uso da unidade de processamento. Sabe-
se que o sistema operacional implementa o algoritmo round-robin e também que o quantum 
é 10ms. Todos os processos são dependentes da unidade de processamento apenas, e o 
tempo estimado de execução de cada um é, respectivamente, 10ms, 40ms e 60ms.
Depois de quantos milissegundos o processo B estará encerrado?
A) 100ms.
B) 80ms.
C) 50ms.
D) 40ms.
E) 10ms.
2) Os algoritmos de escalonamento podem ser divididos em duas principais categorias: 
preemptivos e não preemptivos. A respeito da preempção, assinale a alternativa correta 
quanto às possíveis consequências que a sua implementação pode ocasionar:
A) Um algoritmo preemptivo permite que os processos executem por períodos superiores a um 
dado quantum, mesmo que haja outros na fila.
B) Um algoritmo não preemptivo sempre interrompe um processo após um determinado 
quantum.
C) Um algoritmo preemptivo interrompe a execução do processo quando este ainda está em 
execução, porém consome todo o seu quantum.
D) Um algoritmo preemptivo somente escalona um processo quando este sofre uma interrupção 
de entrada/saída.
E) Um algoritmo preemptivo somente escalona um processo quando este aciona o bloqueio para 
entrada/saída.
3) 
Em decorrência da variedade de tipos de processo e usuários, a obtenção de um algoritmo 
ótimo não é uma tarefa fácil, pois haverá pontos fortes e fracos em cada abordagem. 
Contudo, existem características essenciais para grupos específicos de usuários ou 
processos. Quanto aos processos voltados aos sistemas em lote, qual das seguintes 
características é relevante somente para essa categoria em específico?
A) Vazão.
B) Justiça.
C) Previsibilidade.
D) Cumprimento de prazos.
E) Tempo de resposta.
4) Um aspecto importante no processo de escalonamento é a definição do quantum de cada 
processo. A definição de um intervalo de tempo maior ou menor pode resultar em pontos 
positivos ou negativos. Quanto a isso, assinale a alternativa correta:
A) O processamento de escalonamento não tem uma perda significante de desempenho com um 
quantum de4ms e chaveamento de processo de 1ms.
B) O processo de escalonamento de um quantum de 100ms não resulta em grande tempo de 
espera em filas com 100 processos.
C) A utilização de um quantum grande (maior que 50ms) pode agilizar o tempo de resposta em 
processos que tomem menos de 10ms.
D) O uso de um quantum pequeno gera uma perda maior pelo chaveamento em relação ao 
processamento.
E) O tempo de chaveamento de processo é insignificante para qualquer quantum adotado.
5) Um sistema operacional A implementa o algoritmo de escalonamento "tarefa mais curta 
primeiro". Considerando que em um dado momento existem cinco processos na fila, cada um 
com os respectivos tempos 20ms, 10ms, 15ms, 12ms e 5ms. Qual é o (s) tempo (s) de retorno 
desse conjunto de processos? 
A) 20, 30, 45, 57 e 62.
B) 5, 15, 27, 42 e 62.
C) 42,8
D) 11,4.
E) 20, 35, 47, 57, 62.
Na prática
Existem diversos algoritmos de escalonamento, cada qual com uma estratégia específica em busca 
de resolução do problema. As aplicações podem ter características específicas que façam um 
algoritmo ser melhor em um cenário e pior em outro. Nesse sentido, realmente é difícil obter um 
algoritmo que seja ótimo para todos os casos.
Na Prática, você vai conhecer um cenário de aplicação de algoritmos de escalonamento, em que 
uma escolha errada pode resultar em muitos problemas.
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/61120489-4844-40b1-b821-9320b480a98f/779b48ee-4266-469b-8131-3cefa8418cbe.jpg
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Processos e escalonamento em sistemas operacionais
Nesta videoaula da Univesp TV, você poderá rever os conceitos vistos e algumas categorias de 
algoritmos de escalonamento.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Projeto de implementação de um escalonador em Java
Neste projeto, você poderá conhecer, de forma didática, a implementação de um escalonador de 
processos usando a linguagem Java para os algoritmos first-come first-served, shortest job first e 
round robin.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Escalonamento de processos
Nesta videoaula da Univesp TV, você poderá aprender quais são os principais algoritmos de 
escalonamento de processos usados em sistemas operacionais.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/mVz3s_03GkA
https://github.com/douglasrafael/Escalonador
https://www.youtube.com/embed/MWbPgxOCrFk

Continue navegando