Beispiel #1
0
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            //PriorityPreemptive();
            Process.Process p = new Process.Process();
            //Preemptive preemptive = new Preemptive(p);
            //preemptive.Start();

            List <Process.Process> pList = new List <Process.Process>();

            int[] b   = { 53, 17, 68, 24 };
            int[] pro = { 1, 2, 3, 4 };

            RoundRobin.RoundRobin round = new RoundRobin.RoundRobin(b, pro, 20);
            round.Start();


            GanttChart.Form1 f1 = new GanttChart.Form1();
            f1.process      = round.Gprocess.ToArray();
            f1.waiting_time = round.Gwait.ToArray();
            f1.AverageTime  = round.GetAverageWaitingTime();
            f1.Show();
            Application.Run(f1);
        }
 public override Process.Process New(
     Process.Process parent
     )
 {
     return(new LabelledInput <TLabel>(
                this,
                parent));
 }
 public LabelledInput(
     LabelledInputDefinition <TLabel> definition,
     Process.Process parent
     )
     : base(definition, parent)
 {
     Label = definition.Label;
 }
Beispiel #4
0
 public Preemptive(Process.Process p)
 {
     for (int i = 0; i < 5; i++)
     {
         p              = new Process.Process();
         p.process_num  = i + 1;
         p.arrival_time = at[i];
         p.burst_time   = b[i];
         p.priority     = pp[i];
         processList.Add(p);
     }
 }
Beispiel #5
0
        public void Start()
        {
            #region Variable Declaration
            //Declare Variable
            //Declare Loop Counter;
            int loopCount = 0;
            //Init Variable
            Gwait.Add(processList[0].arrival_time);
            //Add first Variable
            Gprocess.Add(processList[0].process_num);
            processStack.Push(processList[0]);
            #endregion
            while (true)
            {
                #region First Operation Loop
                //First Operation "First Loop"
                if (loopCount == NumberOfProcess && processList[mostptr % processList.Count].burst_time > 0)
                {
                    Gwait.Add(Gwait[Gwait.Count - 1] + LastBurstTimeValue);
                    processList.RemoveAt(mostptr);
                    loopCount++;
                    processList.Sort((t, i) => t.priority.CompareTo(i.priority));
                    continue;
                }

                if (ptr < NumberOfProcess)
                {
                    Process.Process ptemp = processList[mostptr];
                    ptemp.burst_time     = processList[mostptr].burst_time - (at[ptr] - at[ptr - 1]);
                    processList[mostptr] = ptemp;
                }

                if (processList[mostptr % processList.Count].burst_time <= 0 && ptr < NumberOfProcess)
                {
                    processList.RemoveAt(mostptr % processList.Count);
                    if (at[ptr] - at[mostptr] > b[mostptr])
                    {
                        Gwait.Add(at[mostptr] + b[mostptr]);
                    }
                    else
                    {
                        Process.Process ptemp = processList[ptr];
                        ptemp.arrival_time     = processList[ptr].arrival_time;
                        processList[loopCount] = ptemp;
                    }


                    Process.Process ProcessBack = processStack.Pop();
                    ProcessBack = processStack.Pop();
                    mostptr     = Array.IndexOf(Gprocess.ToArray(), ProcessBack.process_num);
                    Gprocess.Add(processList[mostptr].process_num);
                    LastBurstTimeValue = processList[mostptr].burst_time;
                }
                else if (processList[ptr % processList.Count].priority == processList[mostptr % processList.Count].priority)
                {
                    ptr++;
                }

                if (processList[ptr % processList.Count].priority < processList[mostptr % processList.Count].priority && ptr < NumberOfProcess)
                {
                    mostptr = ptr;
                    Gprocess.Add(processList[mostptr].process_num);
                    processStack.Push(processList[mostptr]);
                    Gwait.Add(processList[mostptr].arrival_time);
                    LastBurstTimeValue = processList[mostptr].burst_time;
                }
                #endregion
                #region Final Operation Loop
                //Final Operation "Second Loop"
                if (loopCount > NumberOfProcess)
                {
                    mostptr = 0;
                    Gprocess.Add(processList[mostptr % processList.Count].process_num);
                    Gwait.Add(Gwait[Gwait.Count - 1] + processList[mostptr].burst_time);
                    processList.RemoveAt(mostptr);
                }
                #endregion
                #region Break Loop
                if (processList.Count == 0)
                {
                    break;
                }
                #endregion
                ptr++;
                loopCount++;
            }
        }