Processos  
                   
Escalonamento da CPU
  Conceitos Básicos
                              Escalonamento de Processador
                              Critérios de Escalonamento
                              Escalonamento Não Preemptivo
                              Escalonamento Preemptivo
                              Mecanismos de Interrupção em Intervalos de Tempo
                              Prioridades
                              Algoritmos de Escalonamento
                              Escalonamento para Vários Processadores
                              Escalonamento em Tempo Real
                              Estudo de Casos: Escalonamento no Unix, Windows XP,
                               Linux e de Threads


Eduardo Nicola F. Zagari
                            2
                   Escalonamento de CPU
  Multiprogramação: corresponde a diversos programas distintos
                   executando em um mesmo processador
                       maximiza utilização da CPU
               No entanto, somente um processo é executado a cada instante
                   em um processador
               Toda vez que um processo tiver que esperar (evento ou E/S)
                   outro processo usa a CPU (“ciclo de vida” de um processo)
                       A execução de um processo consiste de um ciclo de execução de
                            CPU e espera de I/O
                                               escalonado
                                  pronto                     execução
                                               interrupção
                                                                        Escalonador
                                                               espera
                              E/S ou evento     bloqueado      por E/S
                                                               ou evento
Eduardo Nicola F. Zagari
                            3
                    Escalonamento de CPU
Eduardo Nicola F. Zagari
   4
   Escalonamento de CPU
  Conhecido como Escalonador de Processsos 
               Determina/Escolhe, dentre os processos que estão em memória,
                   qual processo será associado a uma CPU, quando esta estiver
                   disponível
               Age sobre os processos prontos para executar (processos do
                   estado de pronto)
               Segue uma política de escolha
               Executado várias vezes por segundo
               Reside permanentemente na memória




Eduardo Nicola F. Zagari
                    5
                    Escalonamento de CPU
  Situação para escalonamento:
                       processo passa do estado em execução para pronto
                       processo passa de em execução para espera/bloqueado
                       processo passa de espera/bloqueado para pronto
                       processo termina
               Preempção: é quando um processo em estado de pronto tem
                   precedência sobre o que está usando a CPU.
               Escalonamenteo Não-Preemptivo: não contempla as
                   preempções, isto é, o escalonador não interrompe os processos
                   que estão em execução.
               Escalonamento Preemptivo: que contempla a preempção das
                   tarefas, isto é, provoca uma interrupção forçada de um processo
                   para que outro, com a preempção, possa usar a CPU.



Eduardo Nicola F. Zagari
                        6
                         Escalonamento de CPU
  Determina qual processo no estado pronto para executar será
                   associado a uma CPU, quando esta estiver disponível
               É executado várias vezes por segundo
               Reside permanentemente na memória




Eduardo Nicola F. Zagari
                    7
                     Escalonamento de CPU
  Determina quais os processos que poderão competir pela CPU
               Responsável pela suspensão e ativação de processos, o que
                   significa flutuações na carga do sistema visando um melhor
                   balanceamento
               Atua como um buffer entre a admissão de jobs e a associação
                   da CPU aos processos que constituem os jobs admitidos
               Job: é um conjunto de atividades necessárias para a realização
                   do trabalho computacional requerido por um usuário (divide-se
                   em diversos steps (passos) )




Eduardo Nicola F. Zagari
                    8
                    Escalonamento de CPU
  Determina quais jobs serão admitidos e poderão competir pelos
                   recursos do sistema (admission scheduling)
               Permite que não existam jobs em demasia no sistema, o que
                   acarretaria uma eterna competição pelos recursos
               Todo job, uma vez admitido, acarreta na criação de um ou mais
                   processos




Eduardo Nicola F. Zagari
                     9
                       Escalonamento de CPU
  O módulo Dispatcher dá o controle da CPU para o processo
                   selecionado pelo escalonador de curto prazo. Isto envolve:
                       Troca de contexto
                       Mudança do processador para o Modo Usuário
                       Salto para a localização adequada no programa do usuário para o
                            seu reinício
               Latência de Despacho – tempo que leva para o dispatcher parar
                   um processo e reiniciar a execução de outro




Eduardo Nicola F. Zagari
                        10
                       Escalonamento de CPU
  Utilização da CPU: % do tempo que a CPU fica ocupada (0 -
                       100%)
                      Throughput: número de processos completados por unidade de
                       tempo
                      Turnaround: intervalo de tempo entre a submissão de um
                       processo e sua finalização (soma dos intervalos esperando
                       para ser carregado na memória, fila de pronto, em execução e
                       em espera)
                      Tempo de espera: tempo que cada processo fica na fila de
                       pronto
                      Tempo de resposta: tempo que o processo demora para
                       produzir alguma resposta à uma requisição (importante para
                       processos interativos)

                   É desejável maximizar os 2 primeiros e minimizar os 3 últimos
                   Para sistemas interativos, é importante minimizar a variância do
                       tempo de resposta (previsibilidade)



Eduardo Nicola F. Zagari
                           11
                    Escalonamento de CPU
  Objetivos das políticas de escalonamento:
                   maximizar a utilização da CPU
                       maximizar o throughput
                       minimizar o turnaround
                       minimizar o tempo de espera
                       minimizar o tempo de resposta
                       ser justa
                       maximizar o número de usuários interativos
                       ser previsível
                       minimizar o uso de recursos
                       balancear o uso de recursos
                       balancear usuários interativos com os demais
                       priorizar processo que segurem recursos chave
                       não degradar o sistema
                       etc



Eduardo Nicola F. Zagari
                              12
               Escalonamento de CPU
  Não permite a retirada da CPU de um processo após este tê-la
                   conseguido
               Tempo de resposta é mais previsível


                                    É mais justo?

               Processos curtos precisam esperar pelos longos
               Permite monopolização da CPU




Eduardo Nicola F. Zagari
                  13
                    Escalonamento de CPU
  Permite que a CPU seja retirada de um processo para ser
                   entregue a outro
               Garante que os processos possam progredir uniformemente
               Não permite a monopolização da CPU
               Usado para:
                       atendimento rápido de processos mais importantes
                       tratamento de interrupções em sistemas de tempo real
                       atender os usuários em sistemas de tempo compartilhado
               A mudança de contexto envolve sobrecarga




Eduardo Nicola F. Zagari
                        14
                        Escalonamento de CPU
  Para prevenir processos do usuário de monopolizar o sistema
                   (CPU), por acidente ou de propósito, uma interrupção por tempo
                   é usada
                                        quantum ou time-slice

                             é o tempo limite para uso da CPU, após o qual ocorre a
                              interrupção por tempo
               Um processo do usuário, uma vez interrompido por término do
                   seu quantum, volta à fila de pronto para executar e permite o
                   escalonamento de outro processo
               Um processo em execução mantém controle sobre a CPU até:
                       voluntariamente liberá-la
                       quantum time expirado
                       outra interrupção exija atenção da CPU para que seja tratada
                       erro de execução

Eduardo Nicola F. Zagari
                              15
                    Escalonamento de CPU
  Podem ser fixas (estáticas) durante a vida do processo ou
                   modificáveis (dinâmicas)
               Podem ser associadas externamente ou de maneira automática
               Podem ser calculadas e associadas de forma racional ou
                   arbitrária




Eduardo Nicola F. Zagari
                     16
                 Escalonamento de CPU
  FIFO (First-In First-Out) (também conhecido por FCFS (First-
                   Come First-Served))
               SJF (Shortest Job First)
               Round-Robin
               SRT (Shortest Remaining Time)
               Prioridade
               Múltiplas Filas
               Múltiplas Filas com Realimentação
               Escalonamento para Vários Processadores
               Escalonamento de Tempo Real
                       Earliest Deadline




Eduardo Nicola F. Zagari
                    17
                   Escalonamento de CPU
  Não preemptivo (Uma vez em execução, é executado até o
                   término)
               O processo que chegar primeiro (first-in) é o primeiro a ser
                   selecionado para execução (first-out)
               Implementado através de fila
               Inicialmente criado para sistemas batch
               Injusto com jobs curtos (veja exemplos!)
               Ineficiente para sistemas de tempo compartilhado
               Combinado com outros esquemas




Eduardo Nicola F. Zagari
                     18
                   Escalonamento de CPU
Suponha que os processos cheguem na ordem P1, P2 e P3




         Turnaround médio = ( 10 + 12 + 14 ) / 3 = 12 u.t.
         Tempo de espera médio = ( 0 + 10 + 12) / 3 = 7,33 u.t.




Eduardo Nicola F. Zagari
                      19
                    Escalonamento de CPU
Suponha que os processos cheguem na ordem P2, P3 e P1




         Turnaround médio: ( 14 + 2 + 4 ) / 3 = 6,67 u.t.
         Tempo de espera médio = ( 4 + 0 + 2) / 3 = 2 u.t.




Eduardo Nicola F. Zagari
                      20
                    Escalonamento de CPU
  Não preemptivo
               O processo com o menor tempo para ser completado é
                   escolhido 
                       quando a informação sobre o tempo de execução não se encontra
                            disponível   deve ser estimado ou usa-se o da última vez
                       desempate pode ser, por exemplo, por FIFO
               Reduz tempo médio de espera          mais do que isto: SJF é
                   ótimo, pois dá o tempo de espera mínimo para um dado
                   conjunto de processos
               No entanto, apresenta uma grande variância no tempo de
                   espera




Eduardo Nicola F. Zagari
                           21
                       Escalonamento de CPU
  Turnaround médio FIFO: (6+14+21+24)/4 = 16,25 u.t.
         Tempo de espera médio: (0 + 6 + 14 + 21)/4 = 10,25 u.t.




         Turnaround médio SJF: (3 + 9 + 16 + 24) / 4 = 13 u.t.
         Tempo de espera médio: (3 + 16 + 9 + 0) / 4 = 7 u.t.

Eduardo Nicola F. Zagari
                22
                       Escalonamento de CPU
  O processo em execução libera voluntariamente a CPU
                   retornando para a fila de pronto sem a interrupção do sistema
                   operacional (não preemptivo)
               Um programa mal escrito pode monopolizar a CPU
               Fila de mensagem é verificada periodicamente (Win 3.11)




Eduardo Nicola F. Zagari
                     23
                    Escalonamento de CPU
  Define-se uma unidade de tempo denominada quantum ou time-
                   slice (usualmente de 10 a 100ms) que corresponde ao tempo
                   limite para uso da CPU por cada processo
               Após este tempo ter sido passado, o processo sofre preempção
                   e é colocado no final da fila de pronto
               A fila de pronto é tratada como uma fila circular (FIFO)
               O escalonador “pega” o primeiro processo da fila de pronto para
                   ser executado e define um timer para o tempo de 1 quantum
               Se o tempo de execução for maior que 1 quantum, o timer gera
                uma interrupção e o SO faz o chaveamento de contexto
               Projetado para sistemas de tempo compartilhado
                       Se houver n processos na fila de pronto e o tempo do quantum for
                            q, então cada processo obtém 1/n do tempo da CPU e fatias de no
                            máximo q unidades de tempo por vez. Nenhum processo espera
                            por mais que (n-1)q unidades de tempo.


Eduardo Nicola F. Zagari
                            24
                      Escalonamento de CPU
  Claramente preemptivo
               O tempo médio de espera é alto
               O desempenho depende do tamanho do quantum
                       se for muito grande (infinito)        tende a   FIFO
                       se for muito pequeno, o overhead com ochaveamento de
                            contexto se torna alto demais...




Eduardo Nicola F. Zagari
                              25
                     Escalonamento de CPU
Quantum = 1 u.t.
                                                  




         Turnaround médio RR: (16 + 8 + 9) /3 = 11 u.t.
         Tipicamente, o turnaround médio é maior que o do SJF, mas o
             tempo de resposta é melhor



Eduardo Nicola F. Zagari
                  26
                Escalonamento de CPU
  É a contra-partida preemptiva do SJF
               O processo com menor tempo para ser completado é escolhido
               Um processo em execução é interrompido se um novo processo,
                   com menor tempo para ser completado aparece na fila de pronto
               Apresenta sobrecarga maior que o SJF
                       Variações:
                             Tempo para ser completado pequeno
                             Tempo para ser completado do processo que chega é pouco
                              menor




Eduardo Nicola F. Zagari
                          27
                     Escalonamento de CPU
  Turnaround médio SRT: ((17-0)+(5-1)+(26-2)+(10-3))/4 = 13 u.t.
         E qual é o turnaround médio se fosse escalonado segundo SJF? 
                 Resp.: 14,25 u.t. 


Eduardo Nicola F. Zagari
                   28
                       Escalonamento de CPU
  Uma prioridade é associada a cada processo e a CPU é alocada
                   ao processo de maior prioridade
               SJF é um caso de escalonamento por prioridade em que a
                   prioridade é maior para os processos de menor tempo de
                   execução
               A prioridade é geralmente representada por um número (entre
                   0-7 ou 0-255), mas não existe uma convenção de qual número
                   (o maior ou o menor) é o de maior prioridade
               Pode ser preemptivo ou não
               SJF é um Escalonamento por Prioridade onde a prioridade é
                   definida de acordo com o tempo de CPU estimado do processo




Eduardo Nicola F. Zagari
                     29
                  Escalonamento de CPU
  Turnaround médio: (16+1+6+18+19)/4 = 15 u.t.




Eduardo Nicola F. Zagari
                 30
                   Escalonamento de CPU
  Prioridade definida:
                       internamente: usa alguma quantidade mensurável para computar a
                            prioridade. 
         
         
   
       (dinâmica)
                              Ex.: memória, arq. abertos, razão I/O por CPU usada
                       externamente: importância do processo, departamento de origem,
                            fatores políticos, hierarquia.
 
   
       (estática)
               Problema: starvation - processos de baixa prioridade podem
                   ficar indefinidamente no estado de pronto (IBM 7094 no MIT
                   processo rodando por 6 anos)
               Solução: aumentar progressivamente a prioridade dos
                   processos que estão aguardando




Eduardo Nicola F. Zagari
                                 31
                  Escalonamento de CPU
  Os processos são previamente divididos em grupos em função do
             tipo de processamento realizado 
                 Interativo (foreground)
                 Batch (background)
         A cada grupo é aplicado um mecanismo de escalonamento
             adequado
                     Alta
                                                        Fila de processos
                 Interativo – RR
   prioridade            do sistema
                 Batch – FIFO
                                                        Fila de processos
             Possibilidade de
                             interativos
               starvation
                                          Baixa         Fila de processos
                                     prioridade               batch


         utra alternativa: time-slices entre filas (ex.: 80% para os interativos
        O
       em RR e 20% para os batch em FIFO)

Eduardo Nicola F. Zagari
                         32
                   Escalonamento de CPU
  Os processos não permanecem em uma mesma fila até o término
          do processamento
         O SO faz um ajuste dinâmico (mecanismo adaptativo) para ajustar
          os processos em função do comportamento do sistema
         Os processos não são previamente associados às filas, mas
          direcionados pelo sistema entre as diversas filas com base no seu
          comportamento
         Parâmetros: 
                 número de filas, 
                 algoritmo de escalonamento para cada fila, 
                 método para mudar (promover ou rebaixar) o processo de fila, 
                 método para determinar em que fila um processo entra
         Método mais complexo



Eduardo Nicola F. Zagari
                      33
                       Escalonamento de CPU
  Um exemplo (existem outras variações):
                 Processos novos entram no fim da primeira fila
                 Nas filas, os processos são escalonados segundo Round Robin
                 O quantum varia de uma fila para outra (aumenta em direção às
                   últimas, quantum 1 para a primeira, 2 para a segunda, etc)
                 Os processos das primeiras filas têm maior prioridade (um processo
                  não pode ser escolhido, a menos que, as filas anteriores estejam
                  vazias)
                 Um processo em execução é interrompido, caso apareça um processo
                  em uma das filas anteriores à sua
                 Sempre que um processo esgotar seu quantum , ele é suspenso na fila
                   da próxima classe de prioridade
                 Se o processo liberar a CPU, sem preempção, sai da estrutura de filas 
                 Quando um processo volta à estrutura, é colocado em uma fila de
                   prioridade mais alta do que estava antes de sair


Eduardo Nicola F. Zagari
                         34
                       Escalonamento de CPU
Alta                     Menor
       prioridade           Fila 1    quantum



                            Fila 2


                            Fila 3

                            ...
            Baixa           Fila N    Maior
       prioridade                     quantum


Eduardo Nicola F. Zagari
      35
   Escalonamento de CPU
  Vantagens de uma política como esta:
                 Processos CPU-bound vão caindo em filas de prioridade mais baixas,
                   sendo escolhidos para rodar com menos freqüência; no entanto, eles
                   recebem quanta maiores, necessitando receber a CPU por um número
                   menor de vezes, o que reduz a quantidade trocas de contexto
                 Processos interativos (I/O-bound), normalmente pequenos, são
                   favorecidos, reduzindo-se o tempo de resposta médio do sistema
                 Processos interativos grandes, após interação com usuários, retornam
                   em filas de prioridade mais alta
         Problema: pressionar <ENTER> em terminais processando longos
             jobs não interativos (CPU-bound)
         Moral da história: implementar uma boa política na prática é
             muitíssimo mais difícil do que idealizá-la




Eduardo Nicola F. Zagari
                        36
                      Escalonamento de CPU
  Escalonamento mais complexo
               Processadores idênticos (homogêneos)
                       Compartilhamento de carga (load sharing)
                       Fila por processador: processador pode ficar ocioso
                       Fila única: compartilhamento de dados (problemas!)
               Abordagens:
                       Processamento simétrico
                             Cada processador faz seu próprio escalonamento (exclusão
                              mútua!)
                       Mestre-Escravo: processamento assimétrico
                             um algoritmo, executado em um processador reservado para
                              esse fim, é o escalonador dos outros processadores (alivia a
                              necessidade de compartilhamento de dados)



Eduardo Nicola F. Zagari
                            37
                       Escalonamento de CPU
  Sistemas de tempo real: requisitos temporais
                 Tempo compartilhado puro não funciona 
                 Hard real-time: requisitos temporais rígidos  requer que uma tarefa
                  crítica seja completada dentro de um tempo garantido
                     Ex.: tráfego aéreo, armas, sistemas médicos, controle industrial,
                       etc
                 Soft real-time: requisitos temporais flexíveis  requer que um processo
                  crítico receba prioridade sobre outros menos importantes
                     Ex.: multimídia, realidade virtual, etc

         Sistemas de TR rígidos: processadores dedicados
         Sistemas de TR flexíveis:
                 Implementados com outros esquemas
                 Processos críticos devem ter prioridade sobre outros
                 Implica na degradação do serviço dos outros usuários



Eduardo Nicola F. Zagari
                       38
                       Escalonamento de CPU
  Escalonamento baseado em prioridades dinâmicas
         A idéia básica é atribuir sempre a maior prioridade ao processo que
             apresentar o prazo mais próximo a expirar (earliest deadline)
         Sempre que um novo processo chega na fila de pronto, são
             calculadas e atribuídas novas prioridades a todos
         O Earliest Deadline é um algoritmo ótimo, isto é, o fator de
             utilização da CPU é 100%
         Se os processos não forem independentes: 
                 Problema da Inversão de Prioridades 
                       Solução: Protocolo de Herança de Prioridade
                            –  Conseqüência: queda no fator de utilização da CPU



Eduardo Nicola F. Zagari
                         39
                     Escalonamento de CPU
Eduardo Nicola F. Zagari
   40
   Escalonamento de CPU
  Unix  Sistema de Tempo Compartilhado
                 Meta: bom tempo de resposta aos processos interativos
         Escalonamento de 2 níveis
         Escalonador de baixo nível: Filas Múltiplas (prioridade) com
             realimentação
                 Processos executando em modo kernel: prioridade negativa (que são as
                  maiores)
                 Processos executando em modo usuário: prioridade positiva
                 Roda primeiro processo da fila prioritária não vazia  interrupções de
                   tempo: incremento do contador de utilização da CPU (que aumentará o
                   valor da prioridade do processo)
                 Round-Robin dentro de cada fila
                 A cada segundo as prioridades são recalculadas:
                       Contadores de uso da CPU divididos por 2
                       Nova prioridade = base + nice + contador de uso da CPU
                 Processos interativos voltam do bloqueio com prioridade negativa.
Eduardo Nicola F. Zagari
                        41
                       Escalonamento de CPU
Eduardo Nicola F. Zagari
   42
   Escalonamento de CPU
  Dois algoritmos: time-sharing e real-time
               Time-sharing
                       Prioridades baseadas em créditos – processo com mais créditos é o
                        próximo a ser escalonado
                       Crédito subtraído quando ocorre uma interrupção por tempo
                       Quando crédito = 0, outro processo é escolhido
                       Quando todos os processos têm crédito = 0, ocorre
                            “recarregamento” de créditos
                               Baseado em alguns fatores como prioridade e histórico
               Real-time
                       Soft real-time (TR Flexível)
                       Aderente ao Posix.1b – duas classes
                              FIFO e RR
                              Processos de maior prioridade sempre executam primeiro


Eduardo Nicola F. Zagari
                             43
                       Escalonamento de CPU
  Escalonamento Local – Como a biblioteca de threads decide
                   qual thread do usuário executar quando há um LWP disponível


               Escalonamento Global – Como o kernel decide qual kernel
                   thread deve ser a próxima a ser executada




Eduardo Nicola F. Zagari
                     44
                   Escalonamento de CPU
#include <pthread.h>	
                            #include <stdio.h>	
                            #define NUM THREADS 5	
                            int main(int argc, char *argv[])	
                            {	
                            	   int i;	
                            	 pthread t tid[NUM THREADS];	
                            	 pthread attr t attr;	
                            	 /* get the default attributes */	
                            	 pthread attr init(&attr);	
                            	 /* set the scheduling algorithm to PROCESS or
                               SYSTEM */	
                            	 pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM);	
                            	 /* set the scheduling policy - FIFO, RT, or OTHER */	
                            	 pthread attr setschedpolicy(&attr, SCHED OTHER);	
                            	 /* create the threads */	
                            	 for (i = 0; i < NUM THREADS; i++)	
                            	 	     pthread create(&tid[i],&attr,runner,NULL);	
Eduardo Nicola F. Zagari
                         45
                   Escalonamento de CPU
/* now join on each thread */	
                            	 for (i = 0; i < NUM THREADS; i++)	
                            	 	   pthread join(tid[i], NULL);	
                            }	
                             /* Each thread will begin control in
                               this function */	
                            void *runner(void *param)	
                            { 	
                            	 printf("I am a threadn");	
                            	 pthread exit(0);	
                            }




Eduardo Nicola F. Zagari
                         46
               Escalonamento de CPU
  JVM usa um algoritmo de escalonamento baseado em
                    prioridades e preemptivo


               Uma fila FIFO é usada se houver múltiplas threads com a
                    mesma prioridade


               JVM escalona uma thread para executar quando:
                     1.  A thread “em execução” sai do estado de “executável”
                     2.  Uma thread de maior prioridade entra no estado “executável”


             * Nota – a JVM não especifica se threads são “Time-Sliced” ou não




Eduardo Nicola F. Zagari
                         47
                       Escalonamento de CPU
Uma vez que a JVM não assegura Time-Slicing, o método yield()
               pode ser usado:


             
     while (true) {
             
     
        // perform CPU-intensive task
             
     
        . . .
             
     
        Thread.yield();
             
     }


             Isto passa o controle a uma outra thread de igual prioridade




Eduardo Nicola F. Zagari
                         48
               Escalonamento de CPU
Prioridade
 
      
         Comentário
                  Thread.MIN_PRIORITY

             Prioridade Mínima de Thread 
                  Thread.MAX_PRIORITY
              Prioridade Máxima de Thread
                  Thread.NORM_PRIORITY
             Prioridade Default de Thread 


                  As prioridades podem ser ajustadas usando-se o método
                     setPriority():
                  
    setPriority(Thread.NORM_PRIORITY + 2);




Eduardo Nicola F. Zagari
                     49
                       Escalonamento de CPU

SO-04 Escalonamento de Processos

  • 1.
    Processos Escalonamento da CPU
  • 2.
      Conceitos Básicos   Escalonamento de Processador   Critérios de Escalonamento   Escalonamento Não Preemptivo   Escalonamento Preemptivo   Mecanismos de Interrupção em Intervalos de Tempo   Prioridades   Algoritmos de Escalonamento   Escalonamento para Vários Processadores   Escalonamento em Tempo Real   Estudo de Casos: Escalonamento no Unix, Windows XP, Linux e de Threads Eduardo Nicola F. Zagari 2 Escalonamento de CPU
  • 3.
      Multiprogramação: correspondea diversos programas distintos executando em um mesmo processador   maximiza utilização da CPU   No entanto, somente um processo é executado a cada instante em um processador   Toda vez que um processo tiver que esperar (evento ou E/S) outro processo usa a CPU (“ciclo de vida” de um processo)   A execução de um processo consiste de um ciclo de execução de CPU e espera de I/O escalonado pronto execução interrupção Escalonador espera E/S ou evento bloqueado por E/S ou evento Eduardo Nicola F. Zagari 3 Escalonamento de CPU
  • 4.
    Eduardo Nicola F.Zagari 4 Escalonamento de CPU
  • 5.
      Conhecido comoEscalonador de Processsos   Determina/Escolhe, dentre os processos que estão em memória, qual processo será associado a uma CPU, quando esta estiver disponível   Age sobre os processos prontos para executar (processos do estado de pronto)   Segue uma política de escolha   Executado várias vezes por segundo   Reside permanentemente na memória Eduardo Nicola F. Zagari 5 Escalonamento de CPU
  • 6.
      Situação paraescalonamento:   processo passa do estado em execução para pronto   processo passa de em execução para espera/bloqueado   processo passa de espera/bloqueado para pronto   processo termina   Preempção: é quando um processo em estado de pronto tem precedência sobre o que está usando a CPU.   Escalonamenteo Não-Preemptivo: não contempla as preempções, isto é, o escalonador não interrompe os processos que estão em execução.   Escalonamento Preemptivo: que contempla a preempção das tarefas, isto é, provoca uma interrupção forçada de um processo para que outro, com a preempção, possa usar a CPU. Eduardo Nicola F. Zagari 6 Escalonamento de CPU
  • 7.
      Determina qualprocesso no estado pronto para executar será associado a uma CPU, quando esta estiver disponível   É executado várias vezes por segundo   Reside permanentemente na memória Eduardo Nicola F. Zagari 7 Escalonamento de CPU
  • 8.
      Determina quaisos processos que poderão competir pela CPU   Responsável pela suspensão e ativação de processos, o que significa flutuações na carga do sistema visando um melhor balanceamento   Atua como um buffer entre a admissão de jobs e a associação da CPU aos processos que constituem os jobs admitidos   Job: é um conjunto de atividades necessárias para a realização do trabalho computacional requerido por um usuário (divide-se em diversos steps (passos) ) Eduardo Nicola F. Zagari 8 Escalonamento de CPU
  • 9.
      Determina quaisjobs serão admitidos e poderão competir pelos recursos do sistema (admission scheduling)   Permite que não existam jobs em demasia no sistema, o que acarretaria uma eterna competição pelos recursos   Todo job, uma vez admitido, acarreta na criação de um ou mais processos Eduardo Nicola F. Zagari 9 Escalonamento de CPU
  • 10.
      O móduloDispatcher dá o controle da CPU para o processo selecionado pelo escalonador de curto prazo. Isto envolve:   Troca de contexto   Mudança do processador para o Modo Usuário   Salto para a localização adequada no programa do usuário para o seu reinício   Latência de Despacho – tempo que leva para o dispatcher parar um processo e reiniciar a execução de outro Eduardo Nicola F. Zagari 10 Escalonamento de CPU
  • 11.
      Utilização daCPU: % do tempo que a CPU fica ocupada (0 - 100%)   Throughput: número de processos completados por unidade de tempo   Turnaround: intervalo de tempo entre a submissão de um processo e sua finalização (soma dos intervalos esperando para ser carregado na memória, fila de pronto, em execução e em espera)   Tempo de espera: tempo que cada processo fica na fila de pronto   Tempo de resposta: tempo que o processo demora para produzir alguma resposta à uma requisição (importante para processos interativos)   É desejável maximizar os 2 primeiros e minimizar os 3 últimos   Para sistemas interativos, é importante minimizar a variância do tempo de resposta (previsibilidade) Eduardo Nicola F. Zagari 11 Escalonamento de CPU
  • 12.
      Objetivos daspolíticas de escalonamento:   maximizar a utilização da CPU   maximizar o throughput   minimizar o turnaround   minimizar o tempo de espera   minimizar o tempo de resposta   ser justa   maximizar o número de usuários interativos   ser previsível   minimizar o uso de recursos   balancear o uso de recursos   balancear usuários interativos com os demais   priorizar processo que segurem recursos chave   não degradar o sistema   etc Eduardo Nicola F. Zagari 12 Escalonamento de CPU
  • 13.
      Não permitea retirada da CPU de um processo após este tê-la conseguido   Tempo de resposta é mais previsível É mais justo?   Processos curtos precisam esperar pelos longos   Permite monopolização da CPU Eduardo Nicola F. Zagari 13 Escalonamento de CPU
  • 14.
      Permite quea CPU seja retirada de um processo para ser entregue a outro   Garante que os processos possam progredir uniformemente   Não permite a monopolização da CPU   Usado para:   atendimento rápido de processos mais importantes   tratamento de interrupções em sistemas de tempo real   atender os usuários em sistemas de tempo compartilhado   A mudança de contexto envolve sobrecarga Eduardo Nicola F. Zagari 14 Escalonamento de CPU
  • 15.
      Para prevenirprocessos do usuário de monopolizar o sistema (CPU), por acidente ou de propósito, uma interrupção por tempo é usada quantum ou time-slice  é o tempo limite para uso da CPU, após o qual ocorre a interrupção por tempo   Um processo do usuário, uma vez interrompido por término do seu quantum, volta à fila de pronto para executar e permite o escalonamento de outro processo   Um processo em execução mantém controle sobre a CPU até:   voluntariamente liberá-la   quantum time expirado   outra interrupção exija atenção da CPU para que seja tratada   erro de execução Eduardo Nicola F. Zagari 15 Escalonamento de CPU
  • 16.
      Podem serfixas (estáticas) durante a vida do processo ou modificáveis (dinâmicas)   Podem ser associadas externamente ou de maneira automática   Podem ser calculadas e associadas de forma racional ou arbitrária Eduardo Nicola F. Zagari 16 Escalonamento de CPU
  • 17.
      FIFO (First-InFirst-Out) (também conhecido por FCFS (First- Come First-Served))   SJF (Shortest Job First)   Round-Robin   SRT (Shortest Remaining Time)   Prioridade   Múltiplas Filas   Múltiplas Filas com Realimentação   Escalonamento para Vários Processadores   Escalonamento de Tempo Real   Earliest Deadline Eduardo Nicola F. Zagari 17 Escalonamento de CPU
  • 18.
      Não preemptivo(Uma vez em execução, é executado até o término)   O processo que chegar primeiro (first-in) é o primeiro a ser selecionado para execução (first-out)   Implementado através de fila   Inicialmente criado para sistemas batch   Injusto com jobs curtos (veja exemplos!)   Ineficiente para sistemas de tempo compartilhado   Combinado com outros esquemas Eduardo Nicola F. Zagari 18 Escalonamento de CPU
  • 19.
    Suponha que osprocessos cheguem na ordem P1, P2 e P3   Turnaround médio = ( 10 + 12 + 14 ) / 3 = 12 u.t.   Tempo de espera médio = ( 0 + 10 + 12) / 3 = 7,33 u.t. Eduardo Nicola F. Zagari 19 Escalonamento de CPU
  • 20.
    Suponha que osprocessos cheguem na ordem P2, P3 e P1   Turnaround médio: ( 14 + 2 + 4 ) / 3 = 6,67 u.t.   Tempo de espera médio = ( 4 + 0 + 2) / 3 = 2 u.t. Eduardo Nicola F. Zagari 20 Escalonamento de CPU
  • 21.
      Não preemptivo   O processo com o menor tempo para ser completado é escolhido   quando a informação sobre o tempo de execução não se encontra disponível deve ser estimado ou usa-se o da última vez   desempate pode ser, por exemplo, por FIFO   Reduz tempo médio de espera mais do que isto: SJF é ótimo, pois dá o tempo de espera mínimo para um dado conjunto de processos   No entanto, apresenta uma grande variância no tempo de espera Eduardo Nicola F. Zagari 21 Escalonamento de CPU
  • 22.
      Turnaround médioFIFO: (6+14+21+24)/4 = 16,25 u.t.   Tempo de espera médio: (0 + 6 + 14 + 21)/4 = 10,25 u.t.   Turnaround médio SJF: (3 + 9 + 16 + 24) / 4 = 13 u.t.   Tempo de espera médio: (3 + 16 + 9 + 0) / 4 = 7 u.t. Eduardo Nicola F. Zagari 22 Escalonamento de CPU
  • 23.
      O processoem execução libera voluntariamente a CPU retornando para a fila de pronto sem a interrupção do sistema operacional (não preemptivo)   Um programa mal escrito pode monopolizar a CPU   Fila de mensagem é verificada periodicamente (Win 3.11) Eduardo Nicola F. Zagari 23 Escalonamento de CPU
  • 24.
      Define-se umaunidade de tempo denominada quantum ou time- slice (usualmente de 10 a 100ms) que corresponde ao tempo limite para uso da CPU por cada processo   Após este tempo ter sido passado, o processo sofre preempção e é colocado no final da fila de pronto   A fila de pronto é tratada como uma fila circular (FIFO)   O escalonador “pega” o primeiro processo da fila de pronto para ser executado e define um timer para o tempo de 1 quantum   Se o tempo de execução for maior que 1 quantum, o timer gera uma interrupção e o SO faz o chaveamento de contexto   Projetado para sistemas de tempo compartilhado   Se houver n processos na fila de pronto e o tempo do quantum for q, então cada processo obtém 1/n do tempo da CPU e fatias de no máximo q unidades de tempo por vez. Nenhum processo espera por mais que (n-1)q unidades de tempo. Eduardo Nicola F. Zagari 24 Escalonamento de CPU
  • 25.
      Claramente preemptivo   O tempo médio de espera é alto   O desempenho depende do tamanho do quantum   se for muito grande (infinito) tende a FIFO   se for muito pequeno, o overhead com ochaveamento de contexto se torna alto demais... Eduardo Nicola F. Zagari 25 Escalonamento de CPU
  • 26.
    Quantum = 1u.t.   Turnaround médio RR: (16 + 8 + 9) /3 = 11 u.t.   Tipicamente, o turnaround médio é maior que o do SJF, mas o tempo de resposta é melhor Eduardo Nicola F. Zagari 26 Escalonamento de CPU
  • 27.
      É acontra-partida preemptiva do SJF   O processo com menor tempo para ser completado é escolhido   Um processo em execução é interrompido se um novo processo, com menor tempo para ser completado aparece na fila de pronto   Apresenta sobrecarga maior que o SJF   Variações:  Tempo para ser completado pequeno  Tempo para ser completado do processo que chega é pouco menor Eduardo Nicola F. Zagari 27 Escalonamento de CPU
  • 28.
      Turnaround médioSRT: ((17-0)+(5-1)+(26-2)+(10-3))/4 = 13 u.t.   E qual é o turnaround médio se fosse escalonado segundo SJF?   Resp.: 14,25 u.t. Eduardo Nicola F. Zagari 28 Escalonamento de CPU
  • 29.
      Uma prioridadeé associada a cada processo e a CPU é alocada ao processo de maior prioridade   SJF é um caso de escalonamento por prioridade em que a prioridade é maior para os processos de menor tempo de execução   A prioridade é geralmente representada por um número (entre 0-7 ou 0-255), mas não existe uma convenção de qual número (o maior ou o menor) é o de maior prioridade   Pode ser preemptivo ou não   SJF é um Escalonamento por Prioridade onde a prioridade é definida de acordo com o tempo de CPU estimado do processo Eduardo Nicola F. Zagari 29 Escalonamento de CPU
  • 30.
      Turnaround médio:(16+1+6+18+19)/4 = 15 u.t. Eduardo Nicola F. Zagari 30 Escalonamento de CPU
  • 31.
      Prioridade definida:   internamente: usa alguma quantidade mensurável para computar a prioridade. (dinâmica)  Ex.: memória, arq. abertos, razão I/O por CPU usada   externamente: importância do processo, departamento de origem, fatores políticos, hierarquia. (estática)   Problema: starvation - processos de baixa prioridade podem ficar indefinidamente no estado de pronto (IBM 7094 no MIT processo rodando por 6 anos)   Solução: aumentar progressivamente a prioridade dos processos que estão aguardando Eduardo Nicola F. Zagari 31 Escalonamento de CPU
  • 32.
      Os processossão previamente divididos em grupos em função do tipo de processamento realizado   Interativo (foreground)   Batch (background)   A cada grupo é aplicado um mecanismo de escalonamento adequado Alta Fila de processos   Interativo – RR prioridade do sistema   Batch – FIFO Fila de processos Possibilidade de interativos starvation Baixa Fila de processos prioridade batch   utra alternativa: time-slices entre filas (ex.: 80% para os interativos O em RR e 20% para os batch em FIFO) Eduardo Nicola F. Zagari 32 Escalonamento de CPU
  • 33.
      Os processosnão permanecem em uma mesma fila até o término do processamento   O SO faz um ajuste dinâmico (mecanismo adaptativo) para ajustar os processos em função do comportamento do sistema   Os processos não são previamente associados às filas, mas direcionados pelo sistema entre as diversas filas com base no seu comportamento   Parâmetros:   número de filas,   algoritmo de escalonamento para cada fila,   método para mudar (promover ou rebaixar) o processo de fila,   método para determinar em que fila um processo entra   Método mais complexo Eduardo Nicola F. Zagari 33 Escalonamento de CPU
  • 34.
      Um exemplo(existem outras variações):   Processos novos entram no fim da primeira fila   Nas filas, os processos são escalonados segundo Round Robin   O quantum varia de uma fila para outra (aumenta em direção às últimas, quantum 1 para a primeira, 2 para a segunda, etc)   Os processos das primeiras filas têm maior prioridade (um processo não pode ser escolhido, a menos que, as filas anteriores estejam vazias)   Um processo em execução é interrompido, caso apareça um processo em uma das filas anteriores à sua   Sempre que um processo esgotar seu quantum , ele é suspenso na fila da próxima classe de prioridade   Se o processo liberar a CPU, sem preempção, sai da estrutura de filas   Quando um processo volta à estrutura, é colocado em uma fila de prioridade mais alta do que estava antes de sair Eduardo Nicola F. Zagari 34 Escalonamento de CPU
  • 35.
    Alta Menor prioridade Fila 1 quantum Fila 2 Fila 3 ... Baixa Fila N Maior prioridade quantum Eduardo Nicola F. Zagari 35 Escalonamento de CPU
  • 36.
      Vantagens deuma política como esta:   Processos CPU-bound vão caindo em filas de prioridade mais baixas, sendo escolhidos para rodar com menos freqüência; no entanto, eles recebem quanta maiores, necessitando receber a CPU por um número menor de vezes, o que reduz a quantidade trocas de contexto   Processos interativos (I/O-bound), normalmente pequenos, são favorecidos, reduzindo-se o tempo de resposta médio do sistema   Processos interativos grandes, após interação com usuários, retornam em filas de prioridade mais alta   Problema: pressionar <ENTER> em terminais processando longos jobs não interativos (CPU-bound)   Moral da história: implementar uma boa política na prática é muitíssimo mais difícil do que idealizá-la Eduardo Nicola F. Zagari 36 Escalonamento de CPU
  • 37.
      Escalonamento maiscomplexo   Processadores idênticos (homogêneos)   Compartilhamento de carga (load sharing)   Fila por processador: processador pode ficar ocioso   Fila única: compartilhamento de dados (problemas!)   Abordagens:   Processamento simétrico  Cada processador faz seu próprio escalonamento (exclusão mútua!)   Mestre-Escravo: processamento assimétrico  um algoritmo, executado em um processador reservado para esse fim, é o escalonador dos outros processadores (alivia a necessidade de compartilhamento de dados) Eduardo Nicola F. Zagari 37 Escalonamento de CPU
  • 38.
      Sistemas detempo real: requisitos temporais   Tempo compartilhado puro não funciona   Hard real-time: requisitos temporais rígidos  requer que uma tarefa crítica seja completada dentro de um tempo garantido  Ex.: tráfego aéreo, armas, sistemas médicos, controle industrial, etc   Soft real-time: requisitos temporais flexíveis  requer que um processo crítico receba prioridade sobre outros menos importantes  Ex.: multimídia, realidade virtual, etc   Sistemas de TR rígidos: processadores dedicados   Sistemas de TR flexíveis:   Implementados com outros esquemas   Processos críticos devem ter prioridade sobre outros   Implica na degradação do serviço dos outros usuários Eduardo Nicola F. Zagari 38 Escalonamento de CPU
  • 39.
      Escalonamento baseadoem prioridades dinâmicas   A idéia básica é atribuir sempre a maior prioridade ao processo que apresentar o prazo mais próximo a expirar (earliest deadline)   Sempre que um novo processo chega na fila de pronto, são calculadas e atribuídas novas prioridades a todos   O Earliest Deadline é um algoritmo ótimo, isto é, o fator de utilização da CPU é 100%   Se os processos não forem independentes:   Problema da Inversão de Prioridades  Solução: Protocolo de Herança de Prioridade –  Conseqüência: queda no fator de utilização da CPU Eduardo Nicola F. Zagari 39 Escalonamento de CPU
  • 40.
    Eduardo Nicola F.Zagari 40 Escalonamento de CPU
  • 41.
      Unix Sistema de Tempo Compartilhado   Meta: bom tempo de resposta aos processos interativos   Escalonamento de 2 níveis   Escalonador de baixo nível: Filas Múltiplas (prioridade) com realimentação   Processos executando em modo kernel: prioridade negativa (que são as maiores)   Processos executando em modo usuário: prioridade positiva   Roda primeiro processo da fila prioritária não vazia  interrupções de tempo: incremento do contador de utilização da CPU (que aumentará o valor da prioridade do processo)   Round-Robin dentro de cada fila   A cada segundo as prioridades são recalculadas:  Contadores de uso da CPU divididos por 2  Nova prioridade = base + nice + contador de uso da CPU   Processos interativos voltam do bloqueio com prioridade negativa. Eduardo Nicola F. Zagari 41 Escalonamento de CPU
  • 42.
    Eduardo Nicola F.Zagari 42 Escalonamento de CPU
  • 43.
      Dois algoritmos:time-sharing e real-time   Time-sharing   Prioridades baseadas em créditos – processo com mais créditos é o próximo a ser escalonado   Crédito subtraído quando ocorre uma interrupção por tempo   Quando crédito = 0, outro processo é escolhido   Quando todos os processos têm crédito = 0, ocorre “recarregamento” de créditos  Baseado em alguns fatores como prioridade e histórico   Real-time   Soft real-time (TR Flexível)   Aderente ao Posix.1b – duas classes  FIFO e RR  Processos de maior prioridade sempre executam primeiro Eduardo Nicola F. Zagari 43 Escalonamento de CPU
  • 44.
      Escalonamento Local– Como a biblioteca de threads decide qual thread do usuário executar quando há um LWP disponível   Escalonamento Global – Como o kernel decide qual kernel thread deve ser a próxima a ser executada Eduardo Nicola F. Zagari 44 Escalonamento de CPU
  • 45.
    #include <pthread.h> #include <stdio.h> #define NUM THREADS 5 int main(int argc, char *argv[]) { int i; pthread t tid[NUM THREADS]; pthread attr t attr; /* get the default attributes */ pthread attr init(&attr); /* set the scheduling algorithm to PROCESS or SYSTEM */ pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM); /* set the scheduling policy - FIFO, RT, or OTHER */ pthread attr setschedpolicy(&attr, SCHED OTHER); /* create the threads */ for (i = 0; i < NUM THREADS; i++) pthread create(&tid[i],&attr,runner,NULL); Eduardo Nicola F. Zagari 45 Escalonamento de CPU
  • 46.
    /* now joinon each thread */ for (i = 0; i < NUM THREADS; i++) pthread join(tid[i], NULL); } /* Each thread will begin control in this function */ void *runner(void *param) { printf("I am a threadn"); pthread exit(0); } Eduardo Nicola F. Zagari 46 Escalonamento de CPU
  • 47.
      JVM usaum algoritmo de escalonamento baseado em prioridades e preemptivo   Uma fila FIFO é usada se houver múltiplas threads com a mesma prioridade   JVM escalona uma thread para executar quando: 1.  A thread “em execução” sai do estado de “executável” 2.  Uma thread de maior prioridade entra no estado “executável” * Nota – a JVM não especifica se threads são “Time-Sliced” ou não Eduardo Nicola F. Zagari 47 Escalonamento de CPU
  • 48.
    Uma vez quea JVM não assegura Time-Slicing, o método yield() pode ser usado: while (true) { // perform CPU-intensive task . . . Thread.yield(); } Isto passa o controle a uma outra thread de igual prioridade Eduardo Nicola F. Zagari 48 Escalonamento de CPU
  • 49.
    Prioridade Comentário Thread.MIN_PRIORITY Prioridade Mínima de Thread Thread.MAX_PRIORITY Prioridade Máxima de Thread Thread.NORM_PRIORITY Prioridade Default de Thread As prioridades podem ser ajustadas usando-se o método setPriority(): setPriority(Thread.NORM_PRIORITY + 2); Eduardo Nicola F. Zagari 49 Escalonamento de CPU