0

On m'a récemment demandé si, dans un système informatique, si la mémoire primaire (RAM) est comparable à la mémoire secondaire (HDD), alors la mémoire virtuelle doit-elle être implémentée dans un tel système informatique? Étant donné que la pagination et la segmentation nécessitent un changement de contexte, ce qui constitue un surdébit de traitement pur, les avantages de la mémoire virtuelle dépasseraient-ils le temps de traitement requis? Quelqu'un peut-il m'aider avec cette question? ThankuBesoin de mémoire virtuelle?

Répondre

0

Je vais vider ma compréhension de cette question, sans aucune information de base pour la sauvegarder. Va être déprimé? :)

D'abord, en disant que la mémoire primaire est comparable à la mémoire secondaire, je suppose que vous voulez dire en termes d'espace. (Après tout, l'accès à la RAM est plus rapide que l'accès au stockage).

Maintenant, si je comprends bien,

Random Access Memory est limité par l'espace d'adressage, qui est l'adresse que le système d'exploitation peut stocker des choses. Un système d'exploitation 32 bits est limité à environ 4gb of RAM, tout en 64bit exploitation Les systèmes sont (théoriquement) limités à 2.3EXABYTES of RAM, bien que Windows 7 le limite à 200gb for Ultimate edition, and 2tb for Server 2008.

Bien sûr, il y a encore plusieurs facteurs, tels que

  • coût pour la fabrication de RAM. (8Gb sur un thingie seul bélier (?) Encore dans les centaines)

  • emplacements DIMM sur les cartes mères (je l'ai vu planches avec 4 slots)

Mais le but de cette discussion nous laisser ignorez ces limitations et parlez seulement de l'espace. Parlons de la façon dont les applications traitent aujourd'hui la mémoire. Les applications ne connaissent pas la quantité de mémoire disponible - pour l'essentiel, il est simplement réquisitionné par le système d'exploitation. Le système d'exploitation est responsable de la gestion des espaces d'adressage attribués à chaque application en cours d'exécution. S'il n'en a pas assez, eh bien, de mauvaises choses arrivent. Mais, avec 2EXABYTES théoriques de RAM, vous ne seriez jamais à court de données? Eh bien, une personne célèbre a dit il y a longtemps que nous n'aurions jamais besoin de plus de 64 Ko de RAM. Parce que la plupart des applications sont gourmandes (elles prennent autant que le système d'exploitation est prêt à donner), si vous avez exécuté suffisamment d'applications, sur un ordinateur assez puissant, vous pourriez théoriquement dépasser les limites de stockage de la mémoire physique. Dans ce cas, la mémoire virtuelle serait nécessaire pour constituer la mémoire supplémentaire requise.

Donc, pour répondre à votre question: (à mon humble avis formé à partir de connaissances limitées sur le sujet,) oui, vous auriez encore besoin de mettre en œuvre la mémoire virtuelle.De toute évidence, prenez tout cela et faites votre propre recherche. Je transforme ceci en un wiki de communauté pour que d'autres puissent l'éditer ou simplement le supprimer s'il est complètement faux :)

3

Il est vrai qu'avec la mémoire virtuelle, vous pouvez demander à vos programmes de valider (c.-à-d. total de plus de mémoire disponible physiquement. Cependant, ce n'est que l'un des nombreux avantages si vous avez de la mémoire virtuelle et ce n'est même pas le plus important. Personnellement, lorsque j'utilise un PC, je vérifie périodiquement le gestionnaire de tâches pour voir à quel point je viens d'utiliser ma RAM réelle. Si je passe constamment, j'y vais et j'achète plus de RAM.

L'attribut clé de tous les systèmes d'exploitation qui utilisent la mémoire virtuelle est que chaque processus a son propre espace d'adressage isolé. Cela signifie que vous pouvez avoir une machine avec 1 Go de RAM et avoir 50 processus en cours d'exécution, mais chacun aura encore 4 Go d'espace mémoire adressable (système d'exploitation de 32 bits supposé). Pourquoi c'est important? Ce n'est pas que vous pouvez "faire semblant" et utiliser de la RAM qui n'est pas là. Dès que vous passez dessus et que l'échange commence, votre gestionnaire de mémoire virtuelle commencera à se débattre et la performance s'arrêtera. Une implication beaucoup plus importante de ceci est que si chaque programme a son propre espace d'adressage, il ne peut en aucun cas écrire dans un emplacement de mémoire aléatoire et affecter un autre programme.

C'est le principal avantage: stabilité/fiabilité. Dans Windows 95, vous pouvez écrire une application qui planterait tout le système d'exploitation. Dans W2K +, il est simplement impossible d'écrire un programme qui envahit tout son propre espace d'adressage et bloque tout autre chose que soi-même.

Il y a aussi peu d'autres avantages. Lorsque les exécutables et les DLL sont chargés dans la RAM, le gestionnaire de mémoire virtuelle peut détecter quand le même binaire est chargé plus d'une fois et il fera en sorte que plusieurs processus partagent la même RAM physique. Au niveau de la mémoire virtuelle, il semble que chaque processus possède sa propre copie, mais à un niveau inférieur, tout est mappé sur un point. Cela accélère le démarrage du programme et optimise également l'utilisation de la mémoire puisque chaque DLL n'est chargée qu'une seule fois. Les gestionnaires de mémoire virtuelle vous permettent également d'effectuer des E/S sur fichiers en mappant simplement des fichiers sur des pages de l'espace d'adressage virtuel. En plus d'introduire une alternative intéressante au travail avec des fichiers, cela permet également de mettre en œuvre des segments de mémoire partagée lorsque la RAM physique avec des pages en lecture/écriture est intentionnellement partagée entre les processus pour des communications inter-processus (IPC) extrêmement efficaces. Avec tous ces avantages, si nous considérons que la plupart du temps, vous voulez toujours tirer pour avoir plus de RAM physique que la taille totale de commit et que les processeurs modernes prennent en charge le mappage d'adresses virtuelles intégré directement dans le matériel, d'avoir un gestionnaire de mémoire virtuelle est en fait très minime. D'un autre côté, dans les environnements où de nombreuses applications de différents fournisseurs s'exécutent simultanément, l'espace d'adressage du processus n'a pas de prix.

Questions connexes