public void une_file_rnd(RAM_fix ram, List <string> Derl) //ordonnancement par une seule file d'attente { int t = 0; //n = 1; int part = 0; if (fifo.Count != 0) { t = 0; switch (n) { case 1: t = ram.Rech_first(fifo[0]); break; case 2: t = ram.Rech_best(fifo[0]); break; case 3: t = ram.Rech_worst(fifo[0]); break; } if (t != -1) { Derl.Add(">>>> le processus <" + fifo[0].name + "> est ajouter a lemplacement <" + t + ">\n\n"); fifo[0].Set_part(t); en_cours.Add(fifo[0]); ram.occ_part(ram.list_rep[t], fifo[0], fifo[0].Get_taille()); //ram.list_rep[t].Set_id(fifo[0].Get_id()); fifo.Remove(fifo[0]); } } t = -1; for (int i = 0; i < en_cours.Count; i++) { if (en_cours[i] != null) { en_cours[i].Set_time(en_cours[i].Get_temps() - 1); if (en_cours[i].Get_temps() == 0) { Derl.Add(""); Derl[minute + 1] += ">>>> le processus <" + en_cours[i].name + "> est libere de lemplacement<" + en_cours[i].Get_part() + ">\n\n"; part = en_cours[i].Get_part(); //finish(en_cours[i].Get_id()); ram.vider_part(ram.list_rep[part], en_cours[i].Get_taille()); finis++; fini.Add(en_cours[i]); en_cours.Remove(en_cours[i]); i--; if (fifo.Count != 0) { t = ram.Rech_first(fifo[0]); } } } } minute += 1; }
public Page1(List <int> l, int cap, int un_p, int alg) { InitializeComponent(); m = new RAM_fix(l, cap); proc = new process_list(); un_plus = un_p; proc.Set_alg(alg); }
public void add_process(int taille, int temps, RAM_fix ram) { List <int> liste = new List <int>(); processus proc; int j = 0; int i = 0; proc = new processus("pr" + id, id++, taille, temps); Boolean rech = true; i = 0; while (i < ram.list_rep.Count) { liste.Add(ram.list_rep[i].Get_taille() * 1000 + i); i++; } liste.Sort(); i = 0; while ((rech) && (i < liste.Count)) { if (liste[i] / 1000 >= proc.Get_taille()) { rech = false; } else { i++; } } if (rech == false)//si on trouve la partition qui convient { j = liste[i] % 1000; proc.Set_part(j); if ((ram.list_rep[j].G_vide()) == false) //si elle est occupee { ram.list_rep[j].f_proc.Add(proc); fifo.Add(proc); } else//le processus est ajoute a la liste des proc en cours d'execution { proc.Set_etat(1); en_cours.Add(proc); ram.occ_part(ram.list_rep[j], proc, proc.Get_taille()); } } }
public void plusieurs_fifo(RAM_fix ram) //ordonnancement des processus par la methode de +files { int i = 0; i = 0; int part = 0; for (i = 0; i < en_cours.Count; i++) { if (en_cours[i] != null) { en_cours[i].Set_time(en_cours[i].Get_temps() - 1); if (en_cours[i].Get_temps() == 0) { finis++; fini.Add(en_cours[i]); part = en_cours[i].Get_part(); //en_cours.Remove(en_cours[i]); //ram.vider_part(ram.list_rep[part]); if (ram.list_rep[part].f_proc.Count > 0) { en_cours[i] = ram.list_rep[part].f_proc[0]; fifo.Remove(ram.list_rep[part].f_proc[0]); ram.list_rep[part].Set_id(en_cours[i].Get_id()); //ram.occ_part(ram.list_rep[part]); ram.list_rep[part].f_proc.Remove(ram.list_rep[part].f_proc[0]); } else { // ram.vider_part(ram.list_rep[part], en_cours[i].Get_taille()); en_cours.Remove(en_cours[i]); i--; } } } } }
public void CreateACircle_2(RAM_fix mc, Canvas c) { c.Children.Clear(); float x = 0; foreach (partition p in mc.list_rep) { int i = 0; float y = 320; if (p.f_proc.Count != 0) { int ps; if (p.f_proc.Count > 7) { ps = 7; } else { ps = p.f_proc.Count; } Rectangle r = new Rectangle(); r.RadiusX = 20; r.RadiusY = 20; r.Fill = new SolidColorBrush(Colors.Gray); r.Width = ps * 35 + 10; r.Height = 38; c.Children.Add(r); Canvas.SetLeft(r, y - 10); Canvas.SetTop(r, x + 6); } foreach (processus pr in p.f_proc) { Ellipse Circ = new Ellipse(); Circ.Height = 30; Circ.Width = 30; Circ.Stroke = Brushes.Black; Circ.StrokeThickness = 1; Circ.Fill = new SolidColorBrush(Color.FromRgb(pr.clr.R, pr.clr.G, pr.clr.B)); c.Children.Add(Circ); Canvas.SetLeft(Circ, y - 2); Canvas.SetTop(Circ, x + 10); TextBlock nom = new TextBlock(); nom.Text = pr.name; nom.Foreground = new SolidColorBrush(Colors.Black); nom.FontWeight = FontWeights.UltraBold; nom.Width = 20; nom.Height = 20; c.Children.Add(nom); Canvas.SetTop(nom, x + 14); Canvas.SetLeft(nom, y + 4); Canvas.SetZIndex(nom, 1); y = y + 35; i++; if (i == 7) { break; } } x = x + (Convert.ToSingle(p.Get_taille()) * 435) / Convert.ToSingle(mc.Get_Capacity()); } }