« Programmation C/Gestion de la mémoire » : différence entre les versions

Contenu supprimé Contenu ajouté
m Révocation des modifications de 196.1.94.74 (discussion) vers la dernière version de Tados
DCimarosa (discussion | contributions)
Ligne 17 :
 
La manière dont la mémoire physique d'un ordinateur est conçue, ainsi que la façon dont le système d'exploitation la manipule, sont très variables. Cependant, un modèle assez classique consiste à découper la mémoire en segments, segments dont on garde les références dans des tables de pages : c'est le modèle de segmentation / pagination. Ce modèle offre beaucoup d'avantages par rapport à un accès purement linéaire. Décrire son fonctionnement en détail est hors de la porté de cet ouvrage, mais on pourra noter tout de même :
* Indépendance totale de l'espace d'adressage entre les processus : un processus ne peut pas accèderaccéder à la mémoire d'un autre processus. C'est pourquoi transmettre la valeur d'un pointeur à un autre processus ne servira en général à rien, car le second processus ne pourra jamais accéder à l'emplacement pointé.
* Gestion fine de la mémoire : les segments sont accèdésaccédés via plusieurs niveaux d'indirection dans les tables de pages. Cela permet de mettre virtuellement les segments n'importe où dans la mémoire ou même sur un système de fichier. Dans la pratique, éparpiller trop les segments (fragmenter) réduit significativement les performances.
 
Au niveau des inconvénients, on citera essentiellement un problème de performances. Plusieurs niveaux d'indirection impliquent de multiple lectures en mémoire, extrêmement pénalisant en terme de temps d'exécution, au point où des caches sont nécessaires pour garantir des vitesses acceptables. Même si RAM veut dire mémoire à accès aléatoire, il faut bien garder à l'esprit qu'un accès purement séquentiel (adresse mémoire croissante) peut être jusqu'à cent fois plus rapide qu'une méthode d'accès qui met sans cesse à défaut ce système de cache.
 
Un processus peut donc demander au sytèmesystème de réserver pour son usage exclusif un secteur mémoire de taille déterminée. Il peut également demander au sytèmesystème de modifier la taille d'une zone précédemment réservée ou de la libérer s'il n'en a plus l'utilité.
 
== Fonctions fournies par <stdlib.h> ==