60 votes

Quelle est la différence entre une mémoire réservée et une mémoire dédiée?

Je comprends que la mémoire doit être réservée avant d’être validée. Et lorsqu'il est réservé, aucun autre processus ne peut l'utiliser. Cependant, la mémoire réservée ne compte pas dans la RAM disponible. Mais ne devrait-il pas? Parce que si personne d'autre ne peut l'utiliser, alors à quoi sert-il "disponible"?

Ou y a-t-il une plus grande différence?

55voto

Greg Hewgill Points 356191

Dans le contexte de Win32, "réservé" signifie que l'adresse de l'espace est alloué dans le cadre du processus qui l'a demandé. Cela peut être utilisé, par exemple, de réserver de l'espace pour une grande mémoire tampon c'est pas tous besoin tout de suite, mais quand il est nécessaire qu'il y aurait besoin d'être contiguës.

Réserver la mémoire n'a pas d'interaction avec d'autres processus, puisque chaque processus a son propre espace d'adressage privé. Si la déclaration que "lorsqu'il est réservé, aucun autre processus ne peut l'utiliser" est dénuée de sens, puisque les processus ne peuvent en général pas allouer de la mémoire dans l'espace d'adressage d'un autre processus, de toute façon.

Lorsque les pages réservées sont priés d'être commis (mémoire de sauvegarde alloué pour eux), cette opération peut éventuellement échouer en raison d'un manque de mémoire physique (ou fichier d'échange).

16voto

kaosad Points 83

Je tiens à vue Reserved comme la réservation de l' adresse de l'espace, de sorte que personne d'autre ne peut l'affecter, (mais je ne peux pas utiliser la mémoire à cette adresse, car il n'est pas encore disponible). Et Committed comme la cartographie de cet espace d'adressage de la mémoire physique de sorte qu'il peut être utilisé.

Pourquoi voudrais-je réserver? Pourquoi ne pas simplement obtenir commis de mémoire? Il ya plusieurs raisons que j'ai à l'esprit:

  1. Une application a besoin d'une plage d'adresses spécifique, dire à partir de 0x400000 à 0x600000, mais n'a pas besoin de la mémoire pour stocker quoi que ce soit. Il est utilisé pour intercepter l'accès de la mémoire. E. g., si certains code accède à cette zone, il sera pris. (Utile pour certaines raisons.)

  2. Certains thread a besoin de stocker étendant progressivement de données. Et les données ont besoin d'être dans un espace contigu de mémoire. Il est préférable de ne pas commettre de grandes la mémoire physique d'un seul coup, car il n'est pas nécessaire et serait un tel gâchis. La mémoire peut être utilisé par d'autres threads en premier. La mémoire physique est engagé uniquement sur demande.

11voto

user1982084 Points 1

Processus de la Mémoire Virtuelle (Espace d'adressage ) et Réelle de la RAM sont à la fois différents. vous pouvez avoir 512 mo de RAM physique, mais encore votre processus d'adresse de 4 go d'espace d'adressage virtuel de 2 go(espace Utilisateur) Toutes les adresses dans un processus peut être considéré comme libre, réservé, ou commis à un moment donné.

Un processus qui commence avec toutes les adresses gratuit, ce qui signifie qu'ils sont libres d'être commis à la mémoire ou au réservé pour une utilisation future.Avant tout libre à l'adresse peut être utilisé, il doit d'abord être attribuée à titre réservé OU commis. Mais il n'a pas besoin d'être réservés à l'ordre pour qu'il soit commis.

réserver la mémoire de réserver virtaul espace d'adressage pour l'avenir. il n'est pas associé avec de la RAM Physique (mappé à la RAM d'Adresses).où en tant que commis de mémoire signifie qu'il sera associé avec un effectif de RAM, de sorte que vous pouvez stocker des données.

http://msdn.microsoft.com/en-us/library/ms810627.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X