public void creationTablePages(List <EntreeTablePage> tablePages, int taille, RamVirtuelle ram, DiskDur hdd) { for (int i = 0; i < taille; i++) { EntreeTablePage entreeTablePage = new EntreeTablePage(); entreeTablePage.setPageCorrespandante(23 + hdd.getNombreCases()); Case cas = new Case(entreeTablePage.getPageCorrespandante()); hdd.cases.Add(cas); hdd.setNombreCases(hdd.getNombreCases() + 1); tablePages.Add(entreeTablePage); } }
public void gestionRequete(int typeRemplacement, List <EntreeTablePage> tablePages, int numeroPage, RamVirtuelle ram, DiskDur hdd) { EntreeTablePage entreeTablePage = Mmu.traductionAdresse(tablePages, numeroPage); if (entreeTablePage == null) { // acces page non alloué } else { if (entreeTablePage.getDisponible() == false) //defaut de page { switch (typeRemplacement) { case 0: rempalcementLru(tablePages, entreeTablePage.getPageCorrespandante(), ram, hdd); fileLru.Enqueue(entreeTablePage.getPageCorrespandante()); break; case 1: remplacementFifo(tablePages, entreeTablePage.getPageCorrespandante(), ram, hdd); fifo.Enqueue(entreeTablePage.getPageCorrespandante()); break; case 2: remplacementLfu(tablePages, entreeTablePage.getPageCorrespandante(), ram, hdd); lfu.Find(l => l[0] == entreeTablePage.getPageCorrespandante())[1]++; break; case 3: for (int i = 0; i < 5; i++) { aging[i] = aging[i] >> 1; } remplacementAging(tablePages, entreeTablePage.getPageCorrespandante(), ram, hdd); break; } defautDePage++; } else { switch (typeRemplacement) { case 0: fileLru.SkipWhile(r => r == entreeTablePage.getPageCorrespandante()); fileLru.Enqueue(entreeTablePage.getPageCorrespandante()); break; case 1: break; case 2: lfu.Find(l => l[0] == entreeTablePage.getPageCorrespandante())[1]++; break; case 3: for (int i = 0; i < 5; i++) { aging[i] = aging[i] >> 1; } aging[entreeTablePage.getPageCorrespandante()] += ((uint)(1 << 15)); break; } tablePages[numeroPage].setDirty(true); } } }