Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/02/2013, à 13:07

Bloupies

Pagination et Swapping

Bonjour .

En cours de systeme , nous avons fait la pagination et le swapping , mais j'ai beau essayé de regarder d autres explications sur le net , je n'arrive pas du tout à visualiser ce cours . Pages , mémoire virtuel , cadre , offset et tout ça ne veulent pas rentrer ..
Ceci sont des morceaux de cours que je ne saisis pas

La pagination

1)

Les problèmes posés
Problème : -Ou mettre le système ( permanent ) et les processus ( temporaires ) ?

Problèmes annexes :
-Comment assurer l’intimité du système et des processus ?
- Que faire lorsque la mémoire est pleine ? (ôter les processus inactifs ?)
Mise en œuvre : Pagination et espace d’adressage virtuel

2)

Pagination : Transformation d’une adresse virtuelle en adresse physique .
-On considère que la mémoire est constitué de pages de taille fixe , par exemple 4ko sur x86 .
-adresse=numéro de page + déplacement dans la page . La table de transformation ne porte ainsi que sur les numéros de page .
-remarque : la page est la partie virtuelle de la mémoire , le cadre la partie physique

Sur x86, 1 page = 4Ko (2^12, 12 bits). L'adressage est sur 32 bits, il reste 20 bits pour les n° de page : 2^20 possibilités.
Problème : comment organiser cette table ?
La table des pages fera la relation pages virtuelles/ adresses réelles. Données utilisables = 2^20 x 4 octets = 4 Mo par processus
Solution : on redécoupe la table en
répertoire + page + offset

on reste sur une adresse 32 bits, on à 1024 rép (2^10) de 1024 pages et 4096 offsets (2^12) (soit 4 Go pour un processus) ; chaque entrée du répertoire adresse 4 Mo.

3)

Remarques :
gestion supplémentaire pour le système : « traduction » des pages,
allocation intra-page, fragmentation
définition, pour chaque entrée d'une table des pages, de bits de protection (lecture, écriture, exécution). Exemple :
        ●  les pages du code ne sont accessibles qu'en exécution ;
        ●  les pages de données sont accessibles en lecture écriture. 
tous les processus qui exécutent le même programme partagent les mêmes cadres (pages différentes). Les processus ne peuvent partager de pointeurs (adresses virtuelles). 
les répertoires sont toujours conservés en mémoire. Les tables de page peuvent être évacuées : swapping et pagination

Swapping

1)

Utilisation de disques comme stockage de processus lents ou peu utilisés :
un processus entier : swapping ;
des pages inutilisées : pagination.
On garde le swapping pour les cas extrêmes : manque de mémoire et processus en attente longue.
La pagination est plus légère : elle transfère des pages de 4 ko.

2)

Lorsque la mémoire est saturée et qu'il se produit un défaut de page (page non disponible en mémoire), il faut alors :
1) choisir une page à évincer et la recopier en mémoire secondaire (si nécessaire) ;
2) charger à sa place la page manquante ;
3) mettre à jour les tables des pages

3)

Le choix de la page à évincer est fondamental pour l'efficacité du système.
Objectif du système : minimiser les défauts de pages.
Deux stratégies sont possibles :
évincer la page la plus ancienne en mémoire (FIFO)
évincer la page qui sera accédée le plus tard possible (OPT), nécessite une connaissance complète de ce qui va se passer.

4)

Solutions plus utilisées :
LRU : choisir la page dont le dernier accès est le plus ancien ;
LFU : idem que LRU mais utilise la fréquence d'accès.
Toutes ces stratégies nécessitent de maintenir une comptabilité des accès : extrêmement coûteux. On utilise donc des approximations.

Donc voilà . Comme je l'ai dis , j'ai beau comprendre qu'on peut faire croire qu'on peut utiliser plus de mémoire tout ça , mais comment cela fonctionne réellement , ça je n'y arrive pas . Les morceaux de cours que j'ai mis sont vraiment difficile pas facile à saisir/visualiser ..

Merci d'avance à ceux qui pourront m'aider ..

Hors ligne

#2 Le 11/02/2013, à 13:37

Hibou57

Re : Pagination et Swapping

Je ne suis pas sûr de mon coup, mais je tente, en essayant de deviner ce que tu ne comprends pas, et en l’expliquant autrement.

Le swap (mémoire virtuelle sur disque) et la pagination, sont à l’origine deux choses différentes. On peut avoir de la mémoire paginés sans avoir de mémoire virtuelle, et on peut avoir de la mémoire virtuelle, sans avoir de mémoire paginée.

Alors pourquoi donc parle‑t‑on souvent des deux ensemble ? Réponse : parce que la pagination rend la gestion de la mémoire virtuelle, plus pertinente. Mais la pagination à elle seule ne suffit pas, le processeur fourni d’autres formes de support encore à la gestion de la mémoire virtuelle, mais ce n’est pas le sujet ici.

Les deux éléments séparément…

La mémoire paginée, c’est une organisation de la mémoire dans laquelle on alloue la mémoire par grands bloques de taille fixe (typiquement 4096 octets sur les architectures IA32). Chaque bloque mémoire a ses attributs à lui (droit d’exécution, droit de lecture et écriture, et niveau de privilège).

La mémoire paginée s’accompagne souvent (mais pas toujours) d’un adressage virtuel. Cela signifie que un bloque mémoire peut être alloué à une certaine adresse physique dans la RAM, mais être alloué à une adresse logique différente pour le programme. Quand le programme accède à une adresse logique logique (qui est pour lui une adresse, tout‑court), l’adresse logique est convertie en adresse physique, à l’aide d’une table de conversion des adresses. Ici, on comprend que la pagination est un avantage, parce que si l’adresse logique de chaque octet, devait être transformée en adresse physique, on en sortirait plus, et la table de conversion serait plus grande que la mémoire utile. Pour y remédier, cette conversion s’applique à des bloques entiers. Plus précisément, c’est seulement l’adresse logique de la base du bloque qui est convertie, puis l’adresse de chaque octet est converti à l’aide d’un simple décalage (addition d’un offset).

Jusque là tu comprends ?

On voit jusqu’ici, que la pagination est surtout utile à l’adressage virtuelle, un adressage dans lequel l’adresse logique ne correspond pas nécessairement à l’adresse physique.

Avec cette organisation, on peut avoir des bloques physiques éparpillés un peu partout, mais qui forme pourtant un segment logique continu.

Certains de ces bloque, d’un même segment logique, peuvent se trouver en RAM, pendant que d’autres se trouvent en mémoire virtuelle sur le disque.

Et maintenant, on comprend pourquoi cette organisation de la mémoire, en bloques, est bien commode pour gérer la mémoire virtuelle. Si un bloque est souvent lu et écrit, on peut le garder en RAM, et si un autre bloque du même segment n’est presque jamais utilisé, on peut le garder dans la mémoire virtuelle, libérant ainsi la RAM pour d’autres bloques souvent lus et écrits. Sans les bloques, on serait obligé d’avoir les segments tout entier, soit dans la RAM, soit dans la mémoire virtuelle.

L’organisation en bloque permet également de continuer à allouer de la RAM, sous forme de long segments logiques continus même quand la RAM est fragmentée et qu’il n’existe plus de segment physique continu assez grands, … un problème généralement délicat avec les tas (heap).

Tu comprends mieux comme ça ?

Dernière modification par Hibou57 (Le 11/02/2013, à 13:49)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#3 Le 11/02/2013, à 17:58

Bloupies

Re : Pagination et Swapping

Bonsoir .
Merci de ton retour , mais malgré ça je n'arrive pas à comprendre les bouts de cours que j'ai ..

Hors ligne

#4 Le 11/02/2013, à 19:01

Hibou57

Re : Pagination et Swapping

Si tu veux, pose des questions courtes sur des points précis ou généraux.


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#5 Le 12/02/2013, à 07:49

Bloupies

Re : Pagination et Swapping

Bon , à force de lre et relire , ça commence à rentrer . J'aurai quelques questions


PS : Le gestionnaire de mémoire , c'est le noyeau ? MMU ,
1) La pagination permet de mettre dans un espace temporaire , le plus souvent au disque dur , les processus " pas vraiment utilisé " dans , donc , l'espace virtuelle dans des blocs ou pages de 4ko la plupart du temps , et pouvant être relié à des pages physiques graçe au MMU qui s'occupe de la conversion ( si l'adresse logique n'est pas relié , c a d n'a pas de page physique , on appelle ça un défaut de page) . Donc si l'adresse virtuel est converti en physique , elle prend a cet instant de la place en ram , sinon elle garde sa place dans le disque dur ?

2) Mais dans ce schéma , elles sont reliées à des pages physiques , qui contiennent quoi au juste ? ( je n'ai pas compris également le calcul )

664119Capturedcran20130212072800.png


3)Aussi , vu qu'on dit que la pagination est un avantage , je suppose que les pages peuvent être infini , et les  pages de la ram ne le sont pas ?

4) Et dans tout ça , à quoi sert le swap ? Que fait-il ?
---------------

http://www.hostingpics.net/viewer.php?i … 073719.png


4) Ici , qu'est ce que le répertoire , page ,offset ..

Dernière modification par Bloupies (Le 12/02/2013, à 08:11)

Hors ligne

#6 Le 12/02/2013, à 08:03

Hibou57

Re : Pagination et Swapping

Bloupies a écrit :

4) Et dans tout ça , à quoi sert le swap ? Que fait-il ?

C’est là où sont reléguées temporairement, les zones de la mémoire qui sont les moins souvent accédées, pour laisser dans la RAM les zones de mémoire les plus souvent accédées. C’est que la RAM est plus rapide que le disque dur, et de beaucoup‑beaucoup, alors il est préférable d’y laisser ce à quoi on accède le plus souvent, et donc de reléguer le reste sur le disque dur, s’il y a pas assez de place dans la RAM.

Bloupies a écrit :

http://www.hostingpics.net/viewer.php?i … 073719.png


4) Ici , qu'est ce que le répertoire , page ,offset ..

Oops, je n’avais pas osé aborder cette question, et pour rester simple, je décrivais le système comme s’il n’y avait qu’un seul niveau d’indirection.

Répertoire/Page, c’est parce qu’il y a deux niveaux d’indirection pour convertir les adresse logiques en adresses physiques.

Explication : si la taille de la mémoire logique est grande, comme elle est divisée en page de 4096 octets, ça peut faire beaucoup de pages de 4096 octets. Et comme l’entrée pour la description de chacune des pages, nécessite déjà plusieurs octets, si tous les descripteurs de page devaient rester en mémoire en permanence, ça occuperait beaucoup de place dans la RAM.

Par soucis d’économie, il y a deux niveau d’indirection, et seul le premier niveau d’indirection est toujours en RAM. Le second niveau d’indirection, peut être en RAM ou en mémoire virtuelle. Le processeur accède toujours au premier niveau d’indirection, sans faute de page. Mais au moment d’accéder au second niveau, il peut se produire une faute de page, et le second niveau d’indirection, est alors rapatrié en mémoire.

Ici, une image plus claire que celle que tu as vu : Caractéristiques de l'architecture Intel (irisa.fr). C’est vers le milieux de la page (page web, cette fois, lol).

Je repasserai plus tard pour les autres questions.

Dernière modification par Hibou57 (Le 12/02/2013, à 08:08)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#7 Le 12/02/2013, à 12:24

Bloupies

Re : Pagination et Swapping

D'accord , ne m'oublis pas smile

Donc le swap contient les process non utilisés ? Tout comme l'espace virtuelle ou il y a les pages ?

Edit : J'ai trouvé l'explication ici : [Extension de la mémoire ] En utilisant un mécanisme de mémoire virtuelle, consistant à utiliser le disque dur comme mémoire principale et à stocker uniquement dans la RAM les instructions et les données utilisées par le processeur. Le système d'exploitation réalise cette opération en créant un fichier temporaire (appelé fichier SWAP, traduit "fichier d'échange") dans lequel sont stockées les informations lorsque la quantité de mémoire vive n'est plus suffisante .

Du coup le swap c est un fichier dans l'espace virtuelle  ?

Edit 2 : Utilisation de disques comme stockage de processus lents ou peu utilisés :
un processus entier : swapping ;
des pages inutilisées : pagination.
Donc c'est indépendant , pagination ou swapping selon les processus inutilisées pour la pagination ou un swap pour les processus entiers par exemple dans le cas d'un soucis de mémoire .

Est-ce bien cela ? Ou est donc situé le swap ?

Je ne comprends pas aussi : La table des pages , c'est le MMU ?

Dernière modification par Bloupies (Le 12/02/2013, à 13:17)

Hors ligne

#8 Le 12/02/2013, à 19:21

Bloupies

Re : Pagination et Swapping

Bon finalement c'est plus clair , merci .

A lock smile

Hors ligne

#9 Le 12/02/2013, à 21:17

Hibou57

Re : Pagination et Swapping

Bloupies a écrit :

Le système d'exploitation réalise cette opération en créant un fichier temporaire (appelé fichier SWAP, traduit "fichier d'échange")

Pour généraliser, c’est un espace disque. Windows utilise un fichier, mais les UNIX (BSD, Linux, …) utilisent une partition dédiée. La différence entre les deux, c’est que avec un fichier, comme sous Windows, la taille peut varier, en faisant varier la taille du fichier; tandis qu’avec les UNIX, l’espace réservé sur le disque, est de taille fixe, car on ne peut pas changer la taille d’une partition montée.

Bloupies a écrit :

Du coup le swap c est un fichier dans l'espace virtuelle  ?

Non, le swap n’est pas un fichier dans la mémoire virtuelle, il est la mémoire virtuelle wink

Bloupies a écrit :

Utilisation de disques comme stockage de processus lents ou peu utilisés :
un processus entier : swapping ;
des pages inutilisées : pagination.
Donc c'est indépendant , pagination ou swapping selon les processus inutilisées pour la pagination ou un swap pour les processus entiers par exemple dans le cas d'un soucis de mémoire .

Est-ce bien cela ? Ou est donc situé le swap ?

Les pages de la mémoire paginée, peuvent être swappées, tout comme les segments. Le swap s’applique au deux. C’est indépendant dans le sens où on peut swapper des segments ou des pages, mais c’est lié dans le sens où les deux sont sujets au swapping. Il faut que je vérifie, mais je crois que en pratique, sur les architectures Intel, on ne peut de toutes‑manières swapper que des pages, et que si on veut swapper un segment, alors on doit le faire en swappant toutes les pages constituant le segment.



Sous réserve que j’ai bien compris tes questions.

Dernière modification par Hibou57 (Le 12/02/2013, à 21:20)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne