Diapostives de la deuxième partie
Transcription
Diapostives de la deuxième partie
II Allocation de la mémoire centrale JJ II Mémoire centrale (RAM) JJ • Mémoire centrale (RAM) La mémoire centrale (RAM pour Random Access Memory) est une zone de stockage composée d’octets (8 bits). • Organisation logique / physique • Organisation en partitions Chaque octet est repéré par un adresse physique (sur 32 ou 64 bits). • Pagination et segmentation 0x00000000 ... 0xFFFFFFFF +---+ | | +---+ | | | . | | . | | . | | | +---+ | | +---+ 2^32 2^32 2^22 2^12 2^2 adresses soit octets soit kilo-octets soit méga-octets giga-octets La mémoire physique est contigüe (les adresses varient de N à M ). Uniformité : tous les processeurs ont accès à tous les octets. 2 1 Les mots doivent être alignés sur une adresse physique multiple de leur taille : Il est préférable d’écrire : struct S1 { char c1; char c2; int v1; }; struct S1 { char c1; int v1; char c2; }; void main(void) { printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(int) = %d\n", sizeof(int)); printf("sizeof(S1) = %d\n", sizeof(struct S1)); } Exécution : sizeof(char) = 1 sizeof(int) = 4 sizeof(S1) = 8 Exécution : Placement des données en mémoire : sizeof(char) = 1 sizeof(int) = 4 sizeof(S1) = 12 +--+--+--+--+--+--+--+--+ |c1|c2|--|--| v1 | +--+--+--+--+--+--+--+--+ Placement des données en mémoire : +--+--+--+--+--+--+--+--+--+--+--+--+ |c1|--|--|--| v1 |c2|--|--|--| +--+--+--+--+--+--+--+--+--+--+--+--+ 3 4 II Utilisation de la mémoire JJ Avec la RAM il existe trois opérations : Un exemple : • lecture d’un octet ou d’un mot • écriture d’un octet ou d’un mot int x; • lecture pour exécution d’un mot void main(void) { sleep(1); printf("%x ", &x); sleep(1); } Exécution : 6008e8 6008e8 6008e8 6008e8 6008e8 6008e8 6008e8 6008e8 6008e8 Chaque processus travail dans une mémoire logique qui est une partie de la mémoire centrale. Les octets de la mémoire logique sont repérés par des adresses logiques. 5 Lors de l’exécution, les processus génèrent des adresses logiques qui varient de 0 à N − 1 (N étant la taille de la mémoire logique du processus). 6 II Allocation de mémoire JJ II Mémoire logique contiguë JJ • Correspondance entre adresses logiques et adresses physiques, La mémoire logique des processus est constitué d’un seul morceau (une partition) : . fixe : établie à la compilation Niv. Logique contigu . statique : établie au chargement P1 P2 P3 . dynamique : variable dans le temps • Gestion de la mémoire physique. • Partage de données entre processus. • Protection de chaque processus. 7 Niv. physique contigu (partitions) RAM Niv. physique non-contigu (pagination) RAM P2 P2 P3 P1 P2 P1 P2 P3 P3 P2 8 II Mémoire logique non contiguë JJ II Système à partition unique JJ La mémoire logique des processus est constitué de plusieurs morceaux (segments) : RL S.E. Niv. Logique Non-contigu (segmentation) P1 P2a P2b P3a partition unique mémoire P3b RB Le va-et-vient simple ou swapping. Caractéristiques : Niv. physique contigu (segmentation) Niv. physique non-contigu (seg-pagination) RAM P2a P3a P1 P3b P2b • les processus sont tous et toujours à la même adresse physique (correspondance à la compilation ou au chargement) • la réquisition de la CPU entraı̂ne la sauvegarde de la partition et le chargement d’un nouveau processus (monoprogrammation) RAM P2a P3a P2b P1 P2b P3b P2a • la CPU est inutilisée durant les sauvegardes/récupérations • La protection est assurée par le jeu des deux registres spécialisées RB (registre de base) et RL (registre limite). 9 10 II Les recouvrements JJ II Système à partitions fixes JJ Objectif : Limiter la taille de la mémoire occupée par le code du programme. • Les programmes indépendantes. importants sont découpés en plusieurs S.E. zone 1 mémoire zone 2 A C programmes B parties Allocation de la mémoire • Une partie reste systématiquement en mémoire, c’est la racine du recouvrement. A(1) C(2) B(1) U.C. • Les autres parties sont chargées en mémoire à la demande. Canal. chargement C(2) A(1) B(1) C(2) mémoire physique A A A B C B sauvegarde Chronogramme d'activité programme (3 parties) configuration 1 C programme(zone) configuration 2 11 • • • • La mémoire est divisée en zones de taille fixe (spécialisation) Les processus s’exécutent toujours dans la même zone Pendant les échanges sur Z1, un autre processus s’exécute en Z2 Protection possible par les registres RB et RL 12 II Système à partitions variables JJ II Allocation par chaı̂nage des zones libres JJ Les partitions sont allouées et libérées à la demande (création ou fin d’un processus). Les zones libres sont placées dans une liste chainée. Il existe plusieurs stratégies de recherche : Le registre de base pointe sur la partition et le registre limite en indique la taille. 0 RL RB 6 150 A 150 1 B 151 B 2 C 152 C 3 D 153 D 4 E 154 E 5 F 155 F 3 oui 3 < RL + non • Première zone libre (first-fit). • Meilleur ajustement (best-fit) pour utiliser au mieux les zones libres. Mais, . il faut parcourir toutes les zones, . il reste des petits résidus inutilisables. A • Plus grand résidu (worst-fit) pour combattre l’émiettement. • Algorithmes spécialisés. déroutement sur erreur d'adressage RB et RL sont utilisés par la CPU pour traduire à chaque accès mémoire les adresses logiques en adresses physiques. 13 II Allocation par subdivision (buddy system) JJ 14 Un exemple d’allocations/libérations : La taille des zones suit une règle définie par une relation de récurrence : 8 A • binaire : (1, 2, 4, 8, . . .) Si+1 = 2 × Si • fibonacci : (1, 2, 3, 5, 8, . . .) Si+1 = Si + Si−1 Il existe une liste des zones libres pour chaque taille. hallouer un bloc de taille T i Soit Si la plus petite taille telle que Si ≥ T si hil existe un bloc de taille Sii alors hrenvoyer ce bloci sinon hallouer un bloc de taille Si+1i hlibérer la deuxième partie de ce bloci hrenvoyer la première partiei fin si 2 4 Alloc. de A, longueur = 2 4 Alloc. de B, longueur = 1 A B 1 A B 1 C 2 Alloc. de C, longueur = 2 2 B 1 C 2 Libération de A 2 B 1 4 8 Libération de C Libération de B La recherche d’une zone libre est rapide et il est facile de reconstruire des zones à la libération. 15 16 II Fragmentation externe/interne JJ II Compactage de la mémoire JJ La fragmentation externe est due à l’émiettement de la mémoire lors des allocations/libérations. Le compactage de la mémoire procède par recopie des partitions pour faire apparaı̂tre une zone libre de taille suffisante. La fragmentation interne c’est l’unité de mémoire minimum que le S.E. est capable de gérer (généralement plusieurs Kilo-octets). Exemple : 100 100 100 100 100 100 50 100 100 100 50 100 50 50 200 50 150 100 50 17 18 II Mémoire paginée JJ II Mémoire paginée : principe JJ La mémoire est divisée en page de taille fixe (quelques Kilo-octets). Cette taille est toujours une puissance de deux (2m). • Principe • Correspondance des adresses Une adresse logique paginée sur n bits (avec n > m) est un couple • Mémoires associatives ◦ h n | de page {z logique} , déplacement | {zdans la page} i sur n − m bits sur m bits • Partage de pages Une adresse physique paginée sur p bits (avec p > m) est un couple ◦ h n | de page {z physique} , déplacement | {zdans la page} i sur p − m bits sur m bits Exemple : avec une page de 4 ko (212 octets) : 123.456.789 19 = = |00000111010110111100|110100010101| |<------- 20 ------->|<--- 12 --->| 30140 3349 (30149 * 4096) + 3349 20 La fonction de pagination assure la correspondance entre numéro de page logique et numéro de page physique. Mémoire logique II Pages logiques versus pages physiques JJ Pour chaque processus, le système prépare une table de pages logiques (notée desc ci-dessous). Mémoire physique 0 0 1 1 adr. logique npl dep Fonction de pagination 2 n -1 vérifier que npl < RL npp + n prot 2 -1 npp RL npp dep adr. physique R. de base Table des pages (desc) 21 22 II Exemple et discussion JJ Version algorithmique de la correspondance : Un exemple avec deux processus : logique vers physique( adresse logique ) hnpl, dépli := adresse logique si (npl < RL) alors -- lecture de la table des pages hnpp, proti := mem[ npl + RB ] si hles protections prot sont respectéesi alors adresse physique := hnpp, dépli renvoyer (adresse physique) sinon hinterruption sur violation de protectioni fin si sinon hinterruption sur erreur d’adressagei fin si Mémoire logique du processus 1 Table des pages du processus 1 pages physiques A B C A D F C B Table des pages du processus 2 Mémoire logique du processus 2 D E F G E G Avantages : • Gestion mémoire plus simple (liste des pages libres) • Compactage inutile • Protections différentes pour chaque page 23 Inconvénients : • temps d’accès doublé • nécessite une PMMU (Page Memory Management Unit) 24 II Comportement des processus JJ II Mémoires associatives JJ Comportement « en moyenne » des processus : Principe des mémoires associatives : • Non uniformité : 20% des pages regroupent 90% des accès entre 16 et 512 • Principe de localité : . stabilité des accès sur une courte période 100 . l’activité actuelle est une bonne estimation de l’activité future 100 500 500 échec • Rapidité : les tests sont faits en parallèle (quelques nanosecondes) • Ces circuits sont très couteux 26 25 II Mémoires associatives et pagination JJ Conséquences : Principe : retenir les derniers couples (page logique, page physique), pour éviter l’accès mémoire à la table des pages. mémoire associative • Il faut mettre à jour la mémoire associative après les échecs adr. logique • Il faut vider la mémoire associative lors des changement de processus npl • Le taux de réussite est lié à la taille de la M.A. (entre 80% et 95%). dep . 0, 80 × (100 + 20) + 0, 20 × (100 + 100 + 20) = 140 ns succès . 0, 95 × (100 + 20) + 0, 05 × (100 + 100 + 20) = 125 ns échec vérifier que npl < RL + npp prot npp RL npp dep adr. physique RB Table des pages (desc) 27 28 II Partage de pages entre processus JJ Mémoire logique du processus 1 Table des pages du processus 1 pages physiques Table des pages du processus 2 Pb • Partage de segments, Pb D1 D4 D2 D2 • Correspondance des adresses, Pa Pb D1 • Notion de segments, Mémoire logique du processus 2 Pa Pa II Mémoire segmentée JJ • Pagination d’une mémoire segmentée, D5 D4 D6 D5 D7 D6 D7 Les pages contenant le programme (Pa et Pb) sont partagées, mais les pages de données (D1, …, D7) ne le sont pas. Les pages contenant le programme Pa et Pb sont partagées, tandis que les pages Dx ne le sont pas. Pour une même page physique, il est possible d’avoir des protections différentes suivant le processus qui l’utilise. 29 II Notion de segments JJ 30 II Transformation des adresses segmentées JJ Un segment est un bloc de donnée de taille variable. Le S.E. détient une table des segments pour chaque processus. mémoire physique 2 code 2 L2 3 RB data 2 L3 1 data 1 L1 0 L0 1 L1 2 L2 3 L3 origine L0 prot code 1 taille 0 code 2 RL code 1 table des segments (desc) Une adresse logique segmentée est un couple h numéro de segment, déplacement i Cette organisation logique de la mémoire corresponds à l’organisation logique à l’intérieur d’un programme. 31 32 Version algorithmique : adr. logique (32 bits) accès (2) 164040 10 seg (17) dep (15) hseg, depli := adresse logique si (seg < RL) alors -- lecture de la table des segments htaille, prot, originei := mem[ RB + seg ] si (depl < taille) alors si hles protections prot sont respectéesi alors adresse physique := origine + depl sinon hinterruption sur violation de protectioni fin si sinon hinterruption sur erreur d’adressagei fin si sinon hinterruption sur erreur d’adressagei fin si 5 accès (2) 200 10 5 < RL non + RB 32 bits orig. (15) prot (2) taille (15) 500 125 200 < 500 10 non 10 ? 10 non 200 + (1024 * 125) CPU Mémoire adr. physique (32 bits) déroutement 128200 33 34 II Mémoire segmentée : discussion et partage JJ P2 P1 Inconvénients : l’allocation de segments implique 1 data 1 0 code 1 data 2 0 • un problème de fragmentation externe • une obligation du tassage de la mémoire Avantages : taille • les protections concernent les segments prot origine 0 data 1 1 • on peut utiliser les mémoires associatives table des segments de P1 code • le partage de segment est simple taille prot origine 0 1 data 2 table des segments de P2 35 36 adr. segmentée et paginée II Pagination d’une mémoire segmentée JJ seg npl dep Une adresse segmentée et paginée est un triplet adr. physique npp + h numéro de segment, numéro de page, déplacement i vérifier que (npl < L) dep + La taille des segments s’exprime maintenant en nombre de pages. R. de base npp L L Table des segments Table des pages du segment seg Avantages : plus de problème de fragmentation interne puisque les segments ne sont plus contigus en mémoire physique. 37 38 II Mémoire virtuelle paginée : principe JJ Fonction de pagination virtuelle : Principe : les programmes utilisent 20% de leur page, donc il est inutile de toutes les conserver en mémoire. zone de pagination en mémoire secondaire Mémoire virtuelle Mémoire physique Exemple : 1000 pp = 10 processus de 100 pages logiques ou 50 processus de (100 x 0,2) pages utiles. Fonction de pagination Le système doit détecter (avec l’aide du matériel) : • les pages inutilisées (réquisition) Défaut de page • les pages utiles et présentes en mémoire physique • les pages utiles et absentes de la mémoire physique (défaut de page) 1 II Hiérarchie de mémoire JJ 2 II Adresses virtuelles versus adresses physiques JJ Pour chaque processus, le système prépare une table des pages virtuelles (pointée par le registre de base) : La mémoire virtuelle implante la gestion d’un cache : adr. virtuelle Registres de la CPU npv Compilation dep Mémoire cache (de la CPU) mémoire associative Mémoire secondaire rapide Swapping in / out 1 0 npp échec prot Mémoire centrale succès modif + Mémoire secondaire standard npp npp RL Gestion de la mémoire virtuelle Gestion de la mémoire cache présent Mémoire cache (lente) Mémoire secondaire lente (bandes, ...) dep adr. physique RB défaut de page si présent = 0 3 Table des pages virtuelles (desc) 4 II Un exemple sur deux processus JJ Correspondance des adresses (c’est la partie matérielle de la pagination) : -- lecture de la table des pages virtuelles hprésent, prot, nppi := mem[ RB + npv ] Processus 1 -- vérification des protections si hprot non respectéesi interruption violation de protec. -- vérification de la présence si (présent = 0) interruption défaut de page Processus 2 -- construction de l’adresse physique adresse physique := hnpp, depli renvoyer adresse physique présent modif npp fonction transformation( adr : adresse virtuelle ) hnpv, depli := adr si (npv >= RL) interruption erreur d’adressage A 0 - - B 1 0 C 1 1 D 1 1 E 0 - F 1 0 G 0 - H 1 1 A B H - D C F ? E F ? Mémoire physique 5 II Le traitement du défaut de page JJ ? G - Mémoires Tables des virtuelles pages virtuelles B Zone de pagination 6 Algorithme de libération d’une page : Algorithme du défaut de page : procédure defaut de page( v : numéro de page virtuelle ) hsuspendre le processus qui a provoqué le défauti p := liberer une page physique() hcharger la page virtuelle v dans la page physique pi E/S desc[v].présent := 1 desc[v].modif := 0 desc[v].npp := p hreprendre le processus qui a provoqué le défauti 7 fonction liberer une page physique( ) si hil existe une page physique p librei alors finir et renvoyer p fin si v := hchoisir un page virtuelle victimei p := desc[v].npp si (desc[v].modif = 1) alors hsauver la page physique pi fin si desc[v].présent = 0 renvoyer p E/S 8 II Pagination a plusieurs niveaux JJ Organisation : adr. virtuelle Exemple : Une mémoire de 256 Mo (soit 228 octets) est divisée en 228/210 = 218 pages. La table des pages a donc 218 entrées soit 1 Mo. mémoire associative nhyp npv succès dep adr. physique vérifier que npv < L présent Conséquence : malgré la pagination, nous devons allouer des ensembles de pages contigus pour les tables de pages. + modif + présent Principe : Si la mémoire est importante le nombre de pages augmente et la table des pages devient imposante. 1 0 npp dep npp L R. de base Solution : paginer la table des pages ce qui revient à faire une pagination à deux niveaux. L 1 Table des pages de l'hyperpage nhyp Table des hyperpages défaut de page si présent = 0 Il peut y avoir jusqu’à 5 niveaux de pagination. Dans ce cas temps d’accès = (0, 98 × 120) + (0, 02 × 520) = 128 10 9 II Mémoire virtuelle segmentée et paginée JJ II Discussion sur la taille des pages JJ Transformation des adresses : adr. virtuelle paginée segmentée La taille des pages doit être grande pour mémoire associative seg page succès • diminuer le nombre de pages, donc le nombre de défauts de page et la taille de la table des pages dep adr. physique + modif origine prot vérifier que page < L présent + 1 0 npp dep • optimiser le temps de transfert vers ou depuis la zone de pagination • utiliser des mémoires centrales de plus en plus grandes La taille des pages doit être petite pour L RB • limiter la fragmentation interne L • définir avec plus de précision les pages utiles Table des pages du segment seg Table des segments défaut de page si présent = 0 Actuellement la taille des pages varie entre 1 ko et 32 ko. Avantage : le processus est capable d’informer le système d’un changement dans le mode d’utilisation d’un segment. 11 Certains systèmes autorisent plusieurs tailles différentes. 12 II Algorithmes de remplacement JJ II Algorithmes de remplacement (suite) JJ Principe : On choisit en priorité les pages virtuelles propres (qui n’ont pas été modifiées). Algorithme FINUFO (First In Not Used First Out) ou algorithme de la deuxième chance. On dispose • d’un pointeur global de page physique P Algorithmes : • Algorithme optimale (base de référence) : choisir la page virtuelle qui est utilisée le plus tard possible ou qui n’est plus utilisée. • d’un bit d’utilisation par page physique noté U[k] • U[k] est forcé à 1 après chaque accès à la page physique k Algorithme du choix de la victime FINUFO : • Algorithme aléatoire (le moins bon). • Algorithme FIFO (il ne tient pas compte de l’utilisation des pages). • Algorithme LRU (Least Recently Used) est basé sur le principe de localité : choisir la page dont la date du dernier accès est la plus ancienne. choisir victime FINUFO () tant que (U[P ] = 1) faire U[P ] := 0 P := (P + 1) mod NB PAGES PHYSIQUES fin faire U[P ] = 1 victime := P P := (P + 1) mod NB PAGES PHYSIQUES renvoyer victime 14 13 II Comportement en mémoire virtuelle paginée JJ Un exemple pour une mémoire physique à deux pages : 5 0 1 5 2 1 3 2 4 5 1 3 1 3 1 3 0 2 1 2 0 2 1 4 1 Nombre de défauts de page pointeur FINUFO bit FINUFO N° de page virtuelle Performances : OPT > LRU > LFU > FINUFO > FIFO > ALEA Taille de la mémoire 15 16 II Allocation des pages physiques JJ II Écroulement d’un système paginé JJ Allocation équitable : On donne à chaque processus un part égale de la mémoire physique. Définition : Augmentation considérable du nombre de défaut de page provoquant un chute du taux d’utilisation de la CPU. Allocation proportionnelle : on donne à chaque processus un part proportionnelle à la taille de sa mémoire virtuelle. Processus 1 Processus 2 Processus 3 Mémoires Virtuelles 25 70 35 130 Taux d'utilisation de la CPU Physiques 20 53 27 100 Politique de choix de la victime : • choix local : on choisit parmis les pages du processus demandeur. • choix global : on choisit parmis tous les processus → équilibrage des taux de défauts de page 17 II La méthode de l’ensemble de travail JJ dégré de multiprogrammation Faible taux de CPU → plus de processus → moins de mémoire → plus de défauts → baisse du Tx de CPU 18 II Approximation de l’ensemble de travail JJ On utilise une approximation en associant n bits b1, . . . , bn à chaque page physique. L’ensemble de travail d’un processus au temps t noté W (t, T ) = ensemble des pages ayant été référencées entre t et (t − T ) T est appelé la fenêtre d’observation. Propriété : la probabilité que l’une des pages de W(t, T ) soit référencée au temps (t + 1) est forte. Conséquence : si les pages physiques allouées à un processus ne peuvent contenir l’ensemble de travail, le nombre de défauts de page sera important. Problème : il est très coûteux de maintenir un ensemble de travail pour chaque processus. • chaque accès à une page provoque la mise à 1 du bit b1 associé • régulièrement (sur interruption d’horloge), le système décale les bits b1, . . . , bn−1 vers la droite et le bit b1 est forcé à zéro donc, les bits b1, . . . , bn donnent un historique d’utilisation de la page physique. P0 | 0 1 0 1 0 P1 | 1 0 0 0 0 P2 | 1 1 0 1 0 . | . . . | . . Pn | 1 1 1 1 1 ---+------------------------| t t+1 t+2 t+3 t+4 Une page physique appartient à W(t, T ) ssi il existe j < T tel que bj = 1. 19 20 II La méthode du taux de défaut de page JJ Le taux de défaut de page pour chaque processus doit être compris entre deux bornes. Si le taux est trop bas, alors le nombre de pages physiques allouées à ce processus est trop important. Si le taux est trop haut, alors le nombre de pages physiques allouées à ce processus n’est pas suffisant pour contenir son ensemble de travail. Deux actions sont possibles : • enlever des pages physiques au processus dont le taux est trop bas afin de les redistribuer au processus qui manque de pages physiques ; • appliquer le swapping out de processus pour diminuer le degré de multiprogrammation, et libérer des pages. Tentative d’égaliser les taux de défaut de page pour tous les processus. 21