La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

SUPINFO - Systèmes dexploitationPage 1Pierre Dimo - 2005 Chapitre 9 : Mémoire virtuelle Sujets abordés –Généralités –Chargement de page à la demande –Création.

Présentations similaires


Présentation au sujet: "SUPINFO - Systèmes dexploitationPage 1Pierre Dimo - 2005 Chapitre 9 : Mémoire virtuelle Sujets abordés –Généralités –Chargement de page à la demande –Création."— Transcription de la présentation:

1 SUPINFO - Systèmes dexploitationPage 1Pierre Dimo Chapitre 9 : Mémoire virtuelle Sujets abordés –Généralités –Chargement de page à la demande –Création de processus –Remplacement de pages –Allocation des cadres –Écroulement du SE –Exemples de SE

2 SUPINFO - Systèmes dexploitationPage 2Pierre Dimo Généralités Mémoire virtuelle – technique permettant de faire exécuter des processus qui ne se trouvent pas en totalité en mémoire ; ils peuvent donc utiliser un espace dadressage logique supérieur à lespace physique du système. Cette technique sépare la mémoire logique de lutilisateur de la mémoire physique du système –Simplifie le partage des espaces dadressage. –Simplifie la création des processus. Deux techniques dimplémentation : –Pages à la demande : la technique la plus courante. –Segment à la demande : plus compliquée et rarement utilisée (IBM OS2, Burroughs) Espace dadressage virtuel : espace logique du processus, vu comme un plage continue dadresses commençant à 0

3 SUPINFO - Systèmes dexploitationPage 3Pierre Dimo Organisation de la mémoire virtuelle Page 0 Page 1 Page 2 Page 3 Page 4 Page n Page k Mémoire virtuelle dun processus Table de correspondance Mémoire physique Mémoire externe

4 SUPINFO - Systèmes dexploitationPage 4Pierre Dimo MAX code données tas pile Espace dadressage virtuel

5 SUPINFO - Systèmes dexploitationPage 5Pierre Dimo Partage de la mémoire Les processus peuvent se partager des procédures et des données Les zones partagées occupent dans la mémoire physique une place unique : la table des pages de chaque processus contient les correspondances entre les pages logiques et les pages physiques. Les zones partagées sont marquées « en lecture seule » Lorsquun processus se termine, on analyse la tables des pages actives. Les pages mémoire non partagées peuvent être libérées. La mémoire partagée peut aussi servir pour la communication entre les processus.

6 SUPINFO - Systèmes dexploitationPage 6Pierre Dimo Espace dadressage virtuel (suite) 0 MAX code données tas pile 0 MAX code données tas pile P1 P2 Bibliothèque partagée

7 SUPINFO - Systèmes dexploitationPage 7Pierre Dimo Implémentation : méthode des pages à la demande Les pages sont chargées en mémoire seulement quand elles sont nécessaires (a comparer avec la permutation qui est utilisée pour charger ou décharger lensemble de la mémoire occupée par un processus ). –Moins dopérations dE/S –Besoin réduit de mémoire –Réponse accélérée –Plus dutilisateurs Le programme fait référence à une adresse logique : –Référence invalide abort –Référence absente de la mémoire chargement de la page –Référence en mémoire : accès

8 SUPINFO - Systèmes dexploitationPage 8Pierre Dimo Table des pages quand toutes les pages ne se trouvent pas en mémoire Le bit de validité V = page appartenant au processus et présente en mémoire I = page nappartenant pas à lespace virtuel (6 et 7) ou absente de la mémoire (1, 3 et 4). Si la page est absente de la mémoire, lentrée de la table contient son adresse sur disque.

9 SUPINFO - Systèmes dexploitationPage 9Pierre Dimo Bit de validité A chaque entrée de la table des pages on associe un bit de validité (1 en mémoire, 0 pas en mémoire) Le bit est initialisé à 0 pour toutes les entrées. Pendant le calcul de ladresse, si le bit est à 0 le système génère une erreur de page No cadreBit de validité Table des pages

10 SUPINFO - Systèmes dexploitationPage 10Pierre Dimo Erreur de page La première référence à une page génère automatiquement une erreur de page qui est détectée par un piège dans le SE. Le SE examine la table des pages du processus (qui fait partie du PCB) pour déterminer si : –La référence est invalide (hors espace virtuel) abort. –La référence est valide mais la page est absente de la mémoire. Cherche un cadre disponible (dans la liste des cadres disponibles). Charge la page dans le cadre. Modifie le bit de validité de la page et met à jour la table des pages. Redémarre le processus au point ou il a été interrompu Lexpérience montre que les programmes on une forme de localité qui fait que les erreurs de page ne sont pas fréquentes par rapport aux adressages sans erreur.

11 SUPINFO - Systèmes dexploitationPage 11Pierre Dimo Traitement de lerreur de page M

12 SUPINFO - Systèmes dexploitationPage 12Pierre Dimo Equipement nécessaire Au lancement du processus, le SE construit le PCB (Process Control Block = descripteur du processus). Entre autres, ce descripteur contient une table ; pour chaque entrée de cette table on prévoit 2 données : le no. « logique » de la page dans lespace virtuel du processus et ladresse « physique » de la page sur disque Le défaut de page provoque une interruption qui est détectée par le matériel et traitée comme dans le schéma précédent. Si il ny a pas de cadre disponible dans la mémoire vive, il faut en libérer, ce qui suppose une gestion spécifique des pages ainsi que des algorithmes de décision : quelle(s) page(s) sera(ont) enlevée(s) de la mémoire vive et que fait-on delle(s) ? Les pages enlevées de la mémoire sont généralement enregistrées sur un disque rapide, dans une zone spécialement destinée a la permutation (swapping).

13 SUPINFO - Systèmes dexploitationPage 13Pierre Dimo Que se passe-t-il en cas derreur de page ? Si la mémoire physique a des cadres disponibles, on charge la page manquante Si la mémoire physique na pas de cadre libre, on remplace une page – elle ne doit pas être en cours dutilisation –Condition de performance – utilisation dun algorithme conduisant a un nombre minimum derreurs de page. Problème : après le chargement de la page manquante (remplacement ou pas) il faut reprendre linstruction qui a généré lerreur de page. Ceci induit un temps perdu (linstruction est exécuté deux fois) mais peut savérer plus coûteux et compliqué si cest une instruction qui manipule plusieurs adresses à la fois (ex : une instruction qui permet de copier un bloc dadresses dun endroit à un autre dans la mémoire) : il faut aussi rétablir létat précédent. Dans ce dernier cas il est possible que linstruction fasse référence à plusieurs pages (ex : des instructions qui déplacent des blocs en mémoire)!

14 SUPINFO - Systèmes dexploitationPage 14Pierre Dimo Opérations en cas de défaut de page. Activité no. 1 : gestion de linterruption –Interruption du SE (piège) –Sauvegarde des registres et de létat du processus P k –Identification de la cause de linterruption Activité no. 2 : chargement de la page –Vérification de la légalité de laccès et calcul de la position sur disque de la page à charger –Si un cadre libre existe, lance une lecture de la page sur disque sinon, libère une page (choix + écriture disque) –Si lUC a été affectée à un autre processus P j pendant les opérations de sauvegarde / restauration disque (peuvent durer…), il faut linterrompre et sauvegarder son état. –Mise à jour des tables de gestion des pages Activité no. 3 : reprise du processus interrompu –Attendre le tour du processus P k –Restauration des registres et de létat processus –Reprise au point dinterruption

15 SUPINFO - Systèmes dexploitationPage 15Pierre Dimo Effet sur la performance du système Soit p la probabilité derreur de page : 0 p 1.0 –si p = 0 pas derreurs –si p = 1, toutes les références à la mémoire sont des erreurs Durée effective dadressage (TAE = Temps Effectif dAdressage) TAE = (1 – p) x temps_daccès_à_ la_mémoire + p x (temps_de_traitement_de_lerreur + temps de sauvegarde de la page + temps de restauration dune page + surcharge due au redémarrage)

16 SUPINFO - Systèmes dexploitationPage 16Pierre Dimo Exemple de calcul des performances Temps daccès mémoire = 200 nanosecondes = 0,2 µs Dans 50% des cas, la page qui doit être remplacée a été touchée, donc il faut la sauvegarder. Permutation des pages = 8 ms (normal pour des disques durs) On fait abstraction de lexistence éventuelle dune queue aux accès disque TAE = 200 x (1-p) +8 x 10 6 x p = x p Le temps daccès est donc pratiquement proportionnel à p : Soit p = 1/1000 : TAE = 8,199 microsecondes (soit 40 fois plus que le temps daccès diret !) Si on veut imposer une dégradation limitée à 10%, il faut que x p < , ce qui conduit à p < 0, !

17 SUPINFO - Systèmes dexploitationPage 17Pierre Dimo Gestion des défauts de pages Deux approches : –La permutation totale : utilisation dune zone dédiée sur un disque. On adresse cette zone par des procédures spéciales, plus performantes que celles utilisées dans le cadre de la gestion des fichiers, car on évite la surcharge nécessaire pour la gestion des arborescences et le partage. –La permutation partielle : les pages du processus sont toujours chargées à partir du fichier qui les contient (et ou elles ne sont pas modifiées), mais on permute les informations périssables – la pile et les données temporaires stockées dans le « tas » (voir pages 4 et 6). La deuxième approche présente lavantage de réduire lespace nécessaire pour la permutation (SOLARIS et UNIX BSD)

18 SUPINFO - Systèmes dexploitationPage 18Pierre Dimo Mémoire virtuelle et processus Lutilisation de la mémoire virtuelle apporte des avantages supplémentaires : –Création des processus enfants : Initialement, les processus enfants peuvent partager les mêmes pages que le processus parent, ce qui évite une majeure partie de la procédure de création dun nouveau processus (fork(), vfork() ).fork(), vfork() Seulement les pages qui ont été touchées par le parent ou un des enfants seront sauvegardées et copiées (COW = Copy On Write) –Fichiers en mémoire (MMF = Memory Mapped Files)MMF = Memory Mapped Files Le fichier est traité comme une succession de pages Une zone du fichier de la taille dune page est lue et mise en mémoire Les opérations dE/S sur le fichier sont ensuite traitées comme des accès mémoire, en évitant les procédures (plus lentes) READ et WRITE.

19 SUPINFO - Systèmes dexploitationPage 19Pierre Dimo Exercices Exercice 1 Soit un système qui fournit aux utilisateurs un espace virtuel de 2 32 octets. Lordinateur dispose dune mémoire physique de 2 18 octets. La mémoire virtuelle est implémentée par pagination, avec des pages de 4096 octets. Montrer comment lordinateur établit ladresse physique si le processus génère une référence à ladresse Exercice 2 Soit un système utilisant une mémoire paginée dont la table des pages est maintenue dans les registres. Il faut 8 ms pour répondre à un défaut de page si on trouve un cadre vide ou si la page que lon remplace na pas été modifiée et 20 ms si la page a été modifiée. Le temps daccès à la mémoire est de 100 ns. On suppose que les pages remplacées sont modifiées dans 70% des cas. Quel est le rapport acceptable de défauts de pages pour que le temps daccès effectif ne dépase pas 200 ns ?

20 SUPINFO - Systèmes dexploitationPage 20Pierre Dimo Réponse aux exercices Exercice 1 –Integer( / 4096) = 2715donc ladresse recherchée se trouve dans la page 2715 –2715 * 4096 = cest ladresse du début de la page –Ladresse recherchée se trouve à ladresse – =2816 de la page 2715 Exercice 2 –En cas de défaut de page, 70% sont des pages modifiées et 30% des pages intactes. –Soit p la probabilité de défaut de page ; le temps effectif daccès T e se calcule avec la formule T e =T a *(1 – p) + p * T p –Le temps de permutation nest pas le même suivant que la page a été touchée ou non ; il faut donc considérer les 2 cas de figure : 0,7 * p * T p1 et 0,3 * p * T p2, ou T p1 =20ms et T P2 =8ms –On en déduit que p =(T e – T a ) / (0,7 * T p1 + 0,3 * T p2 – T a )

21 SUPINFO - Systèmes dexploitationPage 21Pierre Dimo Problème de la sur - réservation Soit N processus composés de M i pages chacun, mais dont R j pages ne sont jamais utilisées Le chargement des pages à la demande présente lavantage de ne charger que les pages nécessaires, soit P = Σ(M i – R i ) Supposons que nous disposons de Q cadres ; il faut Q >=P Le nombre de processus qui peuvent être chargés et exécutés simultanément est donc supérieur à celui calculé sur la base du nombre total de pages des processus. Cela sappelle de la « sur- réservation » et présente lavantage de permettre à un plus grand nombre de processus de s exécuter dans le même laps de temps (throughput)

22 SUPINFO - Systèmes dexploitationPage 22Pierre Dimo Remplacement des pages En cas de sur-réservation, que se passe-t-il si pour une raison quelconque, un processus demande une page qui nest pas en mémoire ? –Soit il y a un cadre disponible et la page peut être chargée –Soit tous les cadres sont occupés, et il faut remplacer une page qui est allouée à un processus actif. –On peut remplacer sans sauvegarde une page qui na pas été modifiée, mais pour ce faire il faut disposer dune information indiquant létat de la page : bit de modification (dirty bit) –Lalgorithme de traitement des erreurs de page doit être adapté. Le remplacement des pages affranchit le programmeur de toute dépendance envers la configuration de la machine, en ce qui concerne lutilisation de la mémoire.

23 SUPINFO - Systèmes dexploitationPage 23Pierre Dimo Le remplacement des pages

24 SUPINFO - Systèmes dexploitationPage 24Pierre Dimo Le remplacement des pages : algorithme de base 1.Calculer la position de la page souhaitée sur disque 2.Trouver un cadre libre. 1.Si trouvé, on lutilise 2.Sinon, utiliser lalgorithme de remplacement pour choisir une victime : ce sera la page à remplacer. Si on dispose du bit détat de la page, on peut éviter deffectuer deux transferts de pages : un pour sauvegarder la victime et lautre pour charger lélue… 3.Chargement de la page demandée dans le cadre devenu libre et mise à jour des tables de pages et des autres tables. 4.Redémarrage du processus

25 SUPINFO - Systèmes dexploitationPage 25Pierre Dimo Le remplacement des pages : schéma

26 SUPINFO - Systèmes dexploitationPage 26Pierre Dimo Le remplacement des pages : évaluation des algorithmes On souhaite le minimum derreurs de pages Pour évaluer lalgorithme, on utilise une liste de nombres qui représentent des références à la mémoire et on calcule le nombre derreurs de pages produites par la liste On se servira toujours de la même liste : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5. Il semble logique quavec laugmentation du nombre de cadres on réduise le nombre derreurs de pages.

27 SUPINFO - Systèmes dexploitationPage 27Pierre Dimo Nombre derreurs de page par rapport au nombre de cadres

28 SUPINFO - Systèmes dexploitationPage 28Pierre Dimo Algorithme FIFO (premier entré, premier sorti) Liste des références : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 3 cadres 4 cadres Cet algorithme présente, dans certains cas, une anomalie : lanomalie de Belady 1/1 2/2 3/ /4 1/5 2/6 5/7 3/8 4/9 9 erreurs de page 1/1 2/2 3/ /7 1/8 2/9 4/11 5/12 10 erreurs de page ! 4/4 4 3/10 (On note par N/T le no. N de la page remplacée au moment T )

29 SUPINFO - Systèmes dexploitationPage 29Pierre Dimo /* * * * MemVirt_FIFO démontre l'algorithme FIFO de remplacement de pages * et met en évidence l'anomalie de Belady * Pierre Dimo * version 2005 * * */ public class MemVirt_FIFO { public static int N; public static int Cadres[]; public static int Liste[] = {1,2,3,4,1,2,5,1,2,3,4,5}; public static void main() { for (N=1 ; N < Liste.length ; N++) { Cadres = new int[N]; int i, j, k; int p=0; for (j=0 ; j < N ; j++) // initialisation Cadres[j]=-1; for (i=0 ; i < Liste.length ; i++) { for (j=0 ; j < N ; j++) // vérifier si déjà en mémoire if (Cadres[j]==Liste[i]) break; if (j==N) // pas en mémoire for (j=0 ; j < N ; j++) // vérifier si place if (Cadres[j] < 0) { Cadres[j] = Liste[i]; p++ ; break; } if (j == N) // pas de place, il faut libérer la page la plus ancienne { for (k=1 ; k < N ; k++) Cadres[k-1] = Cadres[k]; Cadres[N-1]=Liste[i]; p++ ; } System.out.println("Nombre de cadres = "+N+" Remplacements = "+p); } }}

30 SUPINFO - Systèmes dexploitationPage 30Pierre Dimo Algorithme optimal Remplacer la page qui sera la dernière sollicitée. –Exemple avec 4 cadres 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 –Comment déterminer quelle est la page qui sera la dernière sollicitée ? Ce nest pas possible… –On utilise cette approche pour comparer des algorithmes proposés. 1/5 2/6 3/3 4/11 6 erreurs de page 4/4 5/7

31 SUPINFO - Systèmes dexploitationPage 31Pierre Dimo Algorithme LRU (Least Recently Used = la page délaissée le plus longtemps) Série de référence : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 1/8 2/9 3/3 5/12 4/11 4/4 3/10 5/7 temps

32 SUPINFO - Systèmes dexploitationPage 32Pierre Dimo LRU (Suite) Implémentation avec compteur –Chaque entrée de la page possède un compteur dont le contenu est mis à jour avec lhorloge chaque fois que la page est référencée –Quand il y a demande de page, on examine les compteurs pour établir celle qui a été délaissée le plus longtemps Implémentation avec pile : la page référencée peut se trouver ou ne pas se trouver déjà dans la pile ; si elle ne se trouve pas il faut la chercher –On garde une pile des numéros de pages référencées sous la forme dune liste doublement liée Lorsque la page est référencée, on déplace son numéro au sommet de la pile : le sommet est la dernière page référencée, la base la plus délaissée Pour accélérer le processus, on utilise des listes liées ce qui permet de réduire lopération à la modification de 6 pointeurs de liaison –On na pas besoin de chercher la page à changer

33 SUPINFO - Systèmes dexploitationPage 33Pierre Dimo LRU – utilisation dune pile

34 SUPINFO - Systèmes dexploitationPage 34Pierre Dimo /* * MemVirt_LRU démontre l'algorithme LRU de remplacement de pages * Pierre Dimo * version 2005 * * */ public class MemVirt_LRU { public static int N; public static int Cadres[]; public static int Liste[] = {1,2,3,4,1,2,5,1,2,3,4,5}; public static void main() { for (N=1 ; N < Liste.length ; N++) { Cadres = new int[N]; int i, j, k; int p=0; for (j=0 ; j < N ; j++) // initialisation Cadres[j]=-1; for (i=0 ; i < Liste.length ; i++) { for (j=0 ; j < N ; j++) // vérifier si déjà en mémoire if (Cadres[j]==Liste[i]) { // si oui, on la met en position "récente" for (k=0 ; k==j-1 ; k++) Cadres[k+1]=Cadres[k]; Cadres[0]=Liste[i]; break; } if (j==N) // pas en mémoire for (j=0 ; j < N ; j++) // vérifier si place if (Cadres[j] < 0) { Cadres[j] = Liste[i]; p++ ; break; } if (j == N) { // pas de place, il faut libérer une page for (k=0 ; k < N-1 ; k++) Cadres[k+1] = Cadres[k]; Cadres[0]=Liste[i]; p++ ; } } System.out.println("Nombre de cadres = "+N+" Remplacements = "+p); }}}

35 SUPINFO - Systèmes dexploitationPage 35Pierre Dimo Algorithme à base de compteurs Un compteur/page pour le nombre de références Algorithme LFU (least frequently used = la moins utilisée) : on remplace la page avec le moins dutilisations –Problème : certains processus utilisent intensément une page au début et la délaissent ensuite. On utilise le vieillissement pour ajuster le compteur. Algorithme MFU (most frequently used) : part de lhypothèse que les pages peu utilisées ont été chargées récemment. Ces algorithmes donnent généralement des résultats qui séloignent de ce que produit lagorithme optimal.

36 SUPINFO - Systèmes dexploitationPage 36Pierre Dimo Allocation des cadres On peut établir quun processus, quel quil soit, doit disposer toujours dun nombre minimum de pages. Ceci peut être imposé par larchitecture de lordinateur : –Exemple: IBM 370 – 6 pages sont nécessaires pour exécuter linstruction SS MOVE : Linstruction a 6 octets, elle peut sétendre sur 2 pages. 2 pages sont nécessaires pour accéder au départ (from) 2 pages sont nécessaires pour accéder à la destination (to). Deux méthodes dallocation –Allocation fixe –Allocation prioritaire

37 SUPINFO - Systèmes dexploitationPage 37Pierre Dimo Allocation des cadres (suite) Allocation fixe –On partage le nombre de cadres de manière égale entre les processus (ex : 100 cadres et 5 processus, chaque processus recevra 20 pages). –Allocation proportionnelle : chaque processus reçoit un nombre de pages proportionnel à sa taille. Allocation prioritaire –On utilise une allocation proportionnelle basée sur les priorités des processus ou sur une combinaison de la priorité et de la taille

38 SUPINFO - Systèmes dexploitationPage 38Pierre Dimo Écroulement du système Si le processus ne dispose pas dassez de pages, cela conduit à de nombreuses erreurs de page : –Utilisation réduite de lUC. –Le SE en déduit quil doit augmenter le nombre de processus en mémoire…. Écroulement (Thrashing) un processus soccupe uniquement de sauvegarder et restaurer des pages

39 SUPINFO - Systèmes dexploitationPage 39Pierre Dimo Écroulement (Thrashing ) Pour éviter lécroulement on peut utiliser un algorithme de remplacement « local » : –Les processus fonctionnent par localité –Les localités « isole » les processus (la machine ne s écroule pas brutalement) mais ne résout pas entièrement le problème car si un processus sécroule il va accéder en permanence au mécanisme de demande de pages et donc va ralentir lensemble. Il faut fournir autant de pages que sont nécessaires –On utilise la notion de « localité » : cest lespace dadressage utilisé en priorité par un processus. –Les tests montrent que les processus se « déplacent » de « localité » en « localité »

40 SUPINFO - Systèmes dexploitationPage 40Pierre Dimo Le modèle de lespace de travail (working set) On définit une « fenêtre » de lespace de travail La fenêtre contient les Δ pages adressées dernièrement. Une page dont on ne se sert plus depuis Δ unités de temps est remplacée dans la fenêtre Exemple : – WS(t1)={1,2,5,6,7} WS(T1+16)={3,4} Le nombre de cadres nécessaires est la somme des nombres de pages de tous les WS actifs. Si le SE ne dispose pas dassez de pages pour les satisfaire tous, il va interrompre un processus et redistribuer les cadres quil utilisait.

41 SUPINFO - Systèmes dexploitationPage 41Pierre Dimo Exercices Soit un tableau à 2 dimensions A, dont le premier élément est stocké à ladresse 200 dun système paginé dont les pages ont la taille 200. Le processus qui trie ce tableau est stocké dans la page 0, entre les adresses 0 et 199. Faisons lhypothèse que le système possède 3 cadres : combien derreurs de pages seront provoquées par les boucles dinitialisation de ce tableau (comparer algorithmes FIFO et LRU) : Int A[ ][ ]; for (int j=1; j < 100; j++) for (int i=1; i < 100 ; i++) A[i][j] = 0; for (int i=1; i < 100; i++) for (int j=1; j < 100 ; j++) A[i][j] = 0;

42 SUPINFO - Systèmes dexploitationPage 42Pierre Dimo Mémoire virtuelle de Windows XP Pages à la demande + clustering (groupement, paquet, bouquet, ) –La page demandée est chargée avec plusieurs pages qui la suivent A la création dun processus on lui attribue un ensemble de travail (working set) minimum et un ensemble de travail maximum.(50, 345) Le gestionnaire de la mémoire virtuelle maintien une liste des cadres libres et un valeur indiquant le seuil de disponibilité des cadres libres.

43 SUPINFO - Systèmes dexploitationPage 43Pierre Dimo FIN chpt 9

44 SUPINFO - Systèmes dexploitationPage 44Pierre Dimo FORK() et VFORK() FORK() est un appel système qui génère un processus « enfant » à partir dun processus « parent ». Le processus enfant utilise le même espace dadressage que le processus parent, ce qui, en labsence de lutilisation dune mémoire virtuelle se traduit par la création dun processus « copie » du processus qui appelle fork(). Si on dispose dun système dadressage virtuel, le processus enfant peut partager dans un premier temps les pages du processus parent et on ne copie que les pages partagées modifiées par lenfant ou par le parent en cours dexécution. Le SE copie la page partagée modifiée dans lespace dadressage du processus qui la modifié et qui sera par la suite le seul à ladresser. Cette technique est appelée « copy on write » (copie si modifié). Les pages qui ne sont pas modifiables (ex : les pages qui contiennent le code) peuvent être partagées en permanence (Windows XP, Solaris, Linux). VFORK() est une variante de FORK(), qui crée un processus « enfant » et le lance immédiatement après la création après avoir stoppé le processus parent. Si VFORK() modifie des données dans lespace virtuel dadressage quil a hérité du parent, ce dernier trouvera son espace altéré lorsquil reprendra le contrôle. VFORK() est très efficace mais il faut lutiliser à bon escient… Retour…

45 SUPINFO - Systèmes dexploitationPage 45Pierre Dimo Fichiers en mémoire

46 SUPINFO - Systèmes dexploitationPage 46Pierre Dimo Fichiers en mémoire La mise à jour du fichier ne se fait pas après chaque modification –Périodiquement, quand le SE vérifie si des pages ont été modifiées –Lors de la fermeture du fichier par un des processus qui la ouvert. Dans certains SE on dispose dun appel système spécifique pour déclencher le « mapping » du fichier (Solaris : MMAP()) Lorsque le partage des fichiers « mappés » est autorisé, il faut gérer laccès en écriture ; on se sert des procédures de type « exclusion mutuelle » étudiées antérieurement. Voir un exemple en Java à la page suivante.

47 SUPINFO - Systèmes dexploitationPage 47Pierre Dimo import java.io.*; import java.nio.*; import java.nio.channels.*; public class MemoryMapReadOnly { // on prévoit un page de 4 KB public static final int PAGE_SIZE = 4096; public static void main(String[] args) throws java.io.IOException { if (args.length == 1) { RandomAccessFile inFile = null; try { inFile = new RandomAccessFile(args[0],"r"); } catch (FileNotFoundException fnfe) { System.err.println("Fichier " + args[0] + " inconnu !"); System.exit(0); } FileChannel in = inFile.getChannel(); MappedByteBuffer mappedBuffer = in.map(FileChannel.MapMode.READ_ONLY, 0, in.size()); System.out.println("La taille de l'image en mémoire est de " + in.size()+ " Kb"); long numPages = in.size() / (long)PAGE_SIZE; if (in.size() % PAGE_SIZE > 0) ++numPages; // on touche le premier octet de chaque page int position = 0; for (long i = 0; i < numPages; i++) { byte item = mappedBuffer.get(position); position += PAGE_SIZE; } System.out.println("Le système a mappé le fichier dans " + numPages + " pages de 4 Kb"); //System.out.println(in.size() % PAGE_SIZE); // déterminer si le chargement est terminé if (!mappedBuffer.isLoaded()) { // forcer le chargement mappedBuffer.load(); } in.close(); inFile.close(); }}} Retour…


Télécharger ppt "SUPINFO - Systèmes dexploitationPage 1Pierre Dimo - 2005 Chapitre 9 : Mémoire virtuelle Sujets abordés –Généralités –Chargement de page à la demande –Création."

Présentations similaires


Annonces Google