# Pour FIFO: class DPV: presente = False #page physique associée? npp = None #numéro de page physique associée class DPP: libre = False #non utilisée par un autre processus? npv = None #page virtuelle associée modif = False #accédée en écriture? info = 0 #usage selon l'algo utilisé def npv2npp(npv): if not dpv[npv].presente: defaut_de_page(npv) npp = dpv[npv].npp dpp[npv].modif = True return npp #ecrire routine defaut_de_page(npv) à l'aide #sauver_page(npp, npv) #mém. centrale -> disque #charger_page(npv, npp) #mém.centrale <- disque #choisir_victime() #choisir une page physique victime #nb_pp_occupees #variable globale vict_fifo = 0 def choisir_victime_FIFO(): global vict_fifo return vict_fifo++ % NB_PP def defaut_de_page(npv): global nb_pp_occupees while nb_pp_occupees == 0: while i<npp: if champ_libre[npp] = True: champ_libre=False else: continue #se placer sur la 1ère page physique dpp[npv].libre = True nb_pp_occupees+=1 choisir_victime_FIFO() charger_page(npv, npp) # Pour LRU: class DPV: presente = False #page physique associée? npp = None #numéro de page physique associée class DPP: libre = False #non utilisée par un autre processus? npv = None #page virtuelle associée modif = False #accédée en écriture? temps = 0 #usage selon l'algo choisi... def npv2npp(npv): if not dpv[npv].presente: defaut_de_page(npv) npp = dpv[npv].npp <1> #modifier éventuellement le champ "info" de la page #si l'accès est en écriture alors: dpp[npp].modif = True return npp #ecrire routine defaut_de_page(npv) à l'aire #sauver_page(npp, npv) #mém. centrale -> disque #charger_page(npv, npp) #mém.centrale <- disque #choisir_victime() #choisir une page physique victime #nb_pp_occupees #variable globale vict_lru = 0 def choisir_victime_FIFO(): global vict_lru return vict_lru++ % NB_PP def defaut_de_page(npv): global nb_pp_occupees while nb_pp_occupees == 0: while i<npp: if champ_libre[npp] = True: champ_libre=False else: continue #se placer sur la 1ère page physique dpp[npv].libre = True nb_pp_occupees+=1 choisir_victime_FIFO() charger_page(npv, npp) # Pour FINUFO: class DPV: presente = False #page physique associée? npp = None #numéro de page physique associée class DPP: libre = False #non utilisée par un autre processus? npv = None #page virtuelle associée modif = False #accédée en écriture? info = 0 #usage selon l'algo choisi... def npv2npp(npv): if not dpv[npv].presente: defaut_de_page(npv) npp = dpv[npv].npp <1> #modifier éventuellement le champ "info" de la page #si l'accès est en écriture alors: dpp[npp].modif = True return npp #ecrire routine defaut_de_page(npv) à l'aire sauver_page(npp, npv) #mém. centrale -> disque charger_page(npv, npp) #mém.centrale <- disque choisir_victime() #choisir une page physique victime nb_pp_occupees #variable globale vict_fifo = 0 def choisir_victime_FIFO(): global vict_fifo return vict_fifo++ % NB_PP def defaut_de_page(npv): global nb_pp_occupees while nb_pp_occupees == 0: while i<npp: if champ_libre[npp] = True: champ_libre=False else: continue #se placer sur la 1ère page physique dpp[npv].libre = True nb_pp_occupees+=1 choisir_victime_FIFO() charger_page(npv, npp) # Pour LFU: class DPV: presente = False #page physique associée? npp = None #numéro de page physique associée class DPP: libre = False #non utilisée par un autre processus? npv = None #page virtuelle associée modif = False #accédée en écriture? info = 0 #usage selon l'algo choisi... def npv2npp(npv): if not dpv[npv].presente: defaut_de_page(npv) npp = dpv[npv].npp <1> #modifier éventuellement le champ "info" de la page #si l'accès est en écriture alors: dpp[npp].modif = True return npp #ecrire routine defaut_de_page(npv) à l'aire #sauver_page(npp, npv) #mém. centrale -> disque #charger_page(npv, npp) #mém.centrale <- disque #choisir_victime() #choisir une page physique victime #nb_pp_occupees #variable globale vict_fifo = 0 def choisir_victime_FIFO(): global vict_fifo return vict_fifo++ % NB_PP def defaut_de_page(npv): global nb_pp_occupees while nb_pp_occupees == 0: while i<npp: if champ_libre[npp] = True: champ_libre=False else: continue #se placer sur la 1ère page physique dpp[npv].libre = True nb_pp_occupees+=1 choisir_victime_FIFO() charger_page(npv, npp)