2010-08-02 28 views
0

À mesure que les besoins en mémoire augmentent rapidement, de plus en plus de systèmes nécessitent aujourd'hui des machines 64 bits pour accéder à une RAM encore plus grande. En mode protégé 386, un pointeur de mémoire se compose de deux parties: l'adresse de base (32 bits) spécifiée par un sélecteur de segment et l'adresse de décalage (32 bits) ajoutée à l'adresse de base. Pour re-compiler tous les programmes en 64 bits, il y a beaucoup de travail à faire, par exemple pour les programmes C/C++, le type `int 'dépendant de la machine (qui est 32 bits dans la machine 32 bits, et 64 bits dans la machine 64 bits) causera des problèmes si elle n'est pas utilisée correctement. Même s'il est en cours de reconstruction sans problème, les besoins en mémoire ne cessent de croître, par exemple, un jour, nous utiliserons des machines 128 bits, et devons-nous reconstruire tous les programmes pour les adapter à la nouvelle taille des mots?Étendre la valeur de l'adresse de base dans le sélecteur de 386 segments à la limite de la limite de 4 Go de RAM dans le système d'exploitation 32 bits?

Si nous étendons simplement l'adresse de base à 64 bits, ce qui rend un segment comme une fenêtre de 4 Go sur toute la RAM, nous n'avons même pas besoin d'un système d'exploitation 64 bits, n'est-ce pas? La plupart des applications/processus n'auront pas besoin d'accéder à la mémoire 4G +, côté serveur, par exemple si un serveur de fichiers utilise 20Go de RAM pour la mise en cache, il peut être divisé en 10 processus avec chaque accès 2Go, donc un pointeur 32 bits assez. Et mettre chacun dans un segment différent pour couvrir 20 Go de mémoire. Étendre la limite de segment est transparente pour les programmes de couche supérieure, ce qui devrait être fait seulement sur le CPU et le système d'exploitation, si nous pouvons laisser Linux prendre en charge l'allocation de mémoire sur différents segments 64 bits (actuellement l'adresse de base du segment) est encore 32 bits), nous pouvons facilement utiliser 1 To de RAM sur une machine 32 bits, n'est-ce pas?

Ai-je raison?

+0

Quelle est la question? –

Répondre

3

L'accès à la mémoire est effectué sur la CPU, en utilisant les instructions d'assemblage. Si le processeur a 32 bits pour adresser un segment de mémoire, il peut adresser jusqu'à 4 Go, mais pas plus. Pour étendre ce comportement, le processeur a besoin d'un registre 64 bits.

Un système d'exploitation 32 bits a la même limitation. Un système d'exploitation 64 bits peut exécuter des programmes 32 bits et leur faire accéder à une adresse de base supérieure à 4 Go, mais nécessite un processeur 64 bits. En guise de conclusion, la limite de la fenêtre mémoire accessible par le système d'exploitation (et indirectement par le processus s'exécutant sur ce système d'exploitation) est limitée par la largeur du registre du processeur, en bits.

Donc, vous n'avez pas raison.

Probablement le PAE correspond à vos besoins, mais vous avez besoin du matériel et du système d'exploitation, ce qui est très courant à ma connaissance.

+0

Les informations sur PAE sont utiles. –

0

Vous pouvez obtenir exactement cet effet aujourd'hui en exécutant des processus 32 bits sur un noyau 64 bits. Chaque processus 32 bits ne dispose que d'un espace d'adressage virtuel de 4 Go, mais ces adresses peuvent être mappées n'importe où dans la mémoire physique accessible au noyau. Ce n'est pas fait en utilisant la segmentation, cependant; c'est juste fait par la pagination.