Telechargé par Lea Bloom

td9

publicité
# 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)
Téléchargement