Publicité
Aujourd'hui, la plupart des ordinateurs sont livrés avec une version 64 bits de Windows et souvent une quantité minimale de RAM. Cela remet en question la performance de ces systèmes. Cela est particulièrement vrai lorsque les utilisateurs souhaitent exécuter leur logiciel 32 bits hérité sur ces nouveaux ordinateurs.
Ce qui soulève une question intéressante. Le faites vous besoin de plus ou moins de RAM De combien de RAM avez-vous vraiment besoin?La RAM est comme la mémoire à court terme. Plus vous multitâchez, plus vous en avez besoin. Découvrez combien votre ordinateur possède, comment en tirer le meilleur parti ou comment en tirer le meilleur parti. Lire la suite pour exécuter une application 32 bits sur un Version 64 bits de Windows Qu'est-ce que l'informatique 64 bits?L'emballage d'un ordinateur ou d'un matériel informatique est rempli de termes techniques et de badges. L'un des plus importants est le 64 bits. Lire la suite ? Cette semaine, Bruce Epper le découvre.
Un lecteur demande:
Est-il vrai que l'exécution d'applications 32 bits sur un système Windows 64 bits consomme 1,5 fois plus de mémoire par rapport à l'exécution de l'application 32 bits sous un système d'exploitation Windows 32 bits?
Réponse de Bruce:
Nous avons déjà discuté des avantages et des inconvénients de tout conserver sur 64 bits et de certains des effets du «mélange et de l'appariement» Comment les performances de Windows sont affectées par le matériel et les logicielsEn théorie, un logiciel 32 bits pourrait surpasser son équivalent 64 bits, selon la configuration matérielle. Cela semble compliqué? Nous sommes là pour vous donner un sens et vous aider à tirer le meilleur parti de votre système. Lire la suite . Aujourd'hui, nous allons examiner comment les applications 32 bits s'exécutent sur les versions 64 bits de Windows.
Un système d'exploitation Windows 64 bits ne peut pas exécuter un programme Windows 32 bits sans une aide supplémentaire. Ils sont tout simplement trop différents: des pointeurs et des types de données à la façon dont les appels système (comment les programmes utilisent les ressources du système d'exploitation sous-jacent). Vous avez besoin d'un moyen de les rendre compatibles.
Comprendre WoW64
Windows utilise le sous-système WoW64 (Windows32 sur Windows64) pour compenser les différences. Il fonctionne efficacement comme un mini-émulateur Windows 32 bits sur les systèmes x64 et un émulateur à part entière sur les systèmes Itanium (IA64).
Les systèmes IA64 nécessitent un émulateur complet en raison des différences dans les instructions du processeur et la taille des pages de mémoire (4K en x86 et x64, 8K en IA64). Étant donné que les processeurs x64 ont toutes les instructions des processeurs x86 et utilisent la même taille de page de mémoire, il n'a pas besoin d'un émulateur complet.
Dans les deux cas, WoW64 fournit une interface entre le noyau Windows 64 bits et la version 32 bits de ntdll.dll (qui contient une liste du noyau Fonctions du noyau Windows), interceptant les appels du noyau et les modifiant afin qu'ils puissent être traités par les fonctions natives 64 bits fournies par Windows noyau.
Pour ce faire, 3 fichiers DLL sont utilisés sur les systèmes x64 / IA64: wow64cpu.dll, wow64win.dll et wow64.dll. Leurs fonctions sont d'abstraire les caractéristiques du processeur et de fournir des thunks (nous y reviendrons plus tard) dans win32k.sys qui fournit la fonctionnalité "fenêtre" et ntoskrnl.exe qui contient l'exécutif, le noyau, le gestionnaire de mémoire, planificateur de processus (à ne pas confondre avec le planificateur de tâches accessible à partir du panneau de configuration) et d'autres éléments essentiels du fonctionnement système.
Un thunk est un sous-programme (pensez-y comme une série d'instructions qui effectuent une seule tâche) qui permet à un programme d'exécuter un sous-programme ou une fonction commune dans le système.
Dans ce cas, il extrait les arguments de la pile d'appels du programme 32 bits, les convertit en leurs homologues 64 bits et effectue l'appel système 64 bits. Au retour de l'appel, il convertira les résultats 64 bits en 32 bits et les repoussera sur la pile d'appels du programme pour que l'appelant puisse les utiliser.
Tout le thunking est effectué en mode utilisateur (qui a des autorisations limitées) pour deux raisons. Tout d'abord, il minimise les effets des bogues dans le code qui pourraient entraîner une faille de sécurité, une corruption des données ou un plantage du système s'il s'exécutait en mode noyau.
Deuxièmement, il réduit l'impact sur les performances qu'il aurait s'il fonctionnait en mode noyau (le mode utilisé par les parties essentielles du système d'exploitation) en raison de la surcharge impliquée lors du basculement entre mode utilisateur et mode noyau et retour.
Pour en revenir aux systèmes Itanium, il y a d'autres différences importantes à noter. Les systèmes IA64 utilisent deux fichiers supplémentaires. IA32exec.bin est l'émulateur logiciel x86 et Wowia32x.dll fournit l'interface entre WoW64 et l'émulateur logiciel.
Un processus 32 bits chargera ces fichiers ainsi que la version 64 bits de ntdll.dll. Ce sont les seuls binaires 64 bits qui peuvent être chargés dans un processus 32 bits avant Windows 7. Windows 7 et versions ultérieures ont également une autre DLL, apisetschema.dll, qui sera chargée dans tous les processus.
Lorsqu'un processus 32 bits est démarré, il charge Wow64.dll qui à son tour charge la version 32 bits de ntdll.dll et toutes les DLL 32 bits nécessaires à partir de % systemroot% \ SysWOW64. La plupart de ces fichiers sont identiques aux binaires sur un système 32 bits bien que certains aient été réécrits pour se comporter différemment sous WOW64.
En regardant la liste des DLL chargées, nous pouvons voir qu'il y a 9 DLL chargées dans le processus sous Win64 qui ne sont pas là pour le système Win32.
Maintenant, vous pourriez être tenté de regarder les tailles de fichiers, de les additionner et de les utiliser comme base pour la quantité de mémoire supplémentaire utilisée, mais vous vous retrouveriez avec des résultats inexacts. Ces fichiers, de par leur nature, sont conçus pour être des composants partagés et, par conséquent, le premier fichier nécessitant une DLL le charge en mémoire.
Les programmes suivants qui nécessitent la même DLL ne chargent pas le composant entier en mémoire. Ils obtiennent un pointeur sur le composant déjà chargé et allouent de la RAM pour les éléments supplémentaires qui sont chargés dans le processus.
Notre configuration de test
Afin de voir ce qui se passe, j'ai configuré deux machines virtuelles exécutant Windows 7 Ultimate avec 2 Go de RAM alloués à chacune. L'un d'eux est la version 32 bits et l'autre est 64 bits. Les deux ont suivi exactement le même processus d'installation et de correction.
Une fois les deux systèmes corrigés, j'ai désactivé le fichier d'échange sur les deux pour obtenir une meilleure image de l'utilisation de la mémoire en veillant à ce que la RAM ne puisse pas être paginée sur le disque. Une fois cela terminé, LibreOffice 5.0.3.2 a été installé.
Une copie de Explorateur de processus Sysinternals Process Explorer - Le remplacement de gestionnaire de tâches le plus puissant [Windows]Soyons honnêtes, le Gestionnaire des tâches de Windows n'est pas idéal pour comprendre et gérer les processus en cours d'exécution sur votre ordinateur. Même sur Windows 8, où il s'est beaucoup amélioré, le gestionnaire de tâches ne peut pas s'approcher de la ... Lire la suite a également été placé sur les deux machines. Il s'agit de l'outil que j'ai utilisé pour recueillir des informations sur l'utilisation de la mémoire. La configuration par défaut de la colonne a été modifiée pour que je puisse consulter l'ensemble de travail et l'utilisation privée de WS.
Ces numéros de jeu de travail reflètent la quantité de RAM utilisée par les programmes. Cela a compliqué un peu plus les choses en reflétant la quantité de mémoire utilisée par les bibliothèques partagées même si elles étaient déjà chargées par un autre processus. Pour cette raison, si vous ajoutez la colonne entière, il est possible de se retrouver avec un total supérieure à la RAM installée. L'ensemble de travail est toujours le meilleur indicateur de la quantité exacte de mémoire requise pour un processus.
Les processus que nous examinons ne sont pas non plus indépendants. Les différents programmes LibreOffice lancent un autre processus, soffice.exe, qui exécutera un autre processus, soffice.bin. Nous devons examiner les totaux des trois processus pour voir l'utilisation efficace de la mémoire de chaque programme.
Pour le test initial, j'ai simplement ouvert Writer, Calc et Impress individuellement pour voir combien de mémoire ils consomment sans qu'aucune donnée ne soit chargée et j'ai exporté les données depuis Process Explorer. Avec Calc et Impress, j'avais ouvert un fichier .xls de 3,7 Mo et un fichier .pptx de 3,9 Mo respectivement et enregistré la nouvelle utilisation de la mémoire. Les résultats sont visibles dans le tableau ci-dessous. Toutes les données sont en Ko.
La grande surprise s'est produite avec Impress. Sans document, il utilisait 4,1% de RAM en plus sur le système 64 bits et 9,9% Moins avec le document chargé. J'ai déterré quelques autres présentations et j'ai obtenu des résultats similaires avec chacune d'elles. Le système 64 bits a fini par utiliser moins de RAM que le système 32 bits.
Ainsi, les versions 64 bits de Windows nécessitent-elles plus de RAM que leurs homologues 32 bits lors de l'exécution d'applications 32 bits? En général, oui.
Mais avez-vous besoin de mettre à niveau votre RAM? Probablement pas. La différence vraiment n'est pas si énorme. Ce n'est certainement pas 1,5 fois différent.
Bruce joue avec l'électronique depuis les années 70, les ordinateurs depuis le début des années 80 et répond avec précision aux questions sur la technologie qu'il n'a pas utilisée ni vue tout le temps. Il s'énerve également en tentant de jouer de la guitare.