Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        public RAM_var(int taille)
        {
            capacite        = taille;
            list_rep        = new List <partition>();
            list_zone_libre = new List <int>();
            partition prt = new partition(0, taille);

            list_rep.Add(prt);
            list_zone_libre.Add(taille * 1000);
        }
Exemplo n.º 3
0
        public RAM_fix(List <int> list, int cap)
        {
            capacite = cap;
            int       nb = list.Count;
            int       k  = 0;
            int       m  = 0;
            partition p;

            list_rep        = new List <partition>();
            list_zone_libre = new List <int>();
            for (int i = 0; i < nb; i++)
            {
                m = list[i];
                p = new partition(k, m);
                list_rep.Add(p);
                list_zone_libre.Add(i + m * 1000);
                k = k + m;
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        public RAM_fix()
        {
            capacite = 500;
            int       nb = 8;
            int       k  = 0;
            int       m  = 0;
            partition p;
            Random    rand = new Random();

            for (int i = 0; i < nb - 1; i++)
            {
                m = rand.Next(10, capacite / nb);
                p = new partition(k, m);
                list_rep.Add(p);
                list_zone_libre.Add(i + m * 1000);

                k = k + m + 1;
            }
            p = new partition(k, capacite - k);
            list_rep.Add(p);
            list_zone_libre.Add(nb - 1 + (capacite - k) * 1000);
        }
Exemplo n.º 6
0
        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);
            }
        }