EXERCICES DIRIGES 6 Gestion de la mémoire centrale
Transcription
EXERCICES DIRIGES 6 Gestion de la mémoire centrale
Méthodes de Programmation système 2001-2002 Joëlle Delacroix __________________________________________________________________________________________ EXERCICES DIRIGES 6 Gestion de la mémoire centrale CORRECTION Exercice 1 : Gestion d'une mémoire par zones Question 1 Une zone libre contient un en-tête de deux mots : mot1 : adresse de la zone libre suivante mot2 : taille de la zone Les zones libres sont organisées selon une liste chainée, repérée par un pointeur de début : adresse_premiere_zone. Adresse_premiere_zone suivant Adresse Zone 2 Taille Zone 1 : T1 taille T1 Adresse Zone 3 Taille Zone 2 : T2 Zone libre T2 NULL NULL Taille Zone 3 : T3 T3 Question 2 Algorithme First Fit : la première zone de taille suffisante est sélectionnée. On choisit par ailleurs d'implanter le programme en fin de zone libre de manière à faciliter la gestion des pointeurs. gestion du résidu issu de l'allocation : soit α la taille de la zone résiduelle, α = Ti – T où Ti est la taille de la zone et T la taille du programme à allouer. Deux cas sont possibles en fonction de ε, la taille minimale de zone autorisée. 1/ α < ε, la zone résiduelle est jugée négligeable et elle est alors supprimée de la liste des zones libres (! modification du chainage des zones libres). α ≥ ε, la zone résiduelle est conservée (!modification de la taille de la zone libre). D'où l'algorithme suivant avec parcours, avant : pointeurs sur zone libre A : adresse d'implantation du programme de taille T 1 Méthodes de Programmation système 2001-2002 Joëlle Delacroix __________________________________________________________________________________________ hors cas particulier sur le chainage (zone libre en tête et fin de liste). Parcours := premiere_zone_libre; avant := premiere_zone_libre; trouve = faux; tant que (parcours <> NULL et trouve = faux) faire si (parcours.taille >= T) alors - on a trouvé une zone de taille suffisante parcours.taille = parcours.taille – T; A := parcours + parcours.taille; trouve = vrai; si (parcours.taille < ε) - on libère la zone libre résiduelle avant.suivant = parcours.suivant; fsi avant = parcours; parcours = parcours.suivant; fait Question 3 parcours = adresse_premiere_zone; avant = adresse_premiere_zone; taille_mem = max; trouve = faux; tant que (parcours <> NULL) faire si (T <= parcours.taille < taille_mem) alors - on retient la zone zone_trouve = parcours; taille_mem = parcours.taille; zone_avant = avant; trouve = vrai; fsi avant = parcours; parcours = parcours.suivant; fait - à la sortie de la boucle zone_trouve contient l'adresse de la zone dont la taille engendre la plus petit residu sauf si trouve = faux si (trouve == vrai) alors zone_trouve.taille = zone_trouve.taille – T; A = zone_trouve + zone_trouve.taille; si (zone_trouve.taille < ε) - on libère la zone libre résiduelle zone_avant.suivant = zone_trouve.suivant; fsi fsi 2 Méthodes de Programmation système 2001-2002 Joëlle Delacroix __________________________________________________________________________________________ Question 4 Il y a deux espaces libres : la zone (1700K-2000K) et la zone (2300K-2560K) soit un total de 560K ce qui est supérieur à la taille de P5. Mais ces deux zones ne sont pas contiguës et on ne peut donc pas allouer l'espace mémoire à P5. Il faut donc compacter l'espace mémoire pour arriver à la configuration Système P1 d'exploitation 0 400K P2 P3 1000K 1700K 2000K 2560K Question 5 Une zone libérée doit être fusionnée à sa voisine si celle-ci est également une zone libre : différents acas doivent être considérés. - Cas 1 : la zone libérée est elle-même précédée d'une zone libre ZL : on effectue une fusion et on modifie la taille de ZL : ZL.taille = ZL.taille + zoneliberee.taille; - Cas 2 : la zone libérée est cernée par deux zones occupées : on crée une nouvelle zone libre - Cas 3 : la zone libérée est suivie par une zone libre : on fusionne les deux zones (on ajoute les tailles des deux zones) et on modifie le chainage des zones libres. les infos de gestion (taille et suivant) sont "remontées" dans les deux premiers mots de la zone libérée. - Cas 4 : la zone libérée est cernée par deux zones libres A et C : on fusionne les trois zones libres. c'est-à-dire : la zone libre C est supprimée du chainage et les infos de gestion sont remontées dans les deux premiers mots de la zone A. Exercice 2 : Pagination Question 1 Décrivez le format d'une entrée de la table des pages d'un processus. entrée n V M A Protec adresse réelle bit V : indique si la page est prése,nte ou non en mémoire centrale V= 0, page non présente bit M : indique si la page a été modifiée bit A : champ pour les informations à la apge (algorithmes de remplacement de pages) protec : champ de protection pour les accès en lecture/écriture/exécution adresse réelle : adresse de la case contenant la page. Question 2 adresse_reelle et adresse_virtuelle sont fde type adresse, ce type est formé de deux champs : champ1 et champ2 instruction est de type type_instruction qui peut prendre pour valeurs : lecture, écriture et exécution. procedure décodage (adresse_réelle : adresse, adresse_virtuelle : adresse, instruction : type_instruction) debut 3 Méthodes de Programmation système 2001-2002 Joëlle Delacroix __________________________________________________________________________________________ A = table_des_pages(adresse_virtuelle.page); si (A.V ==0) alors réveil du processus de défaut de page : chargement de la page et mise à jour de la table des pages fsi Verifier_droits_accès (instruction, A. protec); A.A = 1; - on positionne l'accès à la page si (instruction == écriture) alors A.M = 1; fsi adresse_reelle.champ1 = A.adresse_reelle; adresse_reelle.depl = adresse_virtuelle.depl; fin Question 3 Soit la liste des pages virtuelles référencées aux instants t = 1, 2, …, 11 3 5 6 8 3 9 6 12 3 6 10 FIFO accès 3 case 1 3 case 2 case 3 case 4 défaut D LRU accès 3 case 1 3 case 2 case 3 case 4 défaut D 5 3 5 6 3 5 6 D D 5 3 5 6 3 5 6 D D 8 3 5 6 8 D 3 3 5 6 8 9 9 5 6 8 D 6 9 5 6 8 12 9 12 6 8 D 3 9 12 3 8 D 6 9 12 3 6 D 10 10 12 3 6 D 8 3 5 6 8 D 3 3 5 6 8 9 3 9 6 8 D 6 3 9 6 8 12 3 9 6 12 D 3 3 9 6 12 6 3 9 6 12 10 3 10 6 12 Question 4 ! question de cours 4 Méthodes de Programmation système 2001-2002 Joëlle Delacroix __________________________________________________________________________________________ Question 5 Table des segments proc A v v 4 5 1 8 12 Page 3 S1B 3 i v 4 10 i v 6 Page 1 S1A 4 Page 2 S1A 5 Page 1 S3A 6 7 Table des pages des segments Table des segments proc B 2 8 i v 11 16 v 2 8 i 9 10 Page 2 S1B 11 12 13 v 15 14 i Page 1 S2B Table des pages des segments MC 5 15