public int Rech_first(processus proc)//retourne l'indice ou doit etre inseré proc { Boolean rech = true; int indice = 0; while ((rech) && (indice < list_zone_libre.Count)) { if ((list_zone_libre[indice] / 1000 - proc.Get_taille()) > 0) { rech = false; indice = list_zone_libre[indice] % 1000; } else { indice++; } } if (rech) { return(-1); } else { return(indice); } }
public int Rech_best(processus proc)//retourne l'indice de la partition ou doit etre insere proc { int indice = 0; Boolean rech = true; List <int> liste = new List <int>(); foreach (int j in list_zone_libre) { liste.Add(j); } liste.Sort(); while ((rech) && (indice < liste.Count)) { if ((liste[indice] / 1000 - proc.Get_taille()) > 0) { rech = false; indice = liste[indice] % 1000; } else { indice++; } } if (rech) { return(-1); } else { return(indice); } }
public bool Equals(processus other) { if (other == null) { return(false); } return(this.id.Equals(other.Get_id())); }
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 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 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 int Rech_worst(processus proc) { //int indice = 0; List <int> liste = new List <int>(); foreach (int j in list_zone_libre) { liste.Add(j); } liste.Sort(); liste.Reverse(); if (liste[0] / 1000 >= proc.Get_taille()) { return(liste[0] % 1000); } else { return(-1); } }
public void ajout_process(int taille, int temp) { processus pro = new processus("process", fifo.Count + en_cours.Count + 1, taille, temp); fifo.Add(pro); }
/*public process_list() * { * * int taille; * int temps_ex; * int id = 1; * fifo = new List<processus>(); * en_cours = new List<processus>(); * * while (true) * { * Console.WriteLine("entrez les information de la processus"); * Console.WriteLine("taille=="); * taille = Convert.ToInt32(Console.ReadLine()); * Console.WriteLine("temps=="); * temps_ex = Convert.ToInt32(Console.ReadLine()); * if (taille == 0) break; * processus pro = new processus(id++, taille, temps_ex); * fifo.Add(pro); * } * }*/ /*public void une_file() //ordonnancement par une seule file d'attente * * { * int taille; * int temps_ex; * int id = 1; * * fifo = new List<processus>(); * en_cours = new List<processus>(); * List<int> liste = new List<int>() * RAM ram = new RAM(liste); * int n; int t; * Console.WriteLine("quel algorithme de recherche voullez vous utiliser?"); * Console.WriteLine("1)first_fit"); * Console.WriteLine("2)Next_fit"); * Console.WriteLine("3)Best_fit"); * Console.WriteLine("4)Worst_fit"); * n = Convert.ToInt32(Console.ReadLine()); * * while (true) * { * Console.WriteLine("entrez les information de la processus"); * Console.WriteLine("taille=="); * taille = Convert.ToInt32(Console.ReadLine()); * Console.WriteLine("temps=="); * temps_ex = Convert.ToInt32(Console.ReadLine()); * if (taille == 0) break; * processus proc = new processus(id++, taille, temps_ex); * * t = 0; * * switch (n) * { * case 1: * t = ram.Rech_first(proc); * break; * case 2: * t = ram.Rech_best(proc); * break; * case 3: * t = ram.Rech_worst(proc); * break; * * } * * * if (t != -1) * { * if (ram.list_rep[t].G_vide() == true) * { * Console.WriteLine("une place a ete trouvé"); * proc.Set_etat(1); * proc.Set_part(t); * en_cours.Add(proc); * ram.occ_part(ram.list_rep[t]); * } * } * else { Console.WriteLine("ajoute a la fifo"); fifo.Add(proc); } * } * Console.WriteLine("*******La RAM :"); * ram.affich_ram(); * Console.WriteLine("*******les proce en cour d'execution****"); * afficher_encours(); * Console.WriteLine("fifo"); * afficher_fifo(); * System.Timers.Timer aTimer = new System.Timers.Timer(); * aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); * aTimer.Interval = 980; * aTimer.Enabled = true; * while (en_cours.Count == 0) ; * * void OnTimedEvent(object source, ElapsedEventArgs e) * { * int part = 0; * for (int i = 0; i < en_cours.Count; i++) * { * en_cours[i].Set_time(en_cours[i].Get_temps() - 1); * if (en_cours[i].Get_temps() == 0) * { * part = en_cours[i].Get_part(); * Console.WriteLine("le processus: " + en_cours[i].id + " de taille: " + en_cours[i].Get_taille() + " est terminé"); * en_cours.Remove(en_cours[i]); * ram.vider_part(ram.list_rep[part]); * Console.WriteLine("Ram"); * Console.WriteLine("juste apres supression du processus en cours d'execution :"); * ram.affich_ram(); * afficher_encours(); * afficher_fifo(); * * if (fifo.Count == 0) { Console.WriteLine("FIN de la fifo"); } * else * { * 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) { Console.WriteLine("le processus ne trouve pasde place "); } * while (t != -1) * { * Console.WriteLine(ram.list_rep[t].Get_taille()); * fifo[0].Set_part(t); * en_cours.Add(fifo[0]); * fifo.Remove(fifo[0]); * ram.occ_part(ram.list_rep[t]); * if (fifo.Count == 0) { Console.WriteLine("FIN de la fifo"); break; } * * 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; * * } * } * } * ram.affich_ram(); * afficher_encours(); * afficher_fifo(); * } * } * } * } */ public void Add_Fifo(int taille, int delay) { processus p = new processus("P" + fifo.Count, id++, taille, delay); fifo.Add(p); }