Example #1
0
        public void rempalcementLru(List <EntreeTablePage> tablePages, int adressePhysique, RamVirtuelle ram, DiskDur hdd)
        {
            if (ram.getNombrepagesLibres() == 0) //remplacement
            {
                int             indRam = fileLru.Dequeue();
                EntreeTablePage tmp    = new EntreeTablePage();

                tmp = tablePages.Find(e => e.getPageCorrespandante() == indRam && e.getDisponible() == true);
                tmp.setDisponible(false);
                tmp.setDirty(false);
                int entree = tablePages.FindIndex(x => x.getPageCorrespandante() == adressePhysique);
                tablePages[entree].setDisponible(true);
                tmp.setPageCorrespandante(hdd.tableAuxiliere[indRam]);
                hdd.tableAuxiliere[indRam] = tablePages[entree].getPageCorrespandante();
                tablePages[entree].setPageCorrespandante(indRam);
            }
            else
            {
                int ipage = 0;
                ipage = ram.listPages.FindIndex(p => p.getVide() == true);
                int entree = tablePages.FindIndex(x => x.getPageCorrespandante() == adressePhysique);
                tablePages[entree].setDisponible(true);
                tablePages[entree].setPageCorrespandante(ipage);
                hdd.tableAuxiliere[ipage] = adressePhysique;
                ram.listPages[ipage].setVide(false);
                ram.setNombrePagesLibres(ram.getNombrepagesLibres() - 1);
            }
        }
Example #2
0
 public void remplacementLfu(List <EntreeTablePage> tablePages, int adressePhysique, RamVirtuelle ram, DiskDur hdd)
 {
     if (ram.getNombrepagesLibres() == 0) //remplacement
     {
         int[]           lf     = lfu.Find(l => l[1] == lfu.Min(f => f[1]));
         int             indRam = lf[0];
         EntreeTablePage tmp    = new EntreeTablePage();
         tmp = tablePages.Find(e => e.getPageCorrespandante() == indRam && e.getDisponible() == true);
         tmp.setDisponible(false);
         tmp.setDirty(false);
         int entree = tablePages.FindIndex(x => x.getPageCorrespandante() == adressePhysique);
         tablePages[entree].setDisponible(true);
         tmp.setPageCorrespandante(hdd.tableAuxiliere[indRam]);
         hdd.tableAuxiliere[indRam] = tablePages[entree].getPageCorrespandante();
         tablePages[entree].setPageCorrespandante(indRam);
         lfu.Remove(lf);
         lfu.Add(new int[] { indRam, 0 });
     }
     else
     {
         int ipage = 0;
         ipage = ram.listPages.FindIndex(p => p.getVide() == true);
         int entree = tablePages.FindIndex(x => x.getPageCorrespandante() == adressePhysique);
         tablePages[entree].setDisponible(true);
         tablePages[entree].setPageCorrespandante(ipage);
         hdd.tableAuxiliere[ipage] = adressePhysique;
         ram.listPages[ipage].setVide(false);
         ram.setNombrePagesLibres(ram.getNombrepagesLibres() - 1);
         lfu.Add(new int[] { ipage, 0 });
     }
 }