public void occ_part(partition pr, processus proc, int tai) { int num = list_rep.IndexOf(pr); list_rep[num].Set_vide(false); list_rep[num].Set_id(proc.Get_id()); // pr.f_proc.Add(proc); list_zone_libre.Remove(num + pr.Get_taille() * 1000); this.frag = frag + (list_rep[num].Get_taille() - tai); }
public void vider_part(partition p, int tai) { int num = list_rep.IndexOf(p); //p.f_proc.Remove(p.f_proc[0]); list_rep[num].Set_vide(true); list_rep[num].Set_id(-1); list_zone_libre.Add(num + p.Get_taille() * 1000); this.frag = frag - (list_rep[num].Get_taille() - tai); int i = 0; for (i = 0; i < list_zone_libre.Count; i++) { list_zone_libre[i] = (list_zone_libre[i] / 1000) + ((list_zone_libre[i] % 1000) * 10000); } list_zone_libre.Sort(); for (i = 0; i < list_zone_libre.Count; i++) { list_zone_libre[i] = (list_zone_libre[i] / 10000) + ((list_zone_libre[i] % 10000) * 1000); } }
public int allocation_process(int prt, int process_id, int process_taille) { int nr = list_rep[prt].Get_taille() - process_taille; list_zone_libre.Remove(list_zone_libre.Find(x => x == prt + list_rep[prt].Get_taille() * 1000)); if (nr == 0) { list_rep[prt].Set_id(process_id); if (process_id == -1) { list_rep[prt].Set_vide(true); } else { list_rep[prt].Set_vide(false); } return(0); } else { list_rep[prt].Set_taille(process_taille); list_rep[prt].Set_id(process_id); if (process_id == -1) { list_rep[prt].Set_vide(true); } else { list_rep[prt].Set_vide(false); } partition part = new partition(list_rep[prt].Get_adr() + process_taille, nr); list_rep.Insert(prt + 1, part); list_zone_libre.Add(part.Get_taille() * 1000 + prt + 1); corriger_remove(prt + 1, -1); return(-1); } }