Advertisement
mateuspl

Untitled

Apr 13th, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.71 KB | None | 0 0
  1. import java.util.LinkedList;
  2.  
  3. public class FCFS implements Escalonador {
  4.  
  5.     public LinkedList<Processos> processos = new LinkedList<>();
  6.     private LinkedList<Processos> finalizados = new LinkedList<>();
  7.  
  8.     public FCFS(LinkedList<Processos> processos) {
  9.         this.processos = processos;
  10.     }
  11.      
  12.     public String escalonar()
  13.     {
  14.         int clock = 0;
  15.         int quantidade = processos.size();
  16.  
  17.         LinkedList<Processos> prontos = new LinkedList<>();
  18.        
  19.         while(finalizados.size() < quantidade)
  20.         {
  21.             // pra cada processo verifica se ele ja chegou e o coloca na lista de prontos
  22.             while (true)
  23.                 if (!processos.isEmpty() && processos.get(0).chegada <= clock)
  24.                     prontos.add(processos.remove(0));
  25.                 else break;
  26.  
  27.             // se nenhum chegou, adianta o clock para o primeiro da fila
  28.             if (prontos.isEmpty())
  29.             {
  30.                 prontos.addFirst(processos.remove(0));
  31.                 clock = prontos.get(0).chegada;
  32.             }
  33.  
  34.             // pega o primeiro processo da lista e remove ja que ele vai ser exec
  35.             Processos processo = prontos.remove(0);
  36.            
  37.             processo.espera = clock - processo.chegada;
  38.             processo.resposta = processo.espera;
  39.             processo.retorno = clock + processo.duracao - processo.chegada;
  40.            
  41.             // atualiza o clock
  42.             clock += processo.duracao;
  43.            
  44.             System.out.println(processo);
  45.             finalizados.add(processo);
  46.         }
  47.    
  48.         return calcularMetricas();
  49.     }
  50.      
  51.     public String calcularMetricas() {
  52.         double resposta = 0;
  53.         double espera = 0;
  54.         double retorno = 0;
  55.         int quantidade = finalizados.size();
  56.  
  57.         for (Processos p : finalizados) {
  58.             resposta += p.resposta;
  59.             espera += p.espera;
  60.             retorno += p.retorno;
  61.         }
  62.  
  63.         return "FCFS " + (retorno / quantidade) + " " + (espera / quantidade) + " " + (resposta / quantidade);
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement