public void execute_process(int id, int rep) { processus pro = new processus("", id, 0, 0); pro = fifo.Find(x => x.Get_id() == id); fifo.Remove(pro); pro.Set_part(rep); en_cours.Add(pro); }
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()); } } }