Beispiel #1
0
        /// <summary>
        /// Tempo de Espera.
        /// </summary>
        /// <returns>Tempo de espera medio dos processos.</returns>
        /// <param name="plotableProcesses">Lista escalonada.</param>
        /// <param name="totalProcess">Total de processos.</param>
        public static double WaitTime(List <PlotableProcess> plotableProcesses, int totalProcess)
        {
            double waitTime = 0;

            if (totalProcess > 0)
            {
                PlotableProcess anterior = plotableProcesses[0];
                for (int i = 0; i < plotableProcesses.Count; i++)
                {
                    PlotableProcess atual = plotableProcesses[i];
                    if (anterior.name != atual.name)
                    {
                        List <PlotableProcess> aux        = plotableProcesses.GetRange(0, i);
                        PlotableProcess        ultimaExec = aux.FindLast((obj) => obj.name == atual.name);
                        double wait = 0;
                        if (ultimaExec != null)
                        {
                            wait = (atual.ExecTime - ultimaExec.ExecTime) - 1;
                        }
                        else
                        {
                            wait = (atual.ExecTime - atual.arrivalTime);
                        }

                        waitTime += wait;
                    }
                    anterior = atual;
                }
            }

            return(waitTime / Convert.ToDouble(totalProcess));
        }
Beispiel #2
0
    protected void AtualizeAnimCallBack(PlotableProcess process)
    {
        List <PlotableProcess> list = GetProcessFromCreation();

        list.Find((obj) => obj.name == process.name).attColor = list.Find((obj) => obj.name == process.name).RunColor;
        plot.AnimateData(list, false, "Entrada", isAnim: true);
        list.Find((obj) => obj.name == process.name).attColor = list.Find((obj) => obj.name == process.name).WaitingColor;
    }
Beispiel #3
0
        public static double ResponseTime(List <PlotableProcess> plotableProcesses, List <Process> processes)
        {
            int soma = 0;

            for (int i = 0; i < processes.Count; i++)
            {
                PlotableProcess aux = plotableProcesses.Find((obj) => obj.name.Equals(processes[i].name));
                soma = soma + (aux.ExecTime - aux.arrivalTime);
            }
            return(Convert.ToDouble(soma) / processes.Count);
        }
 /// <summary>
 /// Inicializar dados escalonados.
 /// </summary>
 /// <param name="processes">Processes.</param>
 private void SetUtilizationData(List <PlotableProcess> processes)
 {
     for (int index = 0; index < processes.Count; index++)
     {
         PlotableProcess process = processes[index];
         IntervalBarItem item    = new IntervalBarItem
         {
             Start         = process.ExecTime - 0.5f,
             End           = process.ExecTime + 0.5f,
             CategoryIndex = YLabel.IndexOf(process.name),
             //Title = process.Name,
             Color = process.attColor,
         };
         intervalBarSeries.Items.Add(item);
     }
 }