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 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()); } } }