Exemplo n.º 1
0
        //реализуем алгоритм планирования
        //SJF с вытеснением по оставшемуся времени
        //подумать по оставшемуся времени ,это по берст тайм
        public void Next_Step()
        {
            if (!cpu.Free() && cpu.active_process.Ended())
            {
                cpu.active_process.End();

                cpu.stop_pr();
                cpu.act_pr  = null;
                cpu.busy_pr = false;
            }


            if (cpu.Free() && piramida.C() != 0 && piramida.Count() != 0)//!piramida.Empty())
            {
                cpu.start_pr(piramida.Item());

                piramida.Remove_max();
            }
            if (!cpu.Free() && piramida.C() != 0 && piramida.Count() != 0)
            {
                if (cpu.active_process.CompareTo(piramida.Item()) == 1)
                {
                    // cpu.active_process.End();
                    Process p = cpu.active_process;
                    cpu.start_pr(piramida.Item());
                    piramida.Remove_max();
                    piramida.Put(p);
                }
            }
        }
Exemplo n.º 2
0
 //помогательный метод,определяющий
 //нужна ли перепланировка
 private bool Need_planirovka()
 {
     return(cpu.Free() || cpu.active_process.work_on_processor == cpu.active_process.burst_time || cpu.active_process.CompareTo(ready_pr.Item()) == 1);
 }