Baixe o app para aproveitar ainda mais
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
Compartilhar