Joëlle Delacrox EXERCICES DIRIGES 6 Geston de la mémore centrale CORRECTION Exercce 1 : Geston d'une mémore par zones Queston 1 Une zone lbre content un en-tête de deux mots : mot1 : adresse de la zone lbre suante mot2 : talle de la zone Les zones lbres sont organsées selon une lste chanée, repérée par un ponteur de début : adresse_premere_zone. Adresse_premere_zone Adresse Zone 2 Talle Zone 1 : T1 T1 suant talle Adresse Zone 3 Talle Zone 2 : T2 T2 Zone lbre NULL Talle Zone 3 : T3 NULL T3 Queston 2 Algorthme Frst Ft : la premère zone de talle suffsante est sélectonnée. On chost par alleurs d'mplanter le programme en fn de zone lbre de manère à faclter la geston des ponteurs. geston du résdu ssu de l'allocaton : sot α la talle de la zone résduelle, α = T T où T est la talle de la zone et T la talle du programme à allouer. Deux cas sont possbles en foncton de ε, la talle mnmale de zone autorsée. 1/ α < ε, la zone résduelle est jugée néglgeable et elle est supprmée de la lste des zones lbres (! modfcaton du chanage des zones lbres). α ε, la zone résduelle est conserée (!modfcaton de la talle de la zone lbre). D'où l'algorthme suant aec parcours, aant : ponteurs sur zone lbre A : adresse d'mplantaton du programme de talle T 1
Joëlle Delacrox hors cas partculer sur le chanage (zone lbre en tête et fn de lste). Parcours := premere_zone_lbre; aant := premere_zone_lbre; troue = faux; tant que (parcours <> NULL et troue = faux) fare s (parcours.talle >= T) - on a troué une zone de talle suffsante parcours.talle = parcours.talle T; A := parcours + parcours.talle; troue = ra; s (parcours.talle < ε) - on lbère la zone lbre résduelle aant.suant = parcours.suant; aant = parcours; parcours = parcours.suant; fat Queston 3 parcours = adresse_premere_zone; aant = adresse_premere_zone; talle_mem = max; troue = faux; tant que (parcours <> NULL) fare s (T <= parcours.talle < talle_mem) - on retent la zone zone_troue = parcours; talle_mem = parcours.talle; zone_aant = aant; troue = ra; aant = parcours; parcours = parcours.suant; fat - à la sorte de la boucle zone_troue content l'adresse de la zone dont la talle engendre la plus pett resdu sauf s troue = faux s (troue == ra) zone_troue.talle = zone_troue.talle T; A = zone_troue + zone_troue.talle; s (zone_troue.talle < ε) - on lbère la zone lbre résduelle zone_aant.suant = zone_troue.suant; 2
Joëlle Delacrox Queston Il y a deux espaces lbres : la zone (1700K-2000K) et la zone (2300K-260K) sot un total de 60K ce qu est supéreur à la talle de P. Mas ces deux zones ne sont pas contguës et on ne peut donc pas allouer l'espace mémore à P. Il faut donc compacter l'espace mémore pour arrer à la confguraton Système P1 P2 P3 d'explotaton 0 00K 1000K 1700K 2000K 260K Queston Une zone lbérée dot être fusonnée à sa osne s celle-c est également une zone lbre : dfférents acas doent être consdérés. - Cas 1 : la zone lbérée est elle-même précédée d'une zone lbre ZL : on effectue une fuson et on modfe la talle de ZL : ZL.talle = ZL.talle + zonelberee.talle; - Cas 2 : la zone lbérée est cernée par deux zones occupées : on crée une nouelle zone lbre - Cas 3 : la zone lbérée est sue par une zone lbre : on fusonne les deux zones (on ajoute les talles des deux zones) et on modfe le chanage des zones lbres. les nfos de geston (talle et suant) sont "remontées" dans les deux premers mots de la zone lbérée. - Cas : la zone lbérée est cernée par deux zones lbres A et C : on fusonne les tros zones lbres. c'est-à-dre : la zone lbre C est supprmée du chanage et les nfos de geston sont remontées dans les deux premers mots de la zone A. Exercce 2 : Pagnaton Queston 1 Décrez le format d'une entrée de la table des pages d'un processus. entrée n V M A Protec adresse réelle bt V : ndque s la page est prése,nte ou non en mémore centrale V= 0, page non présente bt M : ndque s la page a été modfée bt A : champ pour les nformatons à la apge (algorthmes de remplacement de pages) protec : champ de protecton pour les accès en lecture/écrture/exécuton adresse réelle : adresse de la case contenant la page. Queston 2 adresse_reelle et adresse_rtuelle sont fde type adresse, ce type est formé de deux champs : champ1 et champ2 nstructon est de type type_nstructon qu peut prendre pour aleurs : lecture, écrture et exécuton. procedure décodage (adresse_réelle : adresse, adresse_rtuelle : adresse, nstructon : type_nstructon) debut 3
Joëlle Delacrox fn A = table_des_pages(adresse_rtuelle.page); s (A.V ==0) réel du processus de défaut de page : chargement de la page et mse à jour de la table des pages Verfer_drots_accès (nstructon, A. protec); A.A = 1; - on postonne l'accès à la page s (nstructon == écrture) A.M = 1; adresse_reelle.champ1 = A.adresse_reelle; adresse_reelle.depl = adresse_rtuelle.depl; Queston 3 Sot la lste des pages rtuelles référencées aux nstants t = 1, 2,, 11 3 6 3 9 6 12 3 6 10 FIFO accès 3 6 3 9 6 12 3 6 10 case 1 3 3 3 3 3 9 9 9 9 9 10 case 2 12 12 12 12 case 3 6 6 6 6 6 6 3 3 3 case 6 6 défaut D D D D D D D D D LRU accès 3 6 3 9 6 12 3 6 10 case 1 3 3 3 3 3 3 3 3 3 3 3 case 2 9 9 9 9 9 10 case 3 6 6 6 6 6 6 6 6 6 case 12 12 12 12 défaut D D D D D D Queston! queston de cours
Joëlle Delacrox Queston Table des segments proc A Page 3 S1B 1 2 12 10 Page 1 S1A Page 2 S1A 3 Table des segments proc B 16 6 Table des pages des segments 11 2 Page 1 S3A Page 2 S1B 6 7 9 10 11 12 1 Page 1 S2B 13 1 1 Table des pages des segments MC