public void Rescheduling()
 {
     if (Action == true)
     {
         if (!squeue.Empty())
         {
             Process rOneProcess = squeue.Item();
             sresourse.ActiveProcess = null;
             sresourse.ActiveProcess = rOneProcess;
             squeue.Remove();
             Action = false;
             sqtTermProc++;
         }
         else
         {
             sresourse.ActiveProcess = null;
         }
     }
     if (sresourse.ActiveProcess != null && sqtTermProc != 0)
     {
         midWaitTime  = (midWaitTime + sresourse.ActiveProcess.WaitTime) / sqtTermProc; //значение ожидания после завершения
         midRoundTime = (midRoundTime + sresourse.ActiveProcess.RoundTime) / sqtTermProc;
     }
     if (!squeue.Empty())
     {
         if (sresourse.ActiveProcess == null)
         {
             Process rrOneProcess = squeue.Item();
             sresourse.ActiveProcess = rrOneProcess;
             squeue.Remove();
         }
     }
 }
Beispiel #2
0
        private void button6_Click(object sender, EventArgs e)

        {
            listBox1.Items.Clear();
            if (model.Count() != 0)
            {
                listBox1.Items.Add(model.Item());
            }
            else
            {
                listBox1.Items.Add("Очередь пуста");
            }
        }
Beispiel #3
0
        public void Rescheduling()
        {
            if (scpu.Free())
            {
                Process proc = sPriorQ.Item();
                sPriorQ.Remove();
                proc.Status = processStatus.runningSt;
              
                scpu.ActiveProcess = proc;
            }
            if (!sPriorQ.Empty() && !scpu.Free())
            {
                if (scpu.ActiveProcess.WorkTime == scpu.ActiveProcess.BurstTime)
                {
                    scpu.ActiveProcess.resourseNeed = srng.Next(0,2);
                    if (scpu.ActiveProcess.resourseNeed == 1)
                    {
                        scpu.ActiveProcess.Status = processStatus.waitingSt;

                      
                        
                        sresourse.Put(scpu.ActiveProcess);
                        scpu.ActiveProcess.WorkTime = 0;
                        Process proc = sPriorQ.Item();
                        sPriorQ.Remove();
                        proc.Status = processStatus.runningSt;
                        scpu.ActiveProcess = proc;

                        
                    }
                    
                    else
                    {
                        scpu.ActiveProcess.Status = processStatus.terminatedSt;
            
                   
                        
                        Process proc = sPriorQ.Item();
                        sPriorQ.Remove();
                        scpu.ActiveProcess = proc;
                    }

                }

                else // вытеснение
                {
                    if (!sPriorQ.Empty() && !scpu.Free())
                    {
                        Process proc = sPriorQ.Item();
                        if (proc.BurstTime.CompareTo(scpu.ActiveProcess.BurstTime) < 0 && (proc.BurstTime.CompareTo(scpu.ActiveProcess.BurstTime)!=0))
                        {
                            sPriorQ.Remove();
                            proc.Status = processStatus.runningSt;
                            scpu.ActiveProcess.Status = processStatus.readySt;
                            sPriorQ.Put(scpu.ActiveProcess);
                            scpu.ActiveProcess = proc;
                        }
                    }
                }
            }

        }